寄存器(CPU工做原理)

1.通用寄存器

8086CPU全部一共有14个寄存器分别是:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW,全部的寄存器都是16位的,能够存放两个字节(一个字)。spa

AX、BX、CX、DX一般用来存放通常性数据被称为通用寄存器。翻译

AX通用寄存器存储二进制方式为:3d

 

为了保证兼容性,这四个寄存器均可以分为两个独立的8位寄存器使用。指针

1)AX能够分为AH和AL,分别是高8位和低8位blog

2)BX能够分为BH和BL内存

3)CX能够分为CH和CL博客

4)DX能够分为DH和DL兼容性

 

那如何向下兼容8位寄存器呢?就是将AH所有填0,只用AL部分。二进制

AX的低8位(0~7位)构成了AL寄存器,高8位(8~15位)构成了AH寄存器。方法

AH和AL寄存器是能够独立使用的8位寄存器。如何不能独立使用那么就不能兼容。

 

2.几条简单的汇编指令

汇编指令不分大小写

下面是几条简单的汇编指令:

这里须要注意的是,汇编的指令须要从后往前看,例如mov ax,18正确的顺序是将18送入ax中。

 两道例题:

(1)

mov ax,8226H

mov bx,8226H

add ax,bx

结果ax中存放的数是044CH

由于即便8226H+8226H=1044CH可是ax为16位寄存器,只能存放044CH,多出的1这里不作讲解。之后的博客中会说。

(2)

mov al,00C5H

add al,93H

那么结果al中存放的数据不是0158H而是0058H,由于这里用的是al寄存器,ax的低8位寄存器,因此高8位为0,至于多出的那个1这里先不作讲解。之后的博客中会说。

 

8086CPU给出物理地址的方法:

将16位的段地址和16位的偏移地址经过地址加法器给出20位的物理地址。

 

3.地址加法器合成物理地址的方法

物理地址=段地址*16=偏移地址

 

 段地址*16就是向左移一位,若是是二进制数则就是向左移四位

虽然“段地址”这个名词中包含了“段”这个字,可是并非说将内存分为一个个的段。

两点须要注意:

(1)段地址*16必然是16的倍数,因此一个段的起始地址也必定是16的倍数;

(2)偏移地址为16位,16位地址的寻址能力为64KB,因此一个段的长度最大为64KB。

 

从这个图中能够得出结论:CPU能够经过不一样的段地址和偏移地址造成同一个物理地址。

 

4.段寄存器

段寄存器顾名思义就是提供段地址的寄存器,8086CPU有4个段寄存器,分别是CS、DS、SS、ES。

CS和IP是8086CPU中最关键的寄存器,它们指示了CPU当前要读取指令的地址。

CS为代码段寄存器,IP为指令指针寄存器(偏移地址寄存器)

当8086CPU启动时或者复位时,CS=FFFFH,IP=0000H

传送指令mov不能修改CS和IP寄存器里的值,可是8086CPU提供的一个转移指令jmp指令来修改CS与IP寄存器的值。

 

5.DEBUG中经常使用指令

R命令查看、改变CPU寄存器的内容;

D命令查看内存中的内容;

E命令改写内存中的内容;

U命令将内存中的机器指令翻译成汇编指令;

T命令执行一条机器指令;

A命令以汇编指令的格式在内存中写入一条机器指令;

相关文章
相关标签/搜索