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

前一篇博客汇编语言(王爽)–第二章寄存器中从CPU如何执行指令的角度学习了几个寄存器,这一章中,我们将从访问内存的角度继续学习几个寄存器。

3.1 内存中字的存储

CPU中用16位寄存器存储一个字,高八位存放高字节,低八位存放低位字节。

3.2 DS和[address]

mov指令在前两章中只能完成:
1.将数据直接送入寄存器
2.将一个寄存器中的内容送到另一个寄存器中
也可以使用mov指令将一个内存单元中的值送到寄存器中。
[…]表示一个内存单元,其中的值表示偏移地址,段地址存储在ds中。
8086CPU不支持直接将数据送入到段寄存器的操作。

3.3 字的传送

3.4 mov、add、sub指令

在以上三种指令中,后两个操作数可以分别为,内存单元,寄存器,段寄存器。
数据只能通过指令传给内存单元和寄存器。

3.5 数据段

ds存放数据的段地址,在使用时可以通过内存单元访问数据。

3.6 栈

3.7 CPU提供的栈机制

基于8086编程时,可以将一段地址当栈使用。出栈入栈操作都是以字为单位进行的。CPU通过SS:SP得到相应的栈顶位置。
需要主要:
1.栈底是高位,栈顶是低位
2.在push操作中,第一步需要执行SP=SP-2
3.在pop操作中,取出数据后,第二步才执行SP=SP+2
4.当栈为空时,SP指向栈底+1

3.8 栈顶超界的问题

CPU中没有阻止栈顶越界的方法,只能操作时自己小心。

3.9 push、pop指令

push/pop 寄存器/段寄存器/内存单元

3.10 栈段

你可能感兴趣的:(汇编语言,寄存器内存访问,王爽,汇编语言)