【发布时间】:2019-02-22 00:15:31
【问题描述】:
section .data
text db "Hello, World!",10
section .text
global _start
_start:
mov rax, 1
mov rdi, 1
mov rsi, text
mov rdx, 14
syscall
mov rax, 60
mov rdi, 0
syscall
我正在尝试使用 NASM 运行上述汇编代码。为此,我关注this tutorial。
但是,Win7下的cmd.exe报如下错误:
而且,它从 DOSBox 给出以下错误:
到底发生了什么?
【问题讨论】:
-
因为它是一个 Linux 程序并且使用 Linux 调用约定。
-
它甚至是 64 位 :) 此外
nasm不会创建.exe格式文件。是的,您可以将文件命名为.exe,但这并不能使其成为正确的格式。请注意,dosbox 错误是因为您尝试运行nasm再次不起作用。 -
首先
RSI, RDI等是64位指令,不是16位指令。如果您希望构建 16 位 .EXE,请使用 MASM 6.14 或更早版本。见blog.fpmurphy.com/2017/11/… -
你做了什么与教程建议的完全不同的事情吗?
-
@lurker,源代码不同。