.model tiny
.data
message: db "Hello World $";
.code
org 100h
main proc near
mov dx, offset message
mov ah,09h
int 21h
mov ah, 4ch
mov al, 00
int 21h
endp
end main
.model small
.stack
.data
message db "Hello World $"
.code
main:
mov ax,@data
mov ds,ax
mov dx, offset message
mov ah,09h
int 21h
mov ah, 4ch
mov al, 00
int 21h
end main
2条答案
按热度按时间js5cn81o1#
您正在使用内存模型“tiny”和
org 100h
作为COM可执行文件格式,但链接MZ可执行文件。将/t
标志传递给链接器:它使用正确的内存布局创建
hello.com
。如果您想要MZ可执行格式(EXE),那么指定例如
.model small
,定义堆栈段并加载ds
寄存器与数据段。message
必须是变量,而不是标签(名称后没有:
)。链接到
tlink hello.obj
。它创建hello.exe
。iaqfqrcu2#
似乎在“Hello World”程序的TASM代码输出中遇到了意外的符号。该问题可能与段寄存器未正确设置有关。下面是您的代码的更新版本,其中包括段寄存器初始化:
汇编复制代码
.data message db“Hello World $”
.code org 100h main proc near mov ax,@data ;初始化DS段寄存器mov ds,ax
请确保使用以下命令汇编和链接代码:
' tasm hello.asm tlink hello.obj '通过使用mov ax,@data和mov ds,ax指令初始化DS段寄存器,可以确保消息标签的偏移量指向数据段中的正确位置。这应该有助于解决输出中出现意外符号的问题。
如果您仍然遇到任何问题或有进一步的问题,请让我知道!