首页 理论教育 通用寄存器

通用寄存器

时间:2022-02-28 理论教育 版权反馈
【摘要】:数据寄存器、指针寄存器和变址寄存器统称为通用寄存器。各通用寄存器的专门用途列于表1-3中。汇编语言程序设计人员对这些用途必须充分注意,以便正确、合理地使用这些通用寄存器。4个16位的数据寄存器的功能为:AX和AL寄存器又称为累加器。利用变址寄存器和指针寄存器不仅能够有效地缩短机器指令的长度,而且能够实现多种存储器操作数的寻址,从而方便地实现对多种类型数据的操作。SI和DI寄存器称为变址寄存器。

1.6.1 通用寄存器

数据寄存器、指针寄存器和变址寄存器统称为通用寄存器。这些寄存器除了各自规定的专门用途外,它们均可用于传送和暂存数据,可以保存算术逻辑运算中的操作数和运算结果。

各通用寄存器的专门用途列于表1-3中。汇编语言程序设计人员对这些用途必须充分注意,以便正确、合理地使用这些通用寄存器。

表1-3 通用寄存器的专门用途

img16

1.数据寄存器

数据寄存器主要用于保存操作数或运算结果等信息,它们的存在节省了为存取操作数所需占用总线和访问存储器的时间。

4个16位的数据寄存器可分解成8个独立的8位寄存器,这8个8位的寄存器有各自的名称,均可独立存取。如图1-3所示,AX寄存器分解为AH寄存器和AL寄存器;BX寄存器分解为BH寄存器和BL寄存器;CX寄存器分解为CH寄存器和CL寄存器;DX寄存器分解为DH寄存器和DL寄存器。名称中的字母H表示高,字母L表示低。AH寄存器就是AX寄存器的高8位,AL寄存器就是AX寄存器的低8位。AH寄存器和AL寄存器的合并就是AX寄存器。其他寄存器类推。程序员在设计8086/8088程序时,要充分利用数据寄存器的上述双重性,恰当地进行合分,以便有效地处理字和字节信息。

4个16位的数据寄存器的功能为:AX和AL寄存器又称为累加器(Accumulator)。一般通过累加器进行的操作所花的时间可能最少,此外累加器还有许多专门的用途,所以累加器使用得最普遍。BX寄存器称为基(Base)地址寄存器。它是4个数据寄存器中唯一可作为存储器指针使用的寄存器。CX寄存器称为计数(Count)寄存器。在字符串操作和循环操作时,用它来控制重复循环操作次数。在移位操作时,CL寄存器用于保存移位的位数。DX寄存器称为数据(Data)寄存器。在进行32位的乘除法操作时,用它存放被除数的高16位或余数。它也用于存放I/O端口地址。

2.变址和指针寄存器

变址和指针寄存器主要用于存放某个存储单元地址的偏移,或某组存储单元开始地址的偏移,即作为存储器(短)指针使用。作为通用寄存器,它们也可以保存16位算术逻辑运算中的操作数和运算结果,有时运算结果就是需要的存储单元地址的偏移。注意,16位的变址寄存器和指针寄存器不能分解成8位寄存器使用。利用变址寄存器和指针寄存器不仅能够有效地缩短机器指令的长度,而且能够实现多种存储器操作数的寻址,从而方便地实现对多种类型数据的操作。

SI和DI寄存器称为变址寄存器。在字符串操作中,规定由SI给出源指针,由DI给出目的指针,所以SI也称为源变址(Source Index)寄存器,DI也称为目的变址(Destination Index)寄存器。当然,SI和DI也可作为一般存储器指针使用。

BP和SP寄存器称为指针寄存器。BP主要用于给出堆栈中数据区基址的偏移,从而方便地实现直接存取堆栈中的数据,所以BP也称为基指针(Base Pointer)寄存器。正常情况下,SP只作为堆栈指针(Stack Pointer)使用,即保存堆栈顶地址的偏移。堆栈是一片存储区域,将在1.8节介绍。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈