是否可以使用bx寄存器来保存索引?

时间:2014-05-31 21:01:48

标签: assembly

我在汇编过程中有一个任务来计算字符串中的单词数,我需要将我的答案保存在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 

请帮助我理解它,以及更合适的方法。

感谢分配

0 个答案:

没有答案