课程进度 13% · 第2/10章第2/10章 · 标签 1/4
— 1 —
汇编语言基础概念
汇编语言是一种低级编程语言,它与机器语言有着一一对应的关系。汇编语言使用助记符来表示机器指令,使程序员能够更容易地理解和编写程序。在逆向工程中,理解汇编语言是分析程序行为的基础。
汇编语言的特点
- 直接操作硬件:可直接访问和操作CPU寄存器、内存等硬件资源
- 执行效率高:汇编程序经过汇编器转换后直接变成机器码
- 可读性差:相比高级语言,汇编代码的可读性和维护性较差
- 平台相关:不同CPU架构的汇编语言指令集不同
基本组成
asm
1
; 基本格式:操作码 操作数1, 操作数2
2
mov eax, 1234h ; 将立即数1234h移动到eax寄存器
3
add ebx, ecx ; 将ecx的值加到ebx中
4
sub eax, [esi] ; 从eax中减去esi指向的内存值
5
6
; 注释使用分号(;)开始
7
start:
8
mov eax, 1
9
jmp start ; 跳转到start标签处
— 2 —
数据表示
asm
1
; 十六进制数:以h结尾
2
mov eax, 0FFh ; 255的十六进制表示
3
; 二进制数:以b结尾
4
mov ebx, 1010b ; 10的二进制表示
5
; 字符串
6
db 'Hello' ; 定义字符串
7
dw 'AB' ; 定义字(2字节)
8
dd 'ABCD' ; 定义双字(4字节)
汇编与高级语言的关系
asm
1
// C语言代码
2
int add(int a, int b) {
3
return a + b;
4
}
5
6
; 对应的汇编代码
7
add:
8
push ebp ; 保存旧的基址指针
9
mov ebp, esp ; 设置新的基址指针
10
mov eax, [ebp+8] ; 获取第一个参数a
11
add eax, [ebp+12] ; 加上第二个参数b
12
pop ebp ; 恢复旧的基址指针
13
ret ; 返回结果在eax中