我在汇编过程中有一个任务来计算字符串中的单词数,我需要将我的答案保存在cx寄存器中。 (我正在使用80x86处理器)
所以我设定了:
cx为0 - 这将是我的计数器
bx为0 - 这将是我的索引
我想知道我是否正确使用它,这是我的代码:
.model small
.stack 100h
.data
A db ' this is a test $'
B db 100 dup('$')
.code
mov ax, @data
mov ds, ax
mov cx, 0
mov bx, 0
looping:
cmp A[bx], ' '
jne foundchar
inc bx
jmp looping
foundchar:
inc bx
cmp A[bx], ' '
je foundword
cmp A[bx], '$'
je soff
jmp foundchar
foundword:
inc cx
inc bx
jmp looping
soff:
.exit
end
我班上的其他人也做了不同的事,她把si设置为A的偏移... 我真的不明白这个解决方案:
mov cx,0
mov si, offset A
mov dl,0
next2:
inc si
mov dl,[si]
cmp dl,"$"
JE soff
cmp dl, " "
JE test1 ;if the char is space so lets check what is before the char
jmp next2 ; if the char no space jump back to the loop
test1:
mov al,[si-1]
cmp al, ' '
je next2
add cx,1
jmp next2
soff:
mov al,[si-1]
cmp al,' '
je sofsofi
add cx,1
sofsofi:
.exit
end
请帮助我理解它,以及更合适的方法。
感谢分配