执行汇编代码时,控制台上的垃圾字符

| 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手册的“输出格式”部分。)     

要回复问题请先登录注册