在CPU中主要部件是寄存器,负责信息的存储功能,而这正是第二章的重点。
下面将知识点总结如下:
一、不同CPU寄存器个数,结构都不同。8086CPU有14个寄存器分别为:
AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW
这些寄存器都是16位,即可存放两个字节。
其中AX、BX、CX、DX为通用寄存器,都可分为两个可独立使用的8位寄存器来用。(前八位为H,后八位为L,例如AX可分为AH,AL)
二、几条汇编指令
1.move xx,num 将num送入寄存器xx;
2.add xx,num 将寄存器xx的数值加上num;
3.move xx,yy 将寄存器yy的数值送入寄存器xx;
4.add xx,yy 将寄存器xx,yy的值相加并存在xx中;
(其中英文大小写无影响mov ax,18和MOV AX,18含义相同)
(其中num如62627为十进制数字,计算时应化为16进制F4A3H计算(H为16进制标识))
Tips:错误指令如下:
mov ax,bl 不能在8和16位寄存器中传送数据
mov bh,ax 不能在16和8位寄存器中传送数据
mov al,20000 在8位寄存器中存放值超过极限255
add al,100H 不能将高于8位数据加到一个8位寄存器中
三、8086CPU在内部用两个16位地址(分别为段地址、偏移地址)合成一个20位物理地址
地址加法器采用 物理地址=段地址*16+偏移地址
段地址*16可看为寄出地址,即相当于CPU在访问内存时,用一个寄出地址和一个相对于基础地址的偏移地址相加,给出内存单元物理地址
四、CS代码段寄存器 IP指令指针寄存器,即设CS为M,IP为N,8086CPU将从内存M*16+N单元开始读取执行一条指令
任意时刻CPU将CS:IP指向的内容当做指令执行,即若某一内存中信息被CPU执行过,则一定被CS:IP指向过
修改CS、IP指令时用jmp指令(不能使用mov):
1.同时修改CS、IP jmp 段地址:偏移地址
jmp 2AE3:3 CS=2AE3H,IP=0003H,CPU从2AE33H读取指令
2.仅修改IP jmp 某一合法寄存器(用寄存器中的值修改IP)
mov ax,1000H
jmp ax CS值不变,IP=1000H
五、让CPU执行代码段指令时,必须将CS:IP指向所定义代码段中第一条指令的首地址。
六、实验
查看CPU和内存,用机器指令和汇编指令编程
R命令:查看、修改CPU中寄存器内容
D命令:查看内存中的内容
E命令:修改内存中的内容(可以写入数据、指令,在内存中,它们实际没有区别)
U命令:将内存中的内容解释为机器指令和对应的汇编指令
T命令:执行CS:IP指向的内存单元处的指令
A命令:以汇编指令的形式向内存中写入指令
(编写好代码务必让CS:IP指向代码起始内存单元,并用t执行,用r查看寄存器中操作结果)