【汇编】RAX,eax,ax,ah,al 关系

【汇编】RAX,eax,ax,ah,al 关系

bash 复制代码
|63..32|31..16|15-8|7-0|
               |AH.|AL.|
               |AX.....|
       |EAX............|
|RAX...................|

一般寄存器 :AX(2字节)BXCXDX

  • AX:累积暂存器,BX:基底暂存器,CX:计数暂存器,DX:资料暂存器

索引暂存器:SI、DI

  • SI:来源索引暂存器,DI:目的索引暂存器

堆叠、基底暂存器:SP、BP

  • SP:堆叠指标暂存器,BP:基底指标暂存器

EAX(4字节)、ECX、EDX、EBX :為ax,bx,cx,dx的延伸,各為32位元
ESI、EDI、ESP、EBP:為si,di,sp,bp的延伸,32位元

eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称,是32位的寄存器。如果用C语言来解释,可以把这些寄存器当作变量看待。

比方说:add eax,-2 ; //可以认为是给变量eax加上-2这样的一个值。

这些32位寄存器有多种用途,但每一个都有"专长",有各自的特别之处。

  • EAX 是"累加器"(accumulator), 它是很多加法乘法指令的缺省寄存器。

  • EBX 是"基地址"(base)寄存器, 在内存寻址时存放基地址。

  • ECX 是计数器(counter), 是重复(REP)前缀指令和LOOP指令的内定计数器。

  • EDX 则总是被用来放整数除法产生的余数。

ESI/EDI分别叫做"源/目标索引寄存器"(source/destination index),因为在很多字符串操作指令中, DS:ESI指向源串,而ES:EDI指向目标串.

EBP 是"基址指针"(BASE POINTER), 它最经常被用作高级语言函数调用的"框架指针"(frame pointer). 在破解的时候,经常可以看见一个标准的函数起始代码:

bash 复制代码
  push ebp ;保存当前ebp
  mov ebp,esp ;EBP设为当前堆栈指针
  sub esp, xxx ;预留xxx字节给函数临时变量.
  ...

这样一来,EBP 构成了该函数的一个框架, 在EBP上方分别是原来的EBP, 返回地址和参数. EBP下方则是临时变量. 函数返回时作

bash 复制代码
   mov esp,ebp
   pop ebp
   ret 

即可.

ESP 专门用作堆栈指针,被形象地称为栈顶指针,堆栈的顶部是地址小的区域,压入堆栈的数据越多,ESP也就越来越小。在32位平台上,ESP每次减少4字节。

除次之外 就是 RAX, RAX是 EAX的64位版本(8字节)。同理 ,其他的都有64位版本

bash 复制代码
x86.dbg
779193C8 | B0 0B                    | mov al,B                                | al 表示的是EAX的第一个字节 低字节 低8位
779193CA | 66:B8 CDAB               | mov ax,ABCD                             | AX是EAX首2个字节空间
779193CE | B8 563412AB              | mov eax,AB123456                        | 4个字节操作
779193D3 | B8 00000000              | mov eax,0                               | 4个字节
779193D8 | B4 1F                    | mov ah,1F                               | ah 表示的是eax的第二字节 高字节 高8位

779193DA | 90                       | nop                                     |
779193DB | 90                       | nop                                     |

779193DC | B3 0B                    | mov bl,B                                | 0B:'\v'
779193DE | 66:BB 8F19               | mov bx,198F                             |
779193E2 | BB 21436587              | mov ebx,87654321                        | 一个字节 00---FF
779193E7 | B7 AB                    | mov bh,AB                               |

779193E9 | 90                       | nop                                     |
779193EA | 90                       | nop                                     |
779193EB | 90                       | nop                                     |

779193EC | B2 21                    | mov dl,21                               | 
779193EE | 66:BA 2143               | mov dx,4321                             |
779193F2 | BA 21436587              | mov edx,87654321                        |
779193F7 | B6 AB                    | mov dh,AB                               |

x64.dbg
00007FF89B3ECBC5                     | B2 21                     | mov dl,21                                         | 指令 *
00007FF89B3ECBC7                     | 66:BA 2143                | mov dx,4321                                       |
00007FF89B3ECBCB                     | BA 21436587               | mov edx,87654321                                  |
00007FF89B3ECBD0                     | 48:BA 2143658799EFCDAB    | mov rdx,ABCDEF9987654321                          |
00007FF89B3ECBDA                     | B6 AB                     | mov dh,AB                                         |
00007FF89B3ECBDC                     | BA 4E61BC00               | mov edx,BC614E                                    |
00007FF89B3ECBE1                     | BA 78563412               | mov edx,12345678                                  | 清空高位为0
00007FF89B3ECBE6                     | C7C2 78563412             | mov edx,12345678                                  |
相关推荐
CHANG_THE_WORLD3 小时前
c语言位运算 汇编代码分析
c语言·开发语言·汇编
CHANG_THE_WORLD3 小时前
if条件语句 三目运算符 汇编分析
汇编·算法·条件语句·if 语句·汇编分析·条件语句汇编分析
CHANG_THE_WORLD1 天前
有符号数和无符号数的 汇编视角 区别
汇编
南飞测绘视界2 天前
【编号220】中国国内生产总值历史数据汇编1952-2021合订本(PDF扫描版)
汇编·pdf·年鉴
Ayanami_Reii4 天前
汇编和C语言结构
c语言·汇编·笔记
脑子慢且灵6 天前
C语言与Java语言编译过程及文件类型
java·c语言·开发语言·汇编·编辑器
日更嵌入式的打工仔10 天前
汇编与反汇编
汇编
oioihoii15 天前
从汇编角度看C++优化:编译器真正做了什么
java·汇编·c++
CHANG_THE_WORLD15 天前
函数简单传入参数的汇编分析
汇编·c++·算法