80x86的汇编器 NASM

未知
汇编
跨平台
2008-10-01

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报告,修正意见,和其他有用的
信息,还有其他任何你手头有的对我们有用的信息(感谢所有已经这样在做了的
人们),我们还会不断地改进它。

加载中

评论(0)

暂无评论

暂无资讯

2
回答
求解,gcc编译c++内联汇编编译后,原始内联代码被更改的问题

c++内联汇编代码,内存访问处的代码,g++编译之后出现问题: 原始代码: 1 int main() 2 { 3 unsigned lon...

2016/11/01 16:37
2
回答
ARM处理器也有自己的汇编语言吧,nasm现在还有立足之地吗?
甘薯 的回答 2015/03/17 08:39
最佳答案
ARM是有自己的汇编语言. 不过需要直接用汇编完成的事情是少之又少的, 基本上除了引导系统以外, 其他的软件都可以用高级语言写. 所以楼主的担心无异于杞人忧天, 有点过了吧.
5
回答
win7_x64上cygwin nasm语法汇编程序编译通过,运行报错,帮忙看看。

系统是win7 64位。 nasm代码: 执行命令: ld -m i386pe -e _start test.obj 也不好使,不知道咋回事儿了,求大侠帮...

2015/01/06 23:46
4
回答
nasm淘汰了吗?为什么没人用
Dragonite 的回答 2014/08/24 21:57
最佳答案
nasm好啊,怀念当初学微机的时候
5
回答
nasm和masm哪个好?
赵云30 的回答 2014/08/21 09:30
最佳答案
还有人用这个嘛?我估计只会在学校里教汇编才会用到吧?
1
回答
调用int 0x13中断后,自动跳转

环境如下: ubuntu 13.10 amd_64 nasm 2.10.07 bochs 2.4.5 代码如下: org 0x7c00 jmp ...

2014/04/16 09:33
3
回答
关于8086指令长度的疑惑,Help

8086的cpu是16位的,一次能取2个字节指令,但是有的指令是3个字节的,怎么办?是不是先取头2个字节,发现还需要一个字节,就再取2个字节,一共4个字节...

2013/10/19 12:18
2
回答
nasm汇编在linux环境下调试

讨教nasm的两个问题: 1、在windows下,nasm可以运行debug,然后就可以进行调试了;那么在linux下,有没有类似的功能?(可以直接查看寄...

2013/08/11 18:03
2
回答
用 nasm 编译汇编代码出错

比如我编译一个汇编文件hello.asm nasm hello.asm -o hello.com 然后就一直卡着,过了很久出现错误 nasm: error...

2012/10/28 15:54
1
回答
(汇编初级问题)请问这里是用什么命令输出的
rover0913 的回答 2012/10/26 18:38
最佳答案
直接写显存。在文本模式下,显存地址从 0B8000h 开始。 屏幕显示的每个字符在显存中占两个字节,分别是 字符编码和颜色代码

没有更多内容

加载失败,请刷新页面

Nasm编译命令

Nasm,linux下汇编的编译命令

2015/01/01 00:31
133
0
NASM语法

要汇编一个文件,你可以以下面的格式执行一个命令: nasm -f <format> <filename> [-o <output>] 比如, 会把文件'myfile.asm'汇编成'ELF'格式 的文件'myfile.o'.还有: nasm -f bin myfile.a...

2018/05/31 11:44
42
0
Linux 下学习汇编语言 方案一

Linux 下学习汇编语言 方案

2016/03/08 13:14
166
1
十四、转到 linux

业余选手水平还是太凹,不严格跟着书走难度太大,要花很多时间摸索改造,不值当啊!还是跟着书先走一遍,以后再创新吧。今天就转回到 linux ——模拟的。对于 linux 小白来说,百度了 N 次命...

2015/12/08 18:28
48
0
openssl

openssl在vc下及mingw下编译

2014/01/03 02:40
38
0
linux-32位汇编

; nasm -f ;ld -s -o ;gcc -Wall -nostdlib -s obj BITS 32 GLOBAL _start SECTION .text _start: mov eax, 1 mov ebx, 42 int 0x80 nasm -f elf file ld -s -o hello file.o ./hello eax eb...

2015/03/02 09:38
10
0
在Windows上编译UEFI SDK 2018/OVMF的方法

本教程使用的操作系统是Windows 10 Enterprise 64位版本,编译器是Visual Studio 2017 Enterprise。 首先我们要准备好源代码和工具。 一、到这里下载UEFI SDK 2018(Release版本)并解压(我...

2018/05/07 23:31
826
0
在64位linux上编写32位汇编程序

例子来自IBM开发者网站http://www.ibm.com/developerworks/cn/linux/l-gas-nasm.html 程序功能:接受用户名作为输入,并在终端返回一句问候语 一、nasm myhello.asm section .data prom...

2016/07/11 19:21
91
0
NASM学习之Windows下编写16位程序

Windows下编写基于NASM语法的16位汇编程序,包含程序样板文件、编译、链接等

2014/02/10 15:32
233
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部