8086、8088、80286,16位CPU
80386,32位CPU
32位CPU中,通用寄存器一般分為三類:16位通用寄存器,32位擴充通用寄存器,8位的半寄存器。
8個16位通用寄存器:ax,bx,cx,dx,bp,si,di,sp(8086、8088、80286)
8個32位通用寄存器:eax,ebx,ecx,edx,ebp,esi,edi,esp(x86體系結構CPU)
16位指針寄存器:ip
32位指針寄存器:eip
擴充方式:
31位 16-15 0位
xxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxx
高16位 低16位
整個32位寄存器的名字eax,低16位的寄存器的名字ax
32位的寄存器的低16位有自己的名字,但是高16位沒有自己的名字,如果想要使用高16位的資料,則必須引用整個32位的寄存器。
ax,bx,cx,dx,16位寄存器被分成高8位和低8位(僅這四個寄存器可以分成高/低8位寄存器)
15位 8-7 0位
xxxxxxxxxxxxxxxx xxxxxxxxxxxx
高8位 低8位
低8位半寄存器al,高8位半寄存器ah
指令指針寄存器
ip(16位)或eip(32位)專門用來存放下一條即将執行的機器指令的偏移位址
ip的值在執行完一條指令後自動遞增,指令的大小不同,其大小是1~6位元組。
cs和ip或cs和eip一起構成了下一條即将執行的指令的完整位址。
ip和eip寄存器是唯一即不能直接讀出,也不能直接寫入的寄存器。
辨別寄存器
8086、8088、80286的CPU中标記寄存器的大小是16位,名稱是flags
80386及更高的CPU中辨別寄存器的大小是32位,且起名字變為eflags
辨別寄存器是按位使用的,每一位在CPU中都有特殊的含義。每一個位都有自己的名字。
程式執行測試時,測試的就是辨別寄存器中的某個辨別位的值。
辨別位隻能存儲0或1,是以用于訓示那些非此即彼的決策。