如何编译汇编代码:在 Linux、Windows 中 使用 NASM
可以在 Linux 或 Windows 上使用 NASM 编译汇编程序,因为 NASM 可用于这两个平台。 NASM 汇编程序将使用助记符将低端编码转换为处理器可以理解的机器语言。 本文不会教大家使用 NASM 进行编程,而是教大家从 NASM 源代码创建适用于 Linux 和 Windows 的可执行命令。
Netwide Assembler (NASM) 是 Intel x86 架构的汇编器和反汇编器,通常用于创建 16 位、32 位 (IA-32) 和 64 位 (x86-64) 程序。
如何使用 NASM for Linux 编译汇编程序?
创建源文件
我们可以使用任何文本编辑器(例如 Gedit、KWrite 或 XEmacs)来执行此操作。 保存文件时,将其扩展名为 .asm。
编译源文件
对于此步骤,我们需要在计算机上安装 NASM 软件。
如果我们运行的是 Debian 或 Ubuntu,只需键入以下命令:
$ sudo apt-get install nasm
如果我们有其他 Linux 发行版,则必须使用我们的发行版的包管理器(例如 Urpmi、Yum、Emerge)或从官方网站下载 NASM。
使用以下命令行来编译源文件:
$ nasm -f elf test.asm
在示例中,保存的 .asm 文件称为 test.asm。 这将在当前目录中创建一个名为 test.o 的文件。
注意
该文件不可执行。 它仍然是一个目标文件。
创建可执行文件
现在我们有了我们的目标文件,名为 test.o,我们必须创建我们的可执行文件。
我们的程序可能以名为 _start
的过程开始。 这意味着我们的程序有自己的入口点,无需使用 main
函数。 但是,我们需要使用“l”来创建可执行文件:
$ ld test.o -o test
或者,我们的程序可以从称为 main
的过程开始。 我们将需要使用 gcc
来创建我们的可执行文件:
$ gcc test.o -o test
现在,我们的可执行文件已创建、测试并位于当前目录中。
程序执行
要运行名为 test 的程序,只需键入以下命令:
$ ./test
如何使用 NASM for Windows 编译汇编程序?
Windows下没有 main
函数,必须用 WinMain 代替。
如果我们的入口点是 _start
或 main
,则应将其更改为 _WinMain @ 16
。此外,将过程末尾的 ret 更改为 ret 16:
section .text
global _WinMain@16
_WinMain@16:
mov eax, 0
ret 16
安装软件
我们必须先安装 NASM。 将安装包保存在某处,因为稍后会用到。
最困难的一步是安装 MinGW,它是 Windows 的免费开发环境:
首先从他们的网站上选择最新版本的 MingGW。 运行安装程序,但此时不要更新。 保留默认选中的所有选项,并等待它安装。
现在你需要在开发环境 MinGW 中插入 NASM。 解压 NASM 档案。 我们应该得到一个文件夹,其中包含一个名为 nasm.exe 的文件。 将此文件复制到目录 C:\MinGW\bin 中。
创建源文件
与 Linux 一样,不需要使用特定的发布者来为 NASM 创建源文件。 我们可以使用记事本。 但请注意,它倾向于将 .txt 扩展名添加到它创建的文件中。 为消除任何歧义,建议大家查看文件的扩展名。
无论如何,避免使用文字处理器,例如 Word 或 WordPad。
如果愿意,我们还可以使用使用 NASM 语法的编辑器,例如 NasmEdit IDE。
确保使用 .asm 扩展名保存源文件。
编译源文件
通过转到“开始”>“运行”并键入 cmd.exe 打开“命令”窗口
使用命令 cd,转到包含源文件的文件夹。 进入此目录后,使用以下命令组装源文件 (test.asm):
> nasm -f win32 test.asm -o test.o
我们现在已经创建了一个目标文件。 下一步将把它变成一个可执行文件。
程序的创建和执行
在命令窗口中,键入最终命令以创建可执行文件:
> ld test.o -o test.exe
相关文章
解决 Linux Bash 中的 Nodemon 命令未找到错误
发布时间:2024/03/14 浏览次数:223 分类:操作系统
-
本文介绍如何解决 Linux Bash 中的 nodemon command not found 错误。
解决 Linux Bash 中的 Make Command Not Found 错误
发布时间:2024/03/14 浏览次数:246 分类:操作系统
-
本文介绍如何解决 Linux Bash 中的 make command not found 错误。
解决 Linux Bash 中 syntax error near unexpected token newline 错误
发布时间:2024/03/14 浏览次数:408 分类:操作系统
-
本文介绍如何解决 Linux Bash 中 syntax error near unexpected token newline 错误。
使用 PowerShell 将文件从 Windows 复制到 Linux
发布时间:2024/02/08 浏览次数:571 分类:编程语言
-
本教程将教你使用 PowerShell 将文件从 Windows 复制到 Linux。
等效于 Linux ls 的 PowerShell 命令
发布时间:2024/02/07 浏览次数:206 分类:编程语言
-
本教程将为 Linux ls 命令介绍不同的 PowerShell 等效命令。