8086/8088中有多少个寄存器?

fud*_*din 8 cpu x86 cpu-registers microprocessors

我参加了计算机体系结构课程,我理解处理器有32个寄存器,每个32位.现在我正在学习计算机体系结构课程,其中我读到8086只有8个寄存器.但是我读过的本书和这个网站显示了很多寄存器.我对8086和8088的寄存器感到困惑.请帮帮我.谢谢

注意:

我很好地理解了不同处理器中不同的寄存器大小.我只是对寄存器的数量感到困惑.谢谢

Kev*_*imm 29

8086和8088是16位处理器 - 它们的寄存器宽度为16字节(AX和DX可以组合成一个32位寄存器)

注意8086有16位数据总线; 8088有一个8位数据总线(尽管它们在内部都是16位可寻址的)

一般用途寄存器

8086 CPU有8个通用寄存器,每个寄存器都有自己的名称:

AX - 累加器寄存器(分为AH/AL):

Generates shortest machine code: short-form encodings exist
Arithmetic, logic and data transfer
One number must be in AL or AX
Multiplication & Division
Input & Output
Run Code Online (Sandbox Code Playgroud)

BX - 基地址寄存器(分为BH/BL).

CX - 计数寄存器(分为CH/CL):

Offset address relative to DS by default
Run Code Online (Sandbox Code Playgroud)

DX - 数据寄存器(分为DH/DL):

The LOOP instruction uses it implicitly as a counter
Repetitive operations on strings with the REP command
Count (in CL) of bits to shift and rotate
Run Code Online (Sandbox Code Playgroud)

SI - 源索引寄存器:

DX:AX concatenated into 32-bit register for some MUL and DIV operations
Specifying ports in some IN and OUT operations
Run Code Online (Sandbox Code Playgroud)

DI - 目的地索引寄存器:

Can be used for pointer addressing of data
Used as source in some string processing instructions
Offset address relative to DS by default
Run Code Online (Sandbox Code Playgroud)

BP - 基指针:

Can be used for pointer addressing of data
Used as destination in some string processing instructions as ES:DI
Offset address relative to DS outside of string instructions
Run Code Online (Sandbox Code Playgroud)

SP - 堆栈指针:

Primarily used to access parameters and locals on the stack
Offset address relative to SS
Run Code Online (Sandbox Code Playgroud)

分段寄存器

CS - 指向包含当前程序的段.

DS - 通常指向定义变量的段.

ES - 额外的段寄存器,由编码器来定义其用法.

SS - 指向包含堆栈的段的点.

虽然可以在段寄存器中存储任何数据,但这绝不是一个好主意.段寄存器有一个非常特殊的用途 - 指向可访问的内存块.

段寄存器与通用寄存器一起工作以访问任何存储器值.例如,如果我们想要访问物理地址12345h(十六进制)的内存,我们可以设置DS = 1230h和SI = 0045h.这样我们可以访问比单个寄存器更多的内存,单个寄存器限制为16位值.CPU通过将段寄存器乘以10h并将通用寄存器添加到其中来计算物理地址(1230h*10h + 45h = 12345h):

由2个寄存器组成的地址称为有效地址.默认情况下,BX,SI和DI寄存器与DS段寄存器配合使用; BP和SP使用SS段寄存器.其他通用寄存器不能形成有效地址.此外,虽然BX可以形成有效地址,但BH和BL不能.

特殊用途寄存器

IP - 指令指针:

Always points to top item on the stack
Offset address relative to SS (but can't be used in 16-bit addressing modes)
Should always points to word (byte at even address)
An empty stack will have SP = FFFEh
Run Code Online (Sandbox Code Playgroud)

IP寄存器始终与CS段寄存器一起工作,它指向当前正在执行的指令.

标志注册

标志寄存器 - 确定处理器的当前状态.它们在数学运算后由CPU自动修改,这允许确定结果的类型,并确定将控制转移到程序的其他部分的条件.通常,您无法直接访问这些寄存器.

Always points to next instruction to be executed
Offset address relative to CS
Run Code Online (Sandbox Code Playgroud)


小智 5

8086有14个16位寄存器。AX、BX、CX、DX、SI、DI、BP、SP、CS、DS、SS、ES、IP 和标志寄存器。最后两个只能间接访问。