x86汇编语言 汇编地址&标号

段地址:偏移地址

  • 处理器访问内存时,采用的是“段地址:偏移地址”的模式。
  • 对于任何一个内存段来说,段地址可以开始于任何 16 字节对齐的地方,偏移地址则总是从 0x0000 开始递增。

汇编地址

  • 为了支持这种内存访问模式,在源程序的编译阶段,编译器会把源程序整体上作为一个独立的段来处理,并从 0 开始计算和跟踪每一条指令的地址。
  • 因为该地址是在编译期间计算的,故称为 汇编地址
  • 汇编地址是在源程序编译期间,编译器为每条指令确定的汇编位置Assembly Position),也就是每条指令相对于整个程序开头的偏移量,以字节计。当编译后的程序装入物理内存后,它又是该指令在内存段内的偏移地址。

标号

  • 在 NASM 汇编语言里,每条指令的前面都可以拥有一个标号,以代表和指示该指令的汇编地址
  • 毕竟,由我们自己来计算和跟踪每条指令所在的汇编地址是极其困难的。

举个标号的栗子:

;行号	汇编地址		机器代码		源程序代码				注释
 98		0000012D	E9FDFF		infi:jmp near infi 		;无限循环
 99

为了方便理解说明其地址关系,这里放的是编译后生成的列表文件内容。最上面的一行中文是为了方便理解。
共分五栏,从左到右依次是行号、指令的汇编地址、指令编译后的机器代码、源程序代码和注释。

简化为源程序代码:

		infi:jmp near infi
  • 在这里,行首中带冒号的“ infi ”就是一个号标。
  • 这条指令的汇编地址是 0x0000012D,故 infi 就代表数值 0x0000012D,或者说是 0x0000012D 的符号化表示。

资料参考

  • 《x86汇编语言:从实模式到保护模式》(编著:李忠 王晓波 余洁)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MoMing丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值