在汇编中增加数组

时间:2013-10-07 19:35:30

标签: arrays assembly x86 tasm

使用tasm,16bit,我正在尝试制作一本字典(目前限于6个单词,所有单词为5个字符)。 输入单词后输入完整停止。我已将我的文字存储在数组中,但我无法检查数组中的下一个元素(增加它)。我已提到this question作为参考但无济于事。

这是我的代码

.model large
.data
ind db 00d
nl db 10d,13d,'$'
mne db "Not Equal$"
me db "Equal$"
buf 99,?,99 dup(?)
w0 db "hello$"
w1 db "which$"
w2 db "balls$"
w3 db "table$"
w4 db "chair$"
w5 db "apple$"
words db offset w0,db offset w1,db offset w2,db offset w3
      db offset w4,offset w5
.code

main proc

mov ax,@data
mov ds,ax
mov es,ax

;mov si,byte ptr words

;take user input
mov ah,0ah
mov dx,offset buf
int 21h

mov ah,09h
mov dx,offset nl
int 21h

mov di,offset buf
add di,2

;//checkbuflength
lenchck:
mov bx,0
again:
mov al,[di]
cmp al," "
je wrong
inc bl
inc di
cmp al,"."
jne skip
cmp bl,06d ;+1 total char count (including fullstop)
je stringmatch
jmp wrong
skip:    
jmp again

;//end check
stringmatch:
mov di,offset buf
add di,2

;mov si,offset words
mov bx,0
mov bl,byte ptr words
mov si,bx
mov cx,05d
repe cmpsb
je equal

inc byte ptr words,1
inc ind
cmp ind,07d
je wrong
mov di,offset buf
add di,2
jmp stringmatch

wrong:
mov dx,offset mne
jmp print

equal:
mov dx,offset me
print:
mov ah,09h
int 21h

mov ah,4ch
int 21h

main endp
end main

程序首先通过将其与句号()进行比较来检查长度,如果不相等则打印不等于,如果长度相等,那么它检查输入的字符。

需要紧急援助。

0 个答案:

没有答案