CPU 通用寄存器是什么?
通用寄存器是CPU中存在的附加寄存器,根据需要用于存储内存地址或数据。例如,在中断发生时存储当前寄存器内容。
8086 处理器
让我们考虑一个8086处理器。8086微处理器中有八个通用寄存器,解释如下:
AX
这是一个16位的累加器,分为两个8位寄存器AH和AL,以同样执行8位指令。它通常用于算术和逻辑指令,但在8086芯片中,它不需要作为目标操作数。
示例 − ADD AX, AX (AX= AX+AX)
BX
这是一个16位的基址寄存器,分为两个8位寄存器BH和BL,以同样执行8位指令。它存储偏移量值。
示例 − MOV BL, [500] (BL= 500H)
CX
这是一个16位的计数器寄存器,分为两个8位寄存器CH和CL,以同样执行8位指令。它通常用于循环和旋转。
示例
MOV CX,0005
MOV CL,5000
DX
这是一个16位的数据寄存器,分为两个8位寄存器DH和DL,以同样执行8位指令。它通常用于输入/输出端口地址的乘法。
示例 − Mul BX (DX,AX=AX*BX)
SP
这是一个16位的堆栈指针,指向堆栈的顶部元素。
BP
这是一个16位的基址指针,用于访问已传递到堆栈的参数。
SI
这是一个16位的源索引寄存器,用于数据的指针寻址以及字符串相关操作的源。
DI
这是一个16位的目标索引寄存器,用于数据的指针寻址以及字符串相关操作的目标。
如何使用通用寄存器?
CPU的8个通用寄存器能够存储32位二进制数。除了32位数据外,它们还可以存储16位或8位数据。
当存储32位数据时,指令表示为:
ER0, ER1, ER2, ER3, ER4, ER5, ER6, ER7
当存储16位数据时,指令使用寄存器表示为16个单元:
E0, E1, E2, E3, E4, E5, E6, E7, R0, R1, R2, R3, R4, R5, R6, R7
当存储8位数据时,指令使用寄存器表示为16个单元:
R0H, R0L, R1H, R1L, R2H, R2L, R3H, R3L, R4H, R4L, R5H, R5L, R6H, R6L, R7H, R7L