总结:汇编语言(第3版)--第三章 寄存器(内存访问)

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

        本章中,主要从 CPU 如何执行指令的角度讲解了8086CPU 的逻辑结构、形成物理地址的方法、相关的寄存器以及一些指令。

  • 内存中字的存储:CPU 中,用16位寄存器来存储一个字。高 8 位存放高位字节,低 8 位存放低位字节。在内存中存储时,由于内存单元是字节单元,则一个字要用两个地址连续的内存单元来存放,这个字的低位字节存放在低地址单元中,高位字节存放在高地址单元中。比如我们从 0 地址开始存放 2000。
  • DS 和[address]:CPU 要读写一个内存单元的时候,必须先给出这个内存单元的地址,在 8086PC 中,内存地址由段地址和偏移地址组成。8086CPU 中有一个 DS 寄存器,通常用来存放要访问数据的段地址。
  • 字的传送:我们用 mov 指令在寄存器和内存之间进行字节型数据的传送。
  • mov、add、sub 指令:mov  寄存器,数据                          比如:mov ax,8

                                               mov  寄存器,寄存器                      比如:mov ax,bx                                         

                                               mov  寄存器,内存单元                  比如:mov ax,[0]

                                               mov  内存单元,寄存器                  比如:mov [0],ax

                                               mov   段寄存器,寄存器                 比如:mov ds,ax

        add 和 sub 指令同 mov 一样,都有两个操作对象。

  • 数据段:对于 8086PC 机,在编程时,可以根据需要,将一组内存单元定义为一个段。我们可以将一组长度为 N(N<=64KB)、地址连续、起始地址为 16 的倍数的内存单元当作专门存储数据的内存空间,从而定义一个数据段。比如用 123BH~123B9H 这段内存空间来存放数据,我们就可以认为,123B0H~123B9H 这段内存是一个数据段,它的段地址为 123BH,长度为10个字节。
  • 栈:栈是一种具有特殊的访问方式的存储空间。它的特殊性就在于,最后进入这个空间的数据,最先出去。
  • CPU 提供的栈机制:现今的 CPU 中都有栈的设计,8086CPU 也不例外。8086CPU 提供相关的指令来以栈的方式访问内存空间。这意味着,在基于 8086CPU 编程的时候,可以将一段内存当作栈来使用。
  • 栈顶超界的问题:栈顶超界是危险的,因为我们既然将一段空间安排为栈,那么在栈空间之外的空间里很可能存放了具有其他用途的数据、代码等,这些数据、代码可能是我们自己程序中的,也可能是别的程序中的。但是由于我们在入栈出栈时的不小心,而将这些数据、代码意外地改写,将会引发一连串的错误。
  • push、pop 指令:前面内容一直在使用 push ax 和 pop ax ,显然 push 和 pop 指令是可以在寄存器和内存之间传送数据的。
  • 栈段:前面讲过,对于 8086PC 机,在编程时,可以根据需要,将一组内存单元定义为一个段。我们可以将长度为 N(N<=64KB)的一组地址连续、起始地址为 16 的倍数的内存单元,当作栈空间来用,从而定义了一个栈段。 

         希望我的总结可以帮助大家,感谢阅读我的博客!

猜你喜欢

转载自blog.csdn.net/weixin_42558631/article/details/81057823
今日推荐