执行汇编代码时,控制台上的垃圾字符
|
x86汇编程序的初学者。我有一个简单的asm文件,我使用nasm版本进行组装-NASM版本2.10rc6于2011年6月6日针对Windows编译(我的Windows是Windowa-7 64位)。 NASM是从此处下载的(nasm-2.10rc6-win32.zip)。
ORG 100
USE16
mov ah, 09
mov dx, msg
int 21h
mov ah, 01
int 21h
mov ah, 4ch
int 21h
msg db \'Hello assembly\', 0Ah, \'$\'
然后我使用命令组装-
nasm -f bin hello.asm -o hello.com
然后,我使用Dosbox(用于64位OS Windows-7的Dos模拟器)运行生成的可执行文件hello.com。
当它运行时,在控制台上的输出输出将在我的字符串\'Hello assembly \'加上前面打印的一些垃圾字符/控制字符,如下所示:
这是什么原因。代码有什么问题吗?
我需要怎么做才能解决此问题?
编辑:当我尝试给nasm选项-f以生成特定类型的可执行输出时,例如Win32或Win64输出我不断收到错误消息:
nasm -f win64 hello.asm -o hello.com
hello.asm:1: error: parser: instruction expected
期待什么?如何使用nasm生成Win32 / Win64可执行文件?还是就此而言,其他任何可执行文件(例如elf32 / coff)都可以被nasm所支持?
没有找到相关结果
已邀请:
1 个回复
究补闯
应该是:
二进制文件是
,因此无论load5ѭ都会加载并运行;该错误意味着汇编程序为
计算的地址比其应早156个字节,因此会产生额外的垃圾。
伪指令仅适用于
格式。其他可执行格式具有部分(或段)。 (请参阅NASM手册的“输出格式”部分。)