1.通用寄存器
1)寄存器
存储数据:
CPU > 内存 > 硬盘
32位CPU: 8 16 32
64位CPU:8 16 32 64
2)32位通用寄存器:
EAX ESP
ECX EBP
EDX ESI
EBX EDI
计算机最常见的指令就是移动指令:mov ecx eax
在mov,ecx,eax中,后面的是源,前面的是目标,中间是逗号,不区分大小写。寄存器间相互移动。
mov是操作码,两个寄存器是操作数,操作码除了mov之外还有很多,如ADD(加),SUB(减),AND(与),OR(或),XOR(异或),NOT(非)。
比如:add eax,ecx 将两个寄存器的值相加,然后将结果赋值给前面的目标寄存器。
8个寄存器是分段的。我们可以用一半,也可以用四分之一等等
eax可以分成四部分:eax共32位0-31,0-7叫做AL,8-15叫做AH。整个0-15又叫做AX。
AL:low;AH:high。ecx,edx,ebx也是一样的。
所以上面的寄存器实际都可以分成三段:0-7(AL),8-15(AH),16-31
然而不同的是,ESP,EBP,ESI,EDI,这四个寄存器只分成两段,比如ESP整体0-31位叫做ESP,0-15位叫做SP。
寄存器编号
寄存器 | 编号(二进制) | 编号(十进制) |
---|---|---|
32位|16位|8位 | ||
EAX |AX |AL | 000 | 0 |
ECX |CX |CL | 001 | 1 |
EDX |DX |DL | 010 | 2 |
EBX |BX |BL | 011 | 3 |
ESP |SP |AH | 100 | 4 |
EBP |BP |CH | 101 | 5 |
ESI |SI |DH | 110 | 6 |
EDI |DI |BH | 111 | 7 |
32位寄存器有自己的编号,16位寄存器也有自己独立的编号。它们是重叠的,当改变了32位的寄存器,相应的16位寄存器也会跟着改变。
通用寄存器即cpu常用的寄存器。通用寄存器的功能:通用目的寄存器主要实现逻辑和算数运算、地址计算和内存指针。
在早期的技术还没有现在成熟时,8 个通用寄存器宽度是 8 位(这里指的是二进制的 8 位):AL,AH,CL,CH,DL,DH,BL,BH。后来 cpu 技术逐渐发展,由 8 位发展成 16 位,于是寄存器由 8 位演变成 16 位:AX,CX,DX,BX,SP,BP,SI,DI。但是为了兼容前面的 8 位技术,将之前的 8 个 8 位寄存器封装到 AX,CX,DX,BX 寄存器中。
32 位通用目的寄存器的指定用途如下:
·EAX:累加器(Accumulator)
·ECX:计数(Counter)
·EDX:I/O 指针
·EBX:DS 段的数据指针
·ESP:堆栈(Stack)指针
·EBP:SS 段的数据指针
·ESI:字符串操作的源(Source)指针;SS 段的数据指针
·EDI:字符串操作的目标(Destination)指针;ES 段的数据指针