第二章寄存器主讲相关寄存器的内容,寄存器是CPU中的主要部件,是CPU中程序员可以用指令读写的部件,主要用于进行信息存储。8086CPU有14个寄存器:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW。
① AX、BX、CX、DX通常用于存放一般性的数据,称为通用寄存器。一个16位寄存器可以存储一个16位的数据,数字范围为0-2的16次方减1,无符号数据范围。而8086CPU的AX、BX、CX、DX这4个寄存器可分为两个可独立使用的8位寄存器来使用。AX可分为AH和AL,BX可分为BH和BL,CX可分为CH和CL,DX可分为DH和DL。AX的低8位(0位到7位)构成了AL寄存器,高8位(8位-15位)构成了AH寄存器。、
②8086CPU可一次性处理两种尺寸的数据。1.字节,记为byte,一个字节由8个bit组成 2.字,记为word,一个字由两个字节组成,两个字节分别称为这个字的高位字节和低位字节。
③汇编指令举例 mov ax,18:将18送入寄存器AX:AX=18
mov ah,78:将78送入寄存器AH:AH=78
add ax, 8 :将寄存器AX中的数值加上8: AX=AX+8
mov ax, bx :将寄存器BX中的数据送入寄存器AX :AX=BX
add ax, bx:将AX和BX中的数值相加,结果存在AX中: AX=AX+BX
写一条汇编指令或一个寄存器的名称时不区别大小写。、
ax与al只能存放4位十六进制的数据,当超过4位时,高位的无法被保存,应去除。
运算时需要注意,al是作为一个独立的8位寄存器来使用的,和ah没有关系,CPU在执行这条指令时会认为ah和al是两个不相关的寄存器。
④8086是16位结构的CPU,在8086内部,能够一次性处理、传输、暂时储存的信息的最大长度是16位的。内存单元的地址在送上地址总线之前,必须在CPU中处理、传输、暂时存放,对于16位CPU,能一次性处理、传输、暂时储存16位的地址。
⑤8086CPU若需要传送20位地址,需要采用一种在内部用两个16位地址合成的方法来形成一个20位的物理地址。8086CPU在读写内存时:
1.CPU中的相关部件提供两个16位的地址,一个称为段地址,另一个称为偏移地址;
2.段地址和偏移地址通过内部总线送入一个称为地址加法器的部件;
3.地址加法器将两个16位地址合成为一个20位的物理地址;
4.地址加法器通过内部总线将20位物理地址送入输入输出控制电路;
5.输入输出控制电路将20位物理地址送上地址总线;
6.20位物理地址被地址总线传送到存储器。
地址存储器采用物理地址=段地址x16+偏移地址的方法用段地址和偏移地址合成物理地址。段地址x16一个更为常用的说法是左移4位,位指二进位。
⑥“段地址x16+偏移地址=物理地址”的本质含义:CPU在 访问内存时,用一个基础地址(段地址x16)和一个相对于基础地址的偏移地址相加,给出内存单元的物理地址。即 基础地址+偏移地址=物理地址。
CPU访问内存单元时,必须向内存提供内存单元的物理地址。8086CPU在内部用段地址和偏移地址移位相加的方法形成最终的物理地址。CPU可以用不同的段地址和偏移地址形成同一个物理地址。偏移地址16位,变化范围为0-FFFFH,仅用偏移地址来寻址最多可寻64KB个内存单元。并且可以根据需要,将地址连续、起始地址为16的倍数的一组内存单元定义为1个段。
原文地址:https://www.cnblogs.com/MINA777/p/9720396.html