在汇编中增加数组

时间:2013-10-07 21:53:49

标签: arrays assembly x86 tasm

编写要用作字典的汇编程序。用户提供单词并且程序检查该单词是否存在。 TASM,16位。程序适用于数组的前两个元素,但是如果我提供balls.,则数组的第3个元素,即使正在选择数组的下一个元素,(在emu8086上验证,{{ 1}}变为bx, - >参考代码&lt ;-),007ch仍然在单次尝试后完成检查。 可以正常使用数组的前两个元素。这是我的代码 程序第一次检查长度,然后检查位。

提供句点()时,结束长度检查。

repe cmpsb

1 个答案:

答案 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)。您可以使用此信息来排除明显不正确的输入。