【发布时间】:2016-10-22 08:54:46
【问题描述】:
我是汇编新手,我不明白为什么我会从这个简单的程序中得到如此奇怪的输出。程序读取一行,然后只需将其打印回新行。我故意让 io 循环无限次执行算法。
.model small
.stack 100h
.data
msg db "Write something: ", "$"
buf db 255, 0, 255 dup("$")
newline db 13, 10, "$"
.code
start:
mov ax, @data
mov ds, ax
io:
mov ah, 09h
mov dx, offset newline
int 21h
mov ah, 09h
mov dx, offset msg
int 21h
mov ah, 0Ah
mov dx, offset buf
int 21h
mov ah, 09h
mov dx, offset newline
int 21h
mov ah, 09h
mov dx, offset buf+2
int 21h
mov ah, 09h
mov dx, offset newline
int 21h
jmp io
done:
mov ah, 4Ch
int 21h
end start
【问题讨论】:
-
循环播放时您没有正确设置结尾。再次调用 0Ah 时,您不会重置缓冲区的值。从这些开始。