X86 汇编
目录
X86汇编是一种低级别的编程语言 与高级编程语言相比,X86汇编语言的语法和结构较为复杂,需要熟悉CPU的指令集和寄存器等底层概念。
通用寄存器介绍
x86架构中,CPU包含一组通用寄存器,它们可以用来存储和处理数据。这些寄存器具有各种不同的功能和大小,但它们都可以用来存储整数数据。
EAX:通用寄存器,用于存储程序运算结果。
EBX:通用寄存器,用于存储数据。
ECX:通用寄存器,用于存储循环计数器。
EDX:通用寄存器,用于存储数据或作为计数器。
ESP:堆栈指针,用于指向当前堆栈顶部。
EBP:基址指针,用于存储当前堆栈帧的地址。
ESI:源指针,用于指向源数据地址。
EDI:目的指针,用于指向目的数据地址。
EIP:指令指针,用于存储当前指令地址。
EAX寄存器可以被分为三个不同的寄存器 AX、AH和AL寄存器
AX寄存器是EAX寄存器的低16位部分,它可以用于存储16位的数据;
AH寄存器是AX寄存器的高8位部分,它可以用于存储8位的数据;
AL寄存器是AX寄存器的低8位部分,它也可以用于存储8位的数据。
因此,如果要使用16位的数据,可以使用AX寄存器,如果要使用8位的数据,可以使用AH或AL寄存器。
指令
MOV指令
MOV 是 x86 汇编语言中最基本的指令之一,用于将数据从一个位置移动到另一个位置。它的语法如下:MOV EAX, 1 把1赋值给eax 可以用代码来理解为 eax =1。
寻址方式
在x86汇编语言中,寻址方式决定了如何访问操作数。x86架构提供了多种寻址模式,使得汇编语言编程者可以以多种方式引用内存地址。以下是一些常见的x86寻址方式:
立即寻址
操作数跟在指令后面
MOV EAX, 1\n
寄存器寻址
使用寄存器作为操作数
mov eax, ebx; // 寄存器寻址
间接寻址
间接寻址是通过某个寄存器或常量获得一个地址,再通过这个地址访问内存
mov eax, [ebx]; // 间接寻址
相对寻址
通过寄存器偏移获取内存位置的数据
mov eax, [ebx+4]
先大概了解下吧 后续会进行完善的