C++学习 <四> 汇编入门

一、汇编难或不难?

  1. 学习汇编主要学习两大知识点 1> 寄存器 2> 汇编指令
  2. 不同的平台下,x64汇编有2种。 1> 目前大部分Windows平台:Intel 2> Mac平台:AT & T
  3. 汇编的种类 8086 (16bit) x86 (32bit) x64 (63bit) ARM (嵌入式、移动设备)
  4. 汇编不区分大小写

二、计算机原理图

三、寄存器

x64环境,64bit: RAXRBXRCXRDX:通用寄存器 x86环境,32bit: EAXEBXECXEDX:通用寄存器 16bit: AXBXCXDX:通用寄存器 把RAX对半分,就兼容EAX,同理,兼容AX 一般规律: R开头,64bit E开头,32bit

四、汇编指令

1. mov dest, src

2. [地址值]

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

3.word:2字节;dword:4字节(double word);qword:8字节(quad word)

例如:int a = 3; 转成汇编:mov dword ptr [ebp-8],3 解释:把3赋值给变量a的地址值,使用4个字节空间

4.call 函数地址

函数调用

5.其他

    lea dest, [地址值] load effect address : 装载一个有效的地址值

lea eax, [1122H] 结果=> eax == 1122h

mov eax, dword ptr [1122H] (假设这里的内容值为3) 结果=> eax == 3

    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 内存地址 表示: cmp 表示:比较 compare jne 01202683

表示: jump not equal,如果不相等,就跳转,否则正常往下走

经验分享 程序员 微信小程序 职场和发展