2.1.2 NASM编译器

很多人在学习汇编的时候都可能是从I386学起的,使用的编译器是MASM(MASM 是Microsoft Macro Assembler 的缩写),其实NASM的格式与MASM总体上是差不多的。

值得说明的有如下几点:

1. [ ]的使用

在NASM中,如果你引用标签或者变量名, 都被认为引用的是该名字的地址,如果想访问他们里面的内容,必须使用 [ ]。这么理解如果不太容易记忆的话,那么你可以把他想象成C语言里的数组,数组名字代表的是它的地址,加上[ ]就代表的是它里面的内容。是不是一下子就明白了?其实,说不定C的编译器就是这么做的呢,毕竟C编译器会把代码编译成汇编代码,然后再编译成二进制文件的,对吧~!

2. $

$表示当前地址——当前行被编译后的地址。好像不太容易理解对吧,不要紧,请看下面的代码:

jmp $  

这句汇编的意思就是死循环,转化成机器码是E9 FD FF,其中E9的意思是jmp,FD FF是个地址,但是在x86里面是小端排列的,所以要将数值转换为地址:FFFD,其实就是-3,这个jmp是相对跳转,跳转的地址就是执行完这条命令后,指令寄存器-3的地址,正好这条指令的长度就是3个字节,所以,又回到了这条指令重新执行。上述过程中,$指的就是地址E9啦。

3. $$

明白了

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值