王爽汇编语言第三章——寄存器(内存访问)

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

1、任何两个地址连续的内存单元,N号单元和N+1号单元,可以将它们看成两个内存单元,也可以看成一个地址为N的字单元中的高位字节单元和低位字节单元。

2、8086cpu中有一个DS寄存器,通常用来存放要访问的数据的段地址。

3、DS和[address]:

例:如果我们要读取10000H单元的内容可以用如下的程序段进行:mov bx,1000H mov ds,bx mov al,[0]

上面的三条指令将10000H(1000:0)中的数据读到al中。

mov指令可以将一个内存单元中的内容送入一个寄存器。

mov指令的格式:mov 寄存器名,内存单元地址

“[]”表示一个内存单元,“[0]”中的0表示内存单元的偏移地址。执行指令时,8086cpu自动取DS中的数据为内存单元的段地址。

4、8086cpu不支持将数据直接送入段寄存器的操作。

5、8086cpu是16位结构,有16根数据线,可以一次性传送16位的数据,也就是一次性传送一个字。

6、mov指令的几种形式:

mov 寄存器,数据

mov 寄存器,寄存器

mov寄存器,内存单元

mov 内存单元,寄存器

mov 段寄存器,寄存器

mov 寄存器,段寄存器

add,sub:

add/sub 寄存器,数据

add/sub 寄存器,寄存器

add/sub 寄存器,内存单元

add/sub 内存单元,寄存器

7、栈是一种具有特殊的访问方式的存储空间。它的特殊性就在于最后进入这个空间的数据最先出去。

8、栈有两个基本的操作:入栈和出栈。

入栈:将一个新的元素放到栈顶。

出栈:从栈顶取出一个元素。

9、现今的cpu中都有栈的设计。8086cpu提供相关的指令以栈的方式访问内存空间。这意味着,我们在基于8086cpu编程的时候,可以将一段内存当做栈来使用。

10、8086cpu提供入栈和出栈的指令:push(入栈)、pop(出栈)。

push ax:将寄存器ax中的数据送入栈中。

pop ax:从栈顶取出数据送入ax。

8086cpu的入栈和出栈操作都是以字为单位进行的。

11、8086cpu中,有两个寄存器:

段寄存器SS:存放栈顶的段地址。

寄存器SP:存放栈顶的偏移地址。

任意时刻,SS:SP指向栈顶元素。

12、push指令的执行过程:

push ax:(1)sp=sp-2 (2)将ax中的内容送入 SS:SP指向的内存单元处,SS:SP此时指向新栈顶。

栈空,SS:SP指向占空间最高地址单元的下一个单元。

执行push ax后,SS:SP指向栈中的第一个元素。

13、pop指令的执行过程:

pop ax:(1)将SSS:SP指向的内存单元处的数据送入ax 中。 (2)SP=SP+2,SS:SP指向当前栈顶下面的单元, 以当前栈顶下面的单元为新的栈顶。(注:原来的数据依 然存在,相当于是复制的过程)

14、当栈满的时候再使用push指令入栈,栈空的时候再使用pop指令出栈,都将发生栈顶越界问题。

15、push和pop指令是可以在寄存器和内存之间传送数据的。

16、栈空间当然也是内存空间的一部分,它只是一段可以以一种特殊的方式进行访问的内存空间。

17、push和pop指令的格式(1):

push 寄存器:将一个寄存器中的数据入栈。

pop 寄存器:出栈,用一个寄存器接收出栈的数据。

push和pop指令的格式(2):

push 内存单元:将一个内存单元处的字入栈(栈操作都 是以字为单位)

pop 内存单元:出栈,用一个内存单元接收出栈的数据。

18、数据的段地址:ds;代码的段地址:cs;栈的段地址:ss。

19、push、pop实质上就是一种内存传送指令,可以在寄存器和内存之间传送数据,与mov指令不同的是,push和pop指令访问的内存单元的地址不是在指令中给出的,而是由SS:SP指出的。

20、在8086cpu中,push、pop等栈操作指令,修改的只是SP。也就是说,栈顶的变化范围最大为:0~FFFFH。

21、我们可以将长度为N(N<=64KB)的一组地址连续、其实地址为16的倍数的内存单元,当作栈来用,从而定义了一个栈顶。

22、问:如果我们将10000H~1FFFFH这段空间当作栈顶,初始状态是空的,此时,SS=1000H,SP=?

答:任意时刻,SS:SP指向栈顶,当栈中只有一个元素的时候,SS=1000H,SP=FFFEH。栈为空,就相当于栈中唯一的元素出栈。出栈后,SP=SP+2,SP原来为FFFEH,加2后SP=0。所以,当栈为空的时候,SS=1000H,SP=0。

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

猜你喜欢

转载自blog.csdn.net/weixin_42617472/article/details/82874906
今日推荐