通用寄存器
8086CPU所有寄存器都是16位的,可存放2个字节。AX,BX,CX,DX这4个寄存器通常用来存放一般性的数据,被称为通用寄存器。
为了保证与上一代CPU的寄存器兼容,8086CPU可以将这4个寄存器分为两个可以独立使用的8位寄存器使用。
AX=AH+AL
BX=BH+BL
其他类似。
AX的低8位(0-7)是AL寄存器,高8位(8-15)是AH寄存器。
字在寄存器中的存储
-
字节:记为byte,由8个bit组成
-
字:记为word,由两个字节组成
段寄存器
CS和IP
CS和IP指定了CPU当前要读取指令的地址。CS为代码寄存器,IP为指令指针寄存器。
读取一条指令后,IP的值自动增加(增加的值为指令的长度),使CPU可以读取下一条指令。
CPU中,程序员能用指令读写的部件只有寄存器,程序员可以通过改变寄存器中的内容实现对CPU的控制。可以通过改变CS,IP中的内容来控制CPU执行目标指令。
但是,mov指令不能用于设置CS,IP的值。可以通过jmp指令修改CS,IP。
格式:
jmp 段地址:偏移地址
jmp 2AE3:3
执行后,CS=2AE3H,IP=0003H,CPU将从2AE33H处读取指令。
若想仅修改IP的内容,可使用:
jmp 某一合法寄存器
指令完成。
如:jmp ax
DS
DS通常用来存放要访问数据的段地址。
mov al,[0]
这里[]里面的0表示偏移地址,8086CPU自动取DS中的数据为内存单元的段地址。
示例:从10000H中读取数据
mov bx,1000H
mov ds,bx
mov al,[0]
8086CPU不支持将数据从内存单元直接送入DS,所以要通过bx寄存器来进行中转。
SS和SP
8086CPU中,段寄存器SS存放栈顶段地址,寄存器SP存放偏移地址,任意时刻,SS:SP指向栈顶元素。push
和pop
指令执行时,CPU从SS和SP得到栈顶的地址。
- 本文链接: http://hjwblog.com/archives/汇编语言-寄存器
- 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!