内存中字的存储
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

最低0.47元/天 解锁文章
2323

被折叠的 条评论
为什么被折叠?



