王爽汇编语言学习笔记(三)--寄存器(内存访问)



第3章 寄存器(内存访问)

内存中字的存储

  内存单元是字节

  一个字要用两个地址连续的内存单元来存放,字的低位字节存放在低地址单元中,高位字节存放在高地址单元中。

 

2  DS[address]
 内存单元地址 DS[address]

3  字的传送/字节的传送

   1)通过使用16位寄存器/8位寄存器来完成字/字节的传送。

   2)使用mov指令访问内存单元时,可以再mov指令中只给出单元的偏移地址,段地址默认在DS寄存器中。

      寄存器  内存 段寄存器之间可用mov指令互相传递数据

4 CPU提供的栈机制

push ax ---栈操作是以字单位的 高字节先入栈,低字节后入栈

pop bx --低字节先出栈,高自己后出栈。

任意时刻,SS:SP指向栈顶元素,pushpop指令从SS:SP处得到栈顶地址。

CPU只记录栈顶,栈空间的大小需要自己管理;

push ax

1) SP = SP -2;//栈顶从高地址向低地址方向增长

2) mov [SS:SP],ax

 

pop ax

1)SP=SP+2

2)mov ax,[SS:SP]

 

5 push 和 pop

 push 寄存器/段寄存器/内存单元 

 pop 寄存器段寄存器/内存

 pushpop实质上是一种内存传送指令。 

 

段综述

我们可以将一段内存定义为一个段,用一个段地址指示段,用偏移地址访问段内的单元。

可以用一个段存放数据,将它定义为数据段;

可以用一个段存放代码,将它定义为代码段;

可以用一个段当做栈,将它定义为栈段;

一段内存,可以既是代码的存储空间,又是数据的存储空间,还可以是栈空间,也可以什么都不是。关键取决于CPU中寄存器的设置,CS IP SS SP DS 的指向

 

7 Debug的使用

段地址:偏移地址 d ds:偏移地址

d ds:0 查看内存中的内容

d cs:0 查看当前代码段中的指令代码

d ss:0 查看当前栈段中的内容;

注意:debugT命令在执行修改SS的指令时,下一条指令也紧接着被执行。这是由于debug使用T等指令引发中断,中断过程使用当前栈空间存放CPU关键数据,所以你的栈里存放不是你操作的数据。

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值