8086寄存器

不同CPU的寄存器个数结构不同,对于8086CPU,有14个寄存器,分为:

​ AX,BX,CX,DX,SI,DI,SP,BP,IP,CS,SS,DS,ES,PSW

通用寄存器

在x86架构的汇编语言中ax,bx,cx,dx是通用寄存器,用于存储数据或进行算术运算。这些寄存器的功能区别如下:

  1. AX (Accumulator): AX寄存器是累加器寄存器,用于执行算术和逻辑操作,以及存放函数返回值。在乘法和除法运算中,AX寄存器存储乘法的结果或除法的被除数。
  2. BX (Base Register): BX寄存器通常用作基址寄存器,用于存放内存访问中的偏移地址。在一些特殊情况下,BX也可以用作通用寄存器。
  3. CX (Count Register): CX寄存器通常用作计数器,特别是在循环操作中。它可以作为循环的计数值,并在循环执行过程中递减。
  4. DX (Data Register): DX寄存器常用于存放一些数据,例如乘法的乘数或除法的除数。

8086的寄存器均为16位,一个16位寄存器又可分为两部分,即kH,kL(k为A,B,C,D),各为一个字节(2字节/16位为一个字)

AX寄存器

​ AX寄存器一般用来存储临时数据,存储函数返回值,存储控制信息等,所以经常被用于MOV指令

BX寄存器

​ BX寄存器通常用于内存寻址,即用于存储内存地址或作为其他寄存器的间接寻址寄存器

​ 例如:

1
2
3
MOV BX, 2000h    ; 将数据2000h传送到BX寄存器,作为内存地址
MOV AX, [BX] ; 将BX寄存器中存储的地址所对应的内存数据传送到AX寄存器
MOV [BX], CX ; 将CX寄存器的值传送到BX所指向的内存地址

CX寄存器

​ CX寄存器常用于计数器,用来在循环中(Loop)计数和存储计数值

​ Loop <标号>命令执行时,会进行两步操作:

​ 1.(cx)=(cx)-1;

​ 2.判断cx是否为0,如果为0则向下执行,否则跳转至标号处执行程序]

DX寄存器

​ DX常用于存储数据或者作为数据传输的缓冲区,例如存储循环累加的值

段寄存器

​ 在 8086 处理器中,共有四个段寄存器,它们是 CS (Code Segment)、DS (Data Segment)、SS (Stack Segment) 和 ES (Extra Segment),各个段寄存器的功能如下:

  1. CS (Code Segment):指向代码段的起始地址,用于存储程序代码的位置。CS 寄存器中的内容加上指令的偏移地址,形成实际的物理地址,从而取得代码段中的指令。
  2. DS (Data Segment):指向数据段的起始地址,用于存储程序的全局数据和静态数据。DS 寄存器中的内容加上数据的偏移地址,形成实际的物理地址,从而访问数据段中的数据。
  3. SS (Stack Segment):指向栈段的起始地址,用于存储程序的运行时栈。SS 寄存器中的内容加上栈中数据的偏移地址,形成实际的物理地址,从而操作栈中的数据。
  4. ES (Extra Segment):额外段寄存器,用于存储其他数据段的起始地址。在特定情况下,程序可以使用 ES 寄存器来访问额外的数据段。

参阅:

https://blog.csdn.net/tju_zxl/article/details/128766360