寄存器
在CPU中:
运算器进行信息处理;
寄存器进行信息存储;
控制器控制各种器件进行工作;
内部总线连接各种器件,在它们之间进行数据的传送,
本章以8086CPU为例讲解寄存器
2.1通用寄存器
8086CPU的所有寄存器都是16位的,可以存放两个字节。AX、BX、CX、DX这4个寄存器通常用来存放一般性的数据,被称为通用寄存器。
寄存器的逻辑结构(以AX为例)
8086CPU的上一代CPU中的存器都是8位的,为了保证兼容,使原来基于上代CPU 编写的程序稍加修改就可以运行在8086之上,8086CPU的AX、BX、CX、DX这4个寄存器都可分为两个可独立使用的8位寄存器来用:
AX 可分为 AH 和 AL:
BX可分为 BH 和 BL;
CX 可分为CH 和CL;
DX 可分为 DH 和 DL
以AX为例:
16 位寄存器及所分成的两个8位寄存器的数据存储情况:
2.2字在寄存器中的存储
字节:记为byte,一个字节由8个bit组成,可以存在8位寄存器中。
字:记为word,一个字由两个字节组成,这两个字节分别称为这个字的高位字节和低位字节。
十六进制数据表示:由于一个存储单元可存放8位数据,CPU中的寄存器又可存放n个8位的数据。也就是说,计算机中的数据大多是由1~N个8位数据构成的。很多时候,需要直观地看出组成数据的各个字节数据的值,用十六进制来表示数据可以直观地看出这个数据是由哪些8位数据构成的。比如20000写成4E20 就可以直观地看出,这个数据是由4E和20两个8位数据构成的,如果AX中存放4E20,则AH里是4E,AL里是20。这种表示方法便于许多问题的直观分析。在以后的课程中,我们多用十六进制来表示一个数据。
2.3几条汇编指令
例1:
指令不区分大小写。执行上述指令后,数据变化如下:
AX数据为044CH。分析:程序段中的最后一条指令 add ax,bx,在执行前 ax和bx中的数据都为8226H,相加后所得的值为:1044CH,但是ax为16位寄存器,只能存放4位十六进制的数据,所以最高位的1不能在ax中保存,ax中的数据为:044CH。
例2:
AX数据为0058H。分析:程序段中的最后一条指令 add al,93H,在执行前,al中的数据为C5H,相加后所得的值为:158H,但是al为8位寄存器,只能存放两位十六进制的数据,所以最高位的1丢失,ax中的数据为:0058H。此时al是作为一个独立的8位寄存器来使用的,和ah没有关系。
在进行数据传送或运算时,指令的两个操作对象的位数应当是一致的,
错误示例:
mov ax bl (在8位寄存器和16位寄存器之间传送数据)
mov bh ax (在16位寄存器和8位寄存器之间传送数据)
mov al 20000 (8位寄存器最大可存放值为255的数据)
add al 100H (将一个高于8位的数据加到一个8位寄存器中)
检测点2.1
1.写出每条汇编指令执行后相关寄存器中的值
F4A3H 31A3H 3123H 6246H 826CH 6246H
汇编指令 |
值 |
mov ax,62627 |
AX=F4A3H |