如何解决执行汇编代码时,控制台上的垃圾字符
| 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所支持?
解决方法
问题是:
ORG 100
应该是:
ORG 100h
二进制文件是.COM
,因此无论load5ѭ都会加载并运行;该错误意味着汇编程序为msg
计算的地址比其应早156个字节,因此会产生额外的垃圾。
ORG
伪指令仅适用于bin
格式。其他可执行格式具有部分(或段)。 (请参阅NASM手册的“输出格式”部分。)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。