一、通用寄存器
寄存器AX、BX、CX、DX是8086CPU中的四个通用寄存器,主要用来存放一般性的数据。一个寄存器可以存放16bit。所以被称为16位寄存器。
因为8086CPU寄存器是16位结构,所以一个寄存器可以存放两个字节,同时为了兼容性,这四个寄存器中每一个寄存器也可以单独分为两个独立的寄存器。即AX=AH(高八位)+AL(低八位)。
这四个数据寄存器除了作为通用寄存器使用外,还有各自的特殊功能:
AX(Accumulate) 寄存器称为累加器,常用于存放算术、逻辑运算中的操作数或结果。另外,所有的I/O指令都要使用累加器与外设接口传递数据。
BX(base) 寄存器称为基址寄存器,常用来存放访问内存时的地址。
CX(count) 寄存器称为计数寄存器,在循环、串操作指令中用作计数器。
DX(data) 寄存器称为数据寄存器,在寄存器间接寻址中的I/O指令中存放I/O端口的地址。
此外,在做双字长乘除法运算时,DX 与AX合起来存放一个双字长数(32位),其中DX存放高16位,AX存放低16位。
索引暂存器:SI、DI
SI:来源索引暂存器,DI:目的索引暂存器
堆叠、基底暂存器:SP、BP
SP:堆叠指标暂存器,BP:基底指标暂存器
二、32位寄存器
EAX、ECX、EDX、EBX:是AX,BX,CX,DX的延伸,各为32位
ESI、EDI、ESP、EBP:是SI,DI,SP,BP的延伸,32位
EAX 是"累加器"(accumulator), 它是很多加法乘法指令的缺省寄存器。
EBX 是"基地址"(base)寄存器, 在内存寻址时存放基地址。
ECX 是计数器(counter), 是重复(REP)前缀指令和LOOP指令的内定计数器。
EDX 则总是被用来放整数除法产生的余数。
ESI/EDI分别叫做"源/目标索引寄存器"(source/destination index),因为在很多字符串操作指令中, ESI指向源串,而EDI指向目标串.
EBP是"基址指针"(BASE POINTER), 它最经常被用作高级语言函数调用的"框架指针"(frame pointer).
ESP 专门用作堆栈指针,被形象地称为栈顶指针,堆栈的顶部是地址小的区域,压入堆栈的数据越多,ESP也就越来越小。在32位平台上,ESP每次减少4字节。
参考博客
【1】https://blog.csdn.net/m0_56699208/article/details/121938517
【2】https://www.cnblogs.com/qq78292959/archive/2012/07/20/2600865.html