X86汇编(一) 认识X86汇编 通用寄存器和寻址方式

X86 汇编

目录

X86 汇编

通用寄存器介绍

指令

MOV指令

寻址方式

立即寻址

寄存器寻址

间接寻址

相对寻址


X86汇编是一种低级别的编程语言 与高级编程语言相比,X86汇编语言的语法和结构较为复杂,需要熟悉CPU的指令集和寄存器等底层概念。

通用寄存器介绍

x86架构中,CPU包含一组通用寄存器,它们可以用来存储和处理数据。这些寄存器具有各种不同的功能和大小,但它们都可以用来存储整数数据。

EAX:通用寄存器,用于存储程序运算结果。
EBX:通用寄存器,用于存储数据。
ECX:通用寄存器,用于存储循环计数器。
EDX:通用寄存器,用于存储数据或作为计数器。
ESP:堆栈指针,用于指向当前堆栈顶部。
EBP:基址指针,用于存储当前堆栈帧的地址。
ESI:源指针,用于指向源数据地址。
EDI:目的指针,用于指向目的数据地址。
EIP:指令指针,用于存储当前指令地址。

EAX寄存器可以被分为三个不同的寄存器 AXAHAL寄存器

AX寄存器是EAX寄存器的低16位部分,它可以用于存储16位的数据;

AH寄存器是AX寄存器的高8位部分,它可以用于存储8位的数据;

AL寄存器是AX寄存器的低8位部分,它也可以用于存储8位的数据。

因此,如果要使用16位的数据,可以使用AX寄存器,如果要使用8位的数据,可以使用AHAL寄存器。

指令

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]

先大概了解下吧 后续会进行完善的 

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
WIN32 程序运行在保护模式下的,保护模式的历史可以追溯到 80286。而今 80286 已成为了历史。所以我们将只把精力集中于 80386 及后续的X86 系列 CPU。Windows 把每一个 Win32 应用程序放到分开的虚拟地址空间中去运行,也就是说每一个应用程序都拥有其相互独立的 4GB 地址空间,当然这倒不是说它们都拥有 4GB 的物理地址空间,而只是说能够在 4GB 的范围内寻址。操作系统将会在应用程序运行时完成 4GB 的虚拟地址和物理内存地址间的转换。这就要求编写应用程序时必须格守 Windows 的规范,否则极易引起内存的保护模式错误。而过去的 Win16 内存模式下,所有的应用程序都运行于同一个 4GB 地址空间,它们可以彼此"看"到别的程序的内容,这极易导致一个应用程序破坏另一个应用程序甚至是操作系统的数据或代码。 和 16 位 Windows 下的把代码分成 DATA,CODE 等段的内存模式不同,WIN32 只有一种内存模式,即 FLAT 模式,意思是"平坦"的内存模式,再没有 64K 的段大小限制,所有的 WIN32 的应用程序运行在一个连续、平坦、巨大的 4GB 的空间中。这同时也意味着您无须和段寄存器打交道,您可以用任意的段寄存器寻址任意的地址空间,这对于程序员来说是非常方便的,这也使得用32位汇编语言和用C语言一样方便。 在Win32下编程,有许多重要的规则需要遵守。有一条很重要的是:Windows 在内部频繁使用 ESI,EDI,EBP,EBX 寄存器,而且并不去检测这些寄存器的值是否被更改,这样当您要使用这些寄存器时必须先保存它们的值,待用完后再恢复它们,一个最显著的应用例子就是 Windows 的 CallBack 函数中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值