8086 CPU有14个寄存器(均为16位):AX,BX,CX,DX,SI,DI,SP,BP,IP,CS,SS,DS,ES,PSW
1、通用寄存器:
AX、BX、CX、DX
16位,可存储的数据的最大值为2^16-1
每个寄存器可分为两个独立使用的8位寄存器,eg. AX可分为AH、AL
2、字在寄存器中的存储:
8086中一个字=2B(高位字节、低位字节)
3、几条汇编指令(不区分大小写):
ADD AL,93H ;若产生进位,不会修改AH
指令的两个操作对象的位数应当一致
4、物理地址(CPU内部形成)
5、16位结构的CPU(8086内部能够一次处理、传输、暂存的信息的最大长度为16位)
6、8086给出物理地址的方法
8086CPU有20位地址总线,1MB的寻址能力,但是只能送出16位地址,因此——>段地址、偏移地址
段地址、偏移地址——> 地址加法器——> 物理地址=段地址*16+偏移地址(相当于段地址左移4位)
7、“段地址*16+偏移地址=物理地址”的本质含义(“基础地址+偏移地址=物理地址”的思想)
8、段的概念
段的起始地址一定是16的倍数;偏移地址为16位,变化范围0~FFFFH,因此一个段的长度最大为64KB
CPU可以用不同的段地址和偏移地址形成同一个物理地址
9、段寄存器(CS、DS、SS、ES)
10、CS和IP
代码段寄存器(CS)、指令指针寄存器(IP)
8086中任意时刻,CPU 总是将CS:IP指向的内容当作指令执行
8086CPU工作过程:
1)从CS:IP指向内存单元读取指令,放入指令缓冲器
2)IP=IP+所读取的指令的长度,从而指向下一条指令
3)执行指令。转到1),重复。
11、修改CS、IP的指令
在CPU中程序员能够用指令读写的部件只有寄存器
MOV指令——传送指令,不能用于修改CS、IP的值
JMP指令——转移指令(能够修改CS:IP)
1)JMP 段地址:偏移地址
2)JMP 某一合法寄存器(仅修改IP)
12、代码段
编程时,根据需要,将一组内存单元定义为一个段
可以长度<=64KB的一组代码存放在一组地址连续,起始地址为16倍数的内存单元中
实验 查看CPU、内存,用机器指令和汇编指令编程
Debug
R(查看、改变CPU寄存器的内容)
D(查看内存中的内容;d 段地址 :偏移地址,会显示128B内容)
E(改写内存中的内容)
U(查看内存中的机器码的含义)
T(执行一条指令)
A(以汇编指令形式在内存中写入机器指令)