先介绍的几个通用寄存器和字在其中的存储进行解释。
通用寄存器有AX,BX,CX,DX 几种,AX包括AH和AL。BX,CX,DX也同样。
然后是汇编指令。
介绍了mov ,add两个汇编指令的用法。
mov
将后面的操作数赋给前面的操作数
mov 寄存器,常数
mov 寄存器,寄存器
相当于C语言里的赋值运算。
add
前操作数=前操作数+后操作数
add 寄存器,常数
add 寄存器,寄存器
相当于C语言里+=运算。
jump:
修改CS:IP的指令(jmp 段地址: 偏移地址)
例:jmp AX 效果IP=AX
jmp 2AE3:3 效果CS=2AE3H,IP=0003H
在8086CPU中给出物理地址的表示
核心内容是:物理地址=段地址*16+偏移地址
以下摘自教材P21
1)CPU中相关部件提供两个16位地址,分别称为段地址和偏移地址
2)段地址和偏移地址通过内部总线送入一个称为地址加法器的部件
3)地址加法器将两个16位地址合成一个20 位地址
4)地址加法器通过内部总线将20位物理地址送入输入输出控制电路
5)输入输出控制电路将20 位物理地址送上地址总线
6)20位物理地址被地址总线送到存储器
所以在内存中有的地址表示方法不唯一。
例如 0100:0010 ,0101:0000表示的内存地址是相同的。
然后介绍CS:IP两个段寄存器,CS是代码段寄存器,IP是指令指针段寄存器。可以通过修改CS:IP的值来执行指定位置处的指令。
在debug下单步调试中可见CS:IP总是指向即将执行的下一条指令。
(在debug下可以直接通过R命令修改寄存器)
由于物理地址=段地址*16+偏移地址。我们可以根据需要将一组内存单元定义为一个代码段。
一个段的长度最大为64KB。(2^16)