寄存器
- 一个典型的CPU由运算器、控制器、寄存器等器件构成,这些器件靠内部总线相连。
- 运算器进行信息处理。
- 寄存器进行信息存储。
- 控制器控制各种器件进行工作。
- 内部总线连接各种器件,在他们之间进行数据的传送。
通用寄存器
- 对于8086CPU来说,所有的寄存器都是16位的。AX、BX、CX、DX这4个寄存器被定义为通用寄存器,用来存放一般性的数据。AX可以分为AH和AL;BX可以分为BH和BL;CX可以分为CH和CL;DX可以分为DH和DL。
物理寄存器
- CPU访问内存单元时,要给出内存单元的地址。所有的内存单元构成的存储空间是一个一维的线性空间,每一个内存单元在这个空间中都有唯一的地址,我们将这个唯一的地址称为物理寄存器。
段寄存器
- 8086CPU有4个寄存器:CS、DS、SS、ES
- CS和IP是8086CPU中两个最为关键的寄存器,它们指示了CPU当前要读取指令的地址。CS为代码段寄存器,IP为指令指针寄存器。
- CPU工作的本质是一直不断地取址执行,CPU每读取一条指令后,IP中的值会自动增加。
- IP每次增加的长度依据当前读入指令的长度。
哪些指令可以修改CS、IP的值:
jmp <段地址> <偏移地址> —同时修改CS、IP
jmp <某一合法寄存器> —仅修改IP
如何在window7系统中使用debug调试汇编程序?
1、安装DOSBox0.74-win32-installer
2、安装debug程序
汇编debug调试工具常用指令:
1、r命令—查看、修改CPU中寄存器的内容。例如rcs—修改cs,rip—修改ip。
2、d命令—查看内存中的内容。
3、e命令—修改内存中的内容。
4、u命令—将内存中的内容解释为机器指令和对应的汇编指令。
5、t指令—单步运行程序指令
6、a指令—以汇编指令的形式向内存中写入指令
DS和[address]
- 8086CPU中有一个DS寄存器,通常用来存放要访问数据的段地址。
- […]表示一个内存单元,[…]中的数据表示内存单元的偏移地址。
- 8086CPU不支持将数据直接送入段寄存器的操作。
mov指令的几种形式:
1、mov 寄存器,数据
2、mov 寄存器,寄存器
3、mov 寄存器,内存单元
4、mov 内存单元,寄存器
5、段寄存器,寄存器
栈
- 栈是一种具有特殊的访问方式的存储空间。它的特性在于,最后进入这个空间的数据,最先出去。
- 栈顶是栈的增长方向,指针地址小于等于栈底指针
- push ax—表示将ax中的数据送入栈中
- pop ax—表示从栈顶取出数据送入ax
- ss—存放栈顶的段地址,sp—存放栈顶的偏移地址
- 任意时刻,ss:sp指向栈顶元素
- 8086CPU中设置一个栈段的容量,最大可设置为64kb。因为sp为16bit的。