结构
nasm采用intel风格的汇编语法,目前只支持x86架构,基本代码结构如下:
通常,将代码放在.text部分中,并将常量数据放在.data部分中。
代码部分结构是,一个指令,后面跟零个或多个操作数。操作数有三种类型:寄存器操作数,内存操作数和直接操作数。编写顺序如下:
标签(可选) 指令 目标操作数, 操作数;目标操作数一般是寄存器操作数
既可编写独立的汇编文件(后缀名一般为.asm、.s或.S),也可与C语言集成。一个nasm的汇编代码,大概长这样:
; --------------------------------------------------------------------------------; 仅使用syscall将"Hello,World"写入控制台。仅在64位Linux上运行。; 使用 Linux 下的 1 号系统调用来输出一条信息和 60 号系统调用来退出程序。; 编译汇编代码并运行:;; nasm -felf64 hello.asm && ld hello.o && ./a.out; --------------------------------------------------------------------------------global _start ;定义一个全局标签section .text ;.text区是必须的_start: ;使用标签;write(1, message, 13)mov rax,1mov rdi,1mov rsi,messagemov rdx,13syscall;exit(0)mov rax,60xor rdi,rdisyscallsection .data ;注意.data区是可选的message:db "hello,world",10
编译、链接并执行该代码:
$ nasm -felf64 hello.s -o hello.o && ld hello.o -o hello && ./helloHello,World
