汇编语言: 从键盘上输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,

从键盘上输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示 计数结果。

data segment
buf db 101,?,101 dup (?)
data ends

stack segment stack
dw 20h dup(?)
top label word
stack ends

code segment
    assume ds:data,cs:code,ss:stack
    p proc far 

    mov ax,data
    mov ds,ax

    mov ax,stack
    mov ss,ax
    lea sp,top

    ;输入到缓冲区
    lea dx,buf
    mov ah,0ah  
    int 21h
    ;cx=输入的个数 si=指向缓冲区的开头
    lea si,buf
    inc si
    mov cx,[si]     
    xor bx,bx

l1: inc si
    cmp BYTE PTR[si],'0'
    jb l1
    cmp BYTE PTR[si],'9'
    ja l1
    inc bl
    loop l1 

    ;输出结果
    mov cx,8
input:
    rol bl,1
    mov dl,bl
    and dl,1
    add dl,30h
    mov ah,02h
    int 21h
    loop input

exit:
    mov ah,4ch
    int 21h

    p endp
code ends 
    end p

你可能感兴趣的:(汇编语言)