首页 > 代码库 > 王爽《汇编语言》第三版 第三章 内存访问

王爽《汇编语言》第三版 第三章 内存访问

3.1 内存中字的存储

  在0地址处开始存放20000(4E20H):

  技术分享

  注意:0号单元是低地址单元,1号单元是高地址单元。

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

 

 

3.2 DS和[address]

  在8086PC中,内存地址由段地址和偏移地址组成,8086CPU中有一个DS寄存器,通常用来存放要访问的数据的段地址。

 

  执行指令时,8086CPU自动取DS中的数据为内存单元的段地址。

 

3.3 字的传送


3.4 mov、add、sub指令

 

  已学mov指令的几种形式:
    1.mov 寄存器,数据
    2.mov 寄存器,寄存器
    3.mov 寄存器,内存单元
    4.mov 内存单元,寄存器
    5.mov 段寄存器,寄存器

  mov 寄存器,段寄存器 与 mov 内存单元,段寄存器 是正确的指令。


3.5 数据段

  我们可以将一组长度为N(N≤64K)、地址连续、起始地址为16的倍数的内存单元当作专门存储数据的内存空间,从而定义了一个数据段。


3.6 栈

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

  栈的操作规则:LIFO(Last In First Out,后进先出)。

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

  
3.7 CPU提供的栈机制

  我们在基于8086CPU编程的时候,可以将一段内存当作栈来使用。

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

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

  pop ax
    1.将SS:SP指向的内存单元处的数据送入ax中;
    2.SP = SP+2,SS:SP指向当前栈顶下面的单元,以当前栈顶下面的单元为新的栈顶。


3.8 栈顶超界的问题

  8086CPU不保证对栈的操作不会超界。


3.9 push、pop指令

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

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


3.10 栈段

  对于8086PC机,在编程时,我们可以根据需要 ,将一组内存单元定义为一个段。

  一个栈段的容量最大为64KB。

 

 

参考资料:《小甲鱼汇编零基础入门》

 

     《汇编语言》第三版

 

王爽《汇编语言》第三版 第三章 内存访问