附录 - NASM&MASM 安装、部署、使用

一、NASM

Netwide Assembler (NASM)是针对80x86和x86-64平台设计的,可移植的、模块化的汇编语言编译器。

它也可以输出纯二进制文件,英特尔十六进制和摩托罗拉S-Record格式。

它的语法设计得简单且易于理解,类似于英特尔软件开发人员手册中的语法,但复杂性最小。

它支持所有当前已知的x86架构扩展,并对宏有强大的支持。

1、下载、安装、配置NASM

NASM 官网 下载nasm;

NASM 官方参考文档

和安装普通软件一样,安装NASM;

我选择安装在 C:\NASM目录

windows下配置 PATH 环境变量 :
在这里插入图片描述

2、使用notepad++集成NASM

notepad++官网 下载notepad++

cmd /k pushd "$(CURRENT_DIRECTORY)" & C:\NASM\nasm.exe -f bin  "$(FULL_CURRENT_PATH)" -l "$(NAME_PART).lst" -o "$(NAME_PART).bin"  & PAUSE & EXIT

设置如下图,我们定义了快捷键ALT + R
在这里插入图片描述

3、NASM 命令选项

(1)、-f 指定输出文件的格式

NASM 生成的文件只包含“纯二进制”的内容,

C:\>nasm -f bin hello.asm 

输出的二进制文件名为hello(无扩展名)。

如果您没有向NASM提供-f选项,它将为您自己选择输出文件格式。

在NASM的发行版中,默认值始终是bin。

上面的指令和下面的指令等价的

C:\>nasm  hello.asm 

(2)、-o 指定编译后输出的文件名

-o 指定编译后输出(Output)的文件名

C:\>nasm -f bin hello.asm -o hello.bin

输出的二进制文件名为hello.bin

(3)、-l 指定输出文件的格式

C:\>nasm hello.asm -l hello.lst

生成二进制文件hello和listing文件,这个listing文件是什么样的?直接看看

📚 hello.asm文件

	start	mov ax,1
			mov bx,2
			times 32 db 0xc
	current	times 510-(current-start) db 0
			db 0x55,0xaa

📚 hello.lst文件

     1 00000000 B80100                  start	mov ax,1
     2 00000003 BB0200                  		mov bx,2
     3 00000006 0C<rept>                		times 32 db 0xc
     4 00000026 00<rept>                current	times 510-(current-start) db 0
     5 000001FE 55AA                    		db 0x55,0xaa

在源文件的左面加上了机器码和汇编地址

(4)、-h 查看帮助

C:\>nasm -help

二、MASM

三、NASM & MASM 使用&区别

3.1、标号

MASM中 通过offset取得标号的段内偏移地址

label1:
		mov ax,offset label1		;// 相当于mov ax,0
label2:
		mov ax,offset label2		;// 相当于mov ax,3,因为上条指令长度为3

NASM中直接使用标号

label1:
		mov ax,label1				;// 相当于mov ax,0
label2:
		mov ax,label2				;// 相当于mov ax,3,因为上条指令长度为3

寻址方式

MASM

mov ax,cs:[di]

NASM

mov ax,[cs:di]
  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

java硕哥

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

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

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

打赏作者

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

抵扣说明:

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

余额充值