汇编语言(第三版,王爽)读书笔记
8086cpu的寄存器都是16位,向下兼容8位
- AX、BX、CX、DX寄存器可以分为AH和AL,BH和BL······
8086cpu有20位地址总线,但只能处理16位的数据,因此采用2个16位地址合成一个20位的物理地址
- 物理地址=段地址*16(段地址左移4位)+偏移地址
- 物理地址=基础地址+偏移地址
CS和IP
CS为代码段寄存器,IP为指令指针寄存器
(1)从CS:IP指向的内存单元读取指令,读取的指令进入指令缓冲器
(2)IP=IP+所读取指令的长度,从而指向下一条指令
(3)执行指令。转到步骤(1),重复这个过程
修改CS、IP的指令
- mov指令可以修改8086cpu中大部分寄存器的值,但是无法修改cs、ip中的值
- 修改CS和IP寄存器中的值要使用jmp指令
- jmp 段地址:偏移地址,例如 jmp 2AE3:3 执行后:CS=2AE3H IP=0003H cup将从2AE33H处读取指令
代码段
- 在编程时,可根据需要,将一组内存单元定义为一个段
- 要让cup执行代码段中的指令,必须要将CS:IP指向所定义的代码段中的第一条指令的首地址