【汇编】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                                  |
相关推荐
祈禾2 天前
计算机组成原理之编译、汇编、链接、解释
开发语言·汇编·笔记·学习
水饺编程3 天前
AT&T 汇编语言学习笔记开篇语
c语言·汇编·c++
iCxhust4 天前
8088单板机VScode集成开发环境使用方法二(汇编版)
汇编·单片机·微机原理·8088单板机
·薯条大王4 天前
经济实惠玩云服务器|一台云服务器多人共用,子账号配置教程
java·linux·运维·服务器·汇编·c++·python
txg6665 天前
VULOC:基于汇编切片的漏洞定位框架,精准锁定二进制中的危险代码
汇编·人工智能·深度学习·安全·网络安全
sunburn-6 天前
Java 队列全面详解:从入门到面试实战
java·开发语言·汇编·ide·idea
wechatbot88813 天前
企业微信API开发:登录-联系人查询-消息发送完整开发流程分享
汇编·微信·自动化·企业微信·ai编程·rpa
00后程序员张14 天前
iOS加固技术路线全面解析:Bitcode模式、源码模式与汇编模式对比及爱加密优势
android·汇编·ios·小程序·uni-app·cocoa·iphone
wechatbot88817 天前
解决企业微信官方 API 短板:iPad 协议全功能对接方案
java·汇编·windows·http·微信·企业微信
学逆向的19 天前
汇编——JCC指令
开发语言·汇编·网络安全