汇编语言快速入门

汇编语言快速入门

汇编语言快速入门

简介

汇编语言是一种低级编程语言,用助记符(如ADD、MOV)代替二进制机器指令,直接操作硬件。

起源:20世纪50年代(如IBM 704的汇编程序),简化二进制编程的复杂性。

特点:执行高效、贴近硬件,但代码可读性差、可移植性低(依赖特定CPU架构),不区分大小写。

应用:嵌入式系统、驱动开发、性能优化等需直接控制硬件的场景。

现状:虽被高级语言取代主流地位,仍是底层开发和逆向分析的重要工具。

汇编语言的种类

8086汇编(16bit)

x86汇编(32bit)

x64汇编(64bit)

ARM汇编(嵌入式、移动设备)

...

我们这里学习的是x64汇编。

x64根据编译器的不同有两种书写格式(了解)

Intel

AT&T(例如:MacOS,ios)

x64汇编 – 寄存器

64位兼容32位,32位兼容16位,16位兼容8位。(为什么会兼容?以及如何兼容的?可以网上自行搜索,因为太多相关资料,这里不赘述。)

第二张图的寄存器是我们要重点掌握的。

x64汇编要点总结

mov dest, src

将src的内容赋值给dest,类似于dest = src(赋值操作)。

[ 地址值 ]

中括号[ ]里面放的都是内存地址。

word是2字节,dword是4字节(double word),qword是8字节(quad word)

call 函数地址

调用函数

lea dest, [ 地址值 ]

将地址值赋值给dest,类似于dest = 地址值。(指针,或者引用)

ret

函数返回

xor op1, op2

将op1和op2异或的结果赋值给op1,类似于op1 = op1 ^ op2。

add op1, op2

类似于op1 = op1 + op2。

sub op1, op2

类似于op1 = op1 - op2。

inc op

自增,类似于op = op + 1。

dec op

自减,类似于op = op – 1。

jmp 内存地址

跳转到某个内存地址去执行代码。(jmp是无条件跳转)

j开头的一般都是跳转,大多数是有条件(带条件)的跳转,一般跟test、cmp等指令配合使用。

权威参考:Intel白皮书

https://software.intel.com/en-us/articles/intel-sdm

内联汇编

应用场景:有些时候需要直接操作底层硬件,c/c++都无法搞定,就需要用内联汇编。

在程序中使用以下方式写汇编代码。

__asm {

mov eax,10H

mov ebx,20H

}

变量地址总结

一个变量的地址值,是它所有字节地址中的最小值。(变量地址=最小字节地址)

相关推荐

成都:揭秘城市发展中那些不可或缺的元素
beat365正版网站唯一官网app

成都:揭秘城市发展中那些不可或缺的元素

📅 01-07 👁️ 6563
固态硬盘寿命大揭秘:从核心原理到延长寿命的完全指南!
为什么编程调试不了
beat365正版网站唯一官网app

为什么编程调试不了

📅 09-27 👁️ 6148