NASM 学习小记

本文是关于NASM汇编语言的学习记录,介绍了section的使用、$$和$的区别、方括号引用内存地址的规则,以及与MASM的差异,如不支持ASSUME伪指令,初始化内存的方式等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近使用了NASM进行汇编学习。在这之前我只涉及过Intel的MASM,估计二者将有一些区别。

将自己学习中的一些新的记录于此,以便以后查看。

-----------------------------------------------------------分割线*1-----------------------------------------------------------------

1.section关键字,和segment是完全一样的,用于建立新的段。注意,在windows下段名不能以.开头

2.$$表示当前代码所在“section”的段起始地址,$表示当前行的地址。jmp $表示无限循环(相当于while 1,停在这里了)

3.原始指令被包含在一个方括号中;用户级指令没有括号。比如[SECTION .16]或者[BITS 16] 这些就是原始指令,它们对应的用户级指令就是SECTON 或BITS 16(无方括号)

4.手册第2.2节是NASM和MASM的区别,值得每个人看一看~

5.NASM 需要方括号来引用内存地址任何对内存中内容的存取操作必须要在地址上加上方括号,但任

NASM中文手册.pdf 学nasm必备哈 1.1 什么是NASM [1]NASM是一个为可移植性与模块化而设计的一个80x86的汇编器。它支持相当多 的目标文件格式,包括Linux和'NetBSD/FreeBSD','a.out','ELF','COFF',微软16 位的'OBJ'和'Win32'。它还可以输出纯二进制文件。它的语法设计得相当的简 洁易懂,和Intel语法相似但更简单。它支持'Pentium','P6','MMX','3DNow!', 'SSE' and 'SSE2'指令集, 1.1.1 为什么还需要一个汇编器? NASM当初被设计出来的想法是'comp.lang.asm.x86'(或者可能是'alt.lang.asm' ,我忘了),从本质上讲,是因为没有一个好的免费的x86系例的汇编器可以使用, 所以,必须有人来写一个。 (*)'a86'不错,但不是免费的,而且你不可能得到32位代码编写的功能,除非你 付费,它只使用在dos上。 (*) 'gas'是免费的,而且在dos下和unix下都可以使用,但是它是作为'gcc'的一 个后台而设计的,并不是很好,'gcc'一直就提供给它绝对正确的代码,所以它的 错误检测功能相当弱,还有就是对于任何一个想真正利用它写点东西的人来讲, 它的语法简直太可怕了,并且你无法在里面写正确的16位代码。 (*) 'as86'是专门为Minix和Linux设计的,但看上去并没有很多文档可以参考。 (*) 'MASM'不是很好,并且相当贵,还且只能运行在DOS下。 (*) 'TASM'好一些,但却极入与MASM保持兼容,这就意味着无数的伪操作码和繁琐 的约定,并且它的语法本质上就是MASM的,伴随着的就是一些自相矛盾和奇怪的 东西。它也是相当贵的,并且只能运行在DOS下。 所以,只有NASM才能使您愉悦得编程。目前,它仍在原型设计阶-我们不期望它 能够超越所有的这些汇编器。但请您发给我们bug报告,修正意见,和其他有用的 信息,还有其他任何你手头有的对我们有用的信息(感谢所有已经这样在做了的 人们),我们还会不断地改进它。 1.1.2 许可条件 请阅读作为NASM发布的一部分的文件'Licence',只有在该许可条件下你才可以使 用NASM
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值