寄存器可以分为:通用寄存器、指令指针IP、段寄存器等等。其主要功能是在计算时存储数据、代码。寄存器是在CPU内部,靠内部总线相连。前一篇文章中CPU和内存相连的地址线、数据线、控制线相对寄存器来说是在CPU的外部,靠外部总线相连。
一、通用寄存器
8086CPU的所有寄存器都是16位的,可以放两个字节。AX、BX、CX、DX这4个寄存器通常用来存放一般性数据,被称为通用寄存器。每个寄存器的大小都是16位,由于以前的寄存器是8位的,为了兼容,将寄存器拆分为两个可以独立使用的8位寄存器使用。AX可分为AH(高八位)和AL(低八位),同样BS分为BH和BL。
在介绍其他寄存器之前先看几条汇编指令: ax原值:0000H bx原值:0000H
mov ax,4E20H 将4E20H送入寄存器ax中。 AX:4E20H BX:0000H
add ax,1406H 将1406H和AX的值相加放到ax中。 AX:6226H BX:0000H
mov bx,2000H 将2000H送入bx中。 AX:6226H BX:2000H
add ax,bx 将bx的值和ax的值相加,结果放到ax中 AX:8226H BX:2000H
mov bx,ax 将寄存器ax中的数据送入寄存器b。 AX:8226H BX:8226H
add ax,bx 将bx的值和ax的值相加,结果放到ax中 AX:044CH BX:8226H
在最后一步,ax和bx的值都为8226H,相加结果为1044CH,但ax为16位寄存器,最大值为FFFFH,已经超出范围。所以最高位的1不能保存在ax中,导致ax的数据位044CH。