汇编语言快速入门

汇编语言快速入门

汇编语言快速入门

简介

汇编语言是一种低级编程语言,用助记符(如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网址大全

​风格迥异 雅阁和速派哪个好!

📅 02-13 🔥 142
每天吃多少蔬菜才算够?
下载365app

每天吃多少蔬菜才算够?

📅 07-06 🔥 473
如何看淘宝服务器的ip地址
365bet亚洲真人

如何看淘宝服务器的ip地址

📅 11-01 🔥 848
张湉蜜姓名测试打分,张湉蜜名字怎么样,宝宝起名张湉蜜好不好查询
哪些高薪职业最“烧脑”,工作两年就“秃”了?
心什么意什么的成语
365bet亚洲真人

心什么意什么的成语

📅 01-01 🔥 279