计算字符串中的空格,它会打印字符串,CX 保持 0.组件 8086


.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

您用随后的"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

最新更新