编写要用作字典的汇编程序。用户提供单词并且程序检查该单词是否存在。 TASM,16位。程序适用于数组的前两个元素,但是如果我提供balls.
,则数组的第3个元素,即使正在选择数组的下一个元素,(在emu8086
上验证,{{ 1}}变为bx
, - >参考代码&lt ;-),007ch
仍然在单次尝试后完成检查。 可以正常使用数组的前两个元素。这是我的代码
程序第一次检查长度,然后检查位。
repe cmpsb
答案 0 :(得分:1)
inc words ;next word in the array
不,抱歉。你增加了({是})w0
的偏移量。您还没有移动到数组中的下一个单词。你想要更像......的东西
mov bx, offset words
top:
; get offset of a string
mov si, [bx]
; do your comparison
; start at beginning of input every time
mov di, offset buf + 2 ; don't need a separate operation
mov cl, count ; (are we sure ch is clear?)
repe cmpsb
je found
; no? get next offset in words array
add bx, 2
jmp top
mov bx, offset words
top:
; get offset of a string
mov si, [bx]
; do your comparison
; start at beginning of input every time
mov di, offset buf + 2 ; don't need a separate operation
mov cl, count ; (are we sure ch is clear?)
repe cmpsb
je found
; no? get next offset in words array
add bx, 2
jmp top
在你寻找'。'的循环中,如果讨厌的用户没有输入'。'会发生什么?在中断返回后,输入缓冲区中的第二个字节(buf + 1)是实际输入的计数。它包括'。' (如果有的话)和结束输入的回车(13或0Dh)。您可以使用此信息来排除明显不正确的输入。