-2
.model  small
.stack  100H
.data

A   db   '   this is    a test $'

.code  

    mov ax, @data
    mov ds, ax 

    mov si, 0
    mov cx, 0  

myloop: 

    cmp A[si], '$'
    je final

    cmp  A[si], ' '   
    inc si
    je count
    jmp myloop

count:

    inc cx
    jmp myloop

final:

    mov dx, cx
    mov ah, 9
    int 21h

end
4

1 回答 1

0

您通过随后的“inc si”覆盖“为空白”比较的标志

.model  small
.stack  100H
.data

A   db   '   this is    a test $'

.code  

    mov ax, @data
    mov ds, ax 

    mov si, 0
    mov cx, 0  

myloop: 

    cmp A[si], '$'
    je final

    cmp  A[si], ' '   
    jne do_not_count   ; skip count if it's not a blank

count:
    inc cx             ; it is a blank, count it

do_not_count:
    inc si
    jmp myloop

final:

    ;mov dx, cx                     ; this does NOT print CX
    ;mov ah, 9
    ;int 21h

    mov dl, cl                      ; workaround: this works for cx < 10
    add dl, '0'
    mov ah, 2
    int 21h

end
于 2016-06-07T09:13:33.413 回答