Assembly 为什么x86程序集打印垃圾?

Assembly 为什么x86程序集打印垃圾?,assembly,x86,dos,tasm,Assembly,X86,Dos,Tasm,我正在尝试使用tasm输出一条消息,首先使用.com程序打印出消息之外的垃圾值,然后是运行正常的.exe程序。代码如下: code segment para public 'code' assume cs:code, ds:code org 100h start: jmp entry message db "Hello World! $" entry: mov ah,09h lea dx, message i

我正在尝试使用tasm输出一条消息,首先使用.com程序打印出消息之外的垃圾值,然后是运行正常的.exe程序。代码如下:

code segment para public 'code'
    assume cs:code, ds:code
    org 100h
start:
    jmp entry
    message db "Hello World! $"
    entry:
        mov ah,09h
        lea dx, message
        int 21h

        mov ah,4ch
        mov al,00
        int 21h
code ends
end start

我的代码出了什么问题?

在这里工作正常,使用dosbox.Int 21/AH=09h期望字符串位于DS:DX中。您没有设置DS。如何编译和链接?这将创建一个exe文件。要获取com文件,需要使用tlink/t。此外,您还应该使用扩展名显式运行它,以确保在exe和com同时存在的情况下真正运行所需的扩展名。不,您需要使用.asm保存它。这就是源代码。生成的程序将是name.com。这是由tlink/t自动完成的,您只需要传递该/t,然后运行相应的二进制文件。