【发布时间】:2021-11-11 07:02:13
【问题描述】:
为什么当我尝试获取我的输出时,只能得到原始输入缓冲区的一半(甚至更少)?
一开始我输入随机符号,当我将它们传输到新缓冲区时,结果我得到了原来缓冲区的一半,我不知道为什么
这些是我的代码的一部分:
我的数据段:
.data
buff db 255,?,255 dup("$")
result db 255,?,255 dup(" ")
_result db "Result: $"
endl db 13,10,"$"
我用 int21,0Ah 扫描:
mov ah, 0Ah
mov dx, offset buff
int 21h
这里我将符号转移到另一个缓冲区
loop_tranfer:
mov ah, [si] ;source buffer
mov [ di ], ah ;ah move to result buffer
inc di ;increase destination index
inc si ;increase source index
loop loop_tranfer
在这里我想得到一个结果,但我不能
mov ah, 09h
mov dx, offset _result ;message "Result:"
int 21h
mov ah, 40h
mov bx, 1
xor cx, cx
mov cl, result+1
mov dx, offset result ; result ; here I get less than than entered
int 21h
mov ax, 4c00h ;exit
int 21h
end start
【问题讨论】:
-
有什么建议吗?
-
loop uses cx,您显示的 sn-ps 在循环之前没有将任何有意义的内容放入 cx 中。