计数寄存器概述
扫描二维码
随时随地手机看文章
计数寄存器是将数据寄存器CX做两个独立的 8 位寄存器使用,即 CH 和 CL 两个 8 位寄存器。计数寄存器主要在串操作指令、位移指令和LOOP指令中作计数器。当在汇编指令中使用循环 LOOP 指令时,可以通过 CX 来指定需要循环的次数,而 CPU 在每一次执行 LOOP 指令的时候,都会做两件事:一件就是令 CX = CX – 1,即令 CX 计数器自动减去 1;还有一件就是判断 CX 中的值,如果 CX 中的值为 0 则会跳出循环,而继续执行循环下面的指令,当然如果 CX 中的值不为 0 ,则会继续执行循环中所指定的指令 。往往需要多次反复执行一种相同的操作,而每次只是参与操作的操作数不同,此时就需要采用循环程序。循环指令主要用于循环程序中。移位指令逐位向左或向右移动输入端I N的内容。 向左移n位会将输入IN的内容乘以2的n次幂;向右移n位则会将输入IN的内容除以2的n次幂。
80x86提供处理字符串的操作。串指连续存放在存储器中的一些数据字节、字或双字。串操作允许程序对连续存放大的数据块进行操作。 串操作通常以DS:(E)SI来寻址源串,以ES:(E)DI来寻址目的串,对于源串允许段超越。(E)SI或(E)DI这两个地址指针在每次串操作 后,都自动进行修改,以指向串中下一个串元素。地址指针修改是增量还是减量由方向标志来规定。当DF=0,(E)SI及(E)DI的修改为增量;当DF= 1,(E)SI及(E)DI的修改为减量。根据串元素类型不同,地址指针增减量也不同,在串操作时,字节类型SI,DI加、减1;字类型SI,DI加、减 2;双字类型ESI,EDI加、减4。如果需要连续进行串操作,通常加重复前缀。重复前缀可以和任何串操作指令组合,形成复合指令。
通用寄存器是保存计算系统的各种功能单元的 输入(操作数)和输出(结果)的存储设备。通用寄存器可用于传送和暂存数据,也可参与算术逻辑运算,并保存运算结果。除此之外,它们还各自具有一些特殊功能。通用寄存器的长度取决于机器字长,汇编语言程序员必须熟悉每个寄存器的一般用途和特殊用途,只有这样,才能在程序中做到正确、合理地使用它们。16位cpu通用寄存器共有8个:AX,BX,CX,DX,BP,SP,SI,DI。AX、BX、CX、DX 可称为数据寄存器,用来暂时存放计算过程中所用到的操作数、结果和其他信息。他们都可以以字(16位)的形式访问,也可以以字节(8 位)的形式访问 [1] 。八个寄存器都可以作为普通的数据寄存器使用。但有的有特殊的用途:AX为累加器,CX为计数器,BX,BP为基址寄存器,SI,DI为变址寄存器,BP还可以是基指针,SP为堆栈指针。32位cpu通用寄存器共有8个: EAX,EBX,ECX,EDX,EBP,ESP,ESI,EDI功能和上面差不多。在通用寄存器之所以存在的许多硬件理由中, 特别应加注意的一个理由是:通用寄存器在减少指 定计算机程序的操作数所需的平均位数方面所起的 作用。例如,用4位就可对16个通用寄存器中的一 个进行编址,而具有一百万存储单元的存储器的主 存地址要求一个20位的地址。
数据寄存器,是用来暂时存放计算过程中所用到的操作数、结果和信息。数据寄存器可以分为 AX,BX,CX,DX 四个组成。这4个16位寄存器又可分别分成高8位(AH、BH、CH、DH)和低8位(AL、BL、CL、DL)。因此它们既可作为4个16位数据寄存器使用,也可作为8个8位数据寄存器使用,在编程时可存放源操作数、目的操作数或运算结果。数据寄存器是存放操作数、运算结果和运算的中间结果,以减少访问存储器的次数,或者存放从存储器读取的数据以及写入存储器的数据的寄存器。AX(accumulator)累加器。作为累加器使用。是算术运算的主要寄存器。在乘、除等指令中指定用来存放操作数。以及所有的 I/O指令都使用这一寄存器与外部设备传送信息。BX(base)基址。可以作为通用寄存器使用。此外在计算机存储地址时,它经常用作基址寄存器。CX(count)计数。可以作为通用寄存器使用。常用来保存计数值,如在循环、位移和串处理指令中作隐含计数器。DX(data)数据。可以作为通用寄存器使用。一般在作双字长运算时把DX和AX组合在一起存放一个双字长数,DX用来存放高位数。对于某些I/O操作,DX可用来存放I/O的端口地址。