汇编语言--寄存器(内存访问)

内存中字的存储

  CPU中,用16位寄存器来存储一个字,一个字要用两个连续的内存单元来存放,这个字的低位字节存放到低地址单元中,高位字节存放在高地址单元中。假如用0、1两个内存单元存放一个字,这两个单元看作一个起始地址为0的字单元。

DS和[address]

  8086CPU中有一个DS寄存器,通常用来存放要访问数据的段地址。比如我们要读取10000H单元中的内容,可用下面的程序段进行:
  mov bx,1000H
  mov ds,bx
  mov al,[0]
  上面的3条指令将10000H(1000:0)中的数据读到al中。我们使用mov指令将一个内存单元中的内容送入一个寄存器中,格式为:mov 寄存器名,内存单元地址。寄存器用寄存器名来指明,内存单元则用内存单元的地址指明。[…]中的0表示内存单元的偏移地址,指令执行时,8086CPU自动取ds中的数据为内存单元的段地址。

  我们之所以使用 mov bx,1000H 是因为:8086CPU不支持将数据直接送入段寄存器的操作,所以用一个寄存器来进行中转

CPU提供的栈机制

  现今的CPU中都有栈的设计,8086CPU提供相关的指令来以栈的方式来访问内存空间,在基于8086CPU编程时,可以将一段内存当作栈来使用,CPU并不会由于这种安排,就在执行栈操作相关的指令时自动地将我们定义的栈段当作栈空间来访问。
  最基本的指令是PUSH(入栈)和POP(出栈)。比如PUSH ax 表示将寄存器ax中的数据压入栈中,pop ax 表示从栈顶取出数据送入ax。8086CPU的入栈和出栈操作都是以字为单位进行的。
  CPU如何知道栈顶的位置?**8086CPU中,有两个寄存器,段寄存器SS和寄存器SP

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值