第二章最主要的内容如下:
1、通用寄存器:AX,BX,CX,DX;
2、汇编指令:mov add等指令;
3、8086CPU给出物理地址的方法(用两个16位地址合成的方法形成一个20位的物理地址);
4、CS(段寄存器) IP(指针寄存器 );
5、修改CS,IP的指令;
一.通用寄存器
1. 8086CPU所有的寄存器都是16位的,可以存放两个字节。
2. AX、BX、CX、DX,4个寄存器通常用来存放一般性数据,被称为通用寄存器。
3. 一个16位的寄存器可以存储一个16位的数据。 思考:一个16位的寄存器所能存储的数据最大值为多少?
4. 8086CPU的AX、BX、CX、DX(16位寄存器)每个都可以分为两个可独立使用的8位寄存器来用:
AX可分为AH、AL;
BX可分为BH、BL;
CX可分为CH、CL;
DX可分为DH、DL;
二.几个常用的汇编指令
mov 和add
mov a, b 指把a=b;a通常是寄存器,如:mov ax,18指将18送入寄存器ax
add a, b指a=a+b; a通常是寄存器,如:add ax,18指将寄存器ax的数值加上18
注意:
由于通用寄存器只能存储16位的数据,所以如果将一个大于16位的数据放入寄存器就会损失最高位;
使用add,mov指令时,只能对相同类型的寄存器操作,即只能ax,bx,cx,dx之间操作不能,ax,ah等之间操作。
三.物理地址的存储方式
物理地址=段地址x16+偏移地址
物理地址=段地址*16+偏移地址的本质含义:CPU在访问内存时,用一个基础地址(段地址*16)和一个相对于基础地址的偏移地址相加,给出内存单元的物理地址。
段地址的概念:段并不是指内存是分段的,段的划分来自于CPU,是因为8086CPU用“物理地址=段地址*16+偏移地址”的方式给出内存单元的物理地址,使得我们可以用分段的方式来管理内存。以后,在编程是可以根据需要,将若干地址连续的内存单元看作一个段,用段地址*16定位段的起始地址(基础地址),用偏移地址定位段中的内存单元。一个段的长度最大为64KB。
四.CS和IP
1.CS和IP是8086CPU中最关键的寄存器。
2.CS为代码段寄存器,用于存放代码段的段地址。
3.IP为指令指针寄存器,用于存放CPU将要读取的指令在代码段中的偏移地址。
4.CS:IP对应的物理地址存放是CPU将要读取的指令。
5.8086机中,CPU将CS:IP指向内容当作指令执。
五.修改CS,IP的指令
jmp 段地址:偏移地址
来源:https://www.cnblogs.com/hongyezhu/p/10004489.html