我需要将消息字符串移至程序末尾,并且程序需要正确输出它。我怎样才能意识到这一点?
.model small
.stack 100h
.data
.code
main:
mov ax, @data
mov ds, ax
output:
jmp message
MOV dx, offset message
mov ah, 09h
int 21h
mov ah, 4Ch
int 21h
message:
db 'Hello, World!', '$'
end main
我需要将消息字符串移至程序末尾,并且程序需要正确输出它。
我的理解是,您不希望消息字符串成为
.data
部分的一部分,而是驻留在 .code
部分。jmp message
无法帮助您,因为它将绕过可以输出字符串的一件事,更糟糕的是,它将开始执行由消息字符串中恰好存在的任何字节形成的垃圾指令。 jmp message
显然必须删除,但需要进行一项更改。 DOS.PrintString 函数 09h 始终需要一个指向寄存器 DS:DX 中以 $ 结尾的字符串的远指针,因此您需要 将 CS 复制到 DS,因为该字符串现在驻留在代码段中。仅此而已!
main:
push cs
pop ds
mov dx, offset message
mov ah, 09h
int 21h
mov ax, 4C00h
int 21h
message: db 'Hello, World!$'
end main