1.从键盘输入一个字符串(长度不超过30),统计字符串中非数字的个数,并将统计的结果显示在屏幕上,用EXE格式实现。

1.从键盘输入一个字符串(长度不超过30),统计字符串中非数字的个数,并将统计的结果显示在屏幕上,用EXE格式实现。

data segment
  str db 30,?,30 dup(?)  ;0字节规定缓冲区大小,1字节存储实际输入字符数,从第2个字节开始存放
  crlf db 0ah,0dh,'$'     ;换行
data ends
code segment
  assume cs:code,ds:data
  main proc far
start:
    mov ax,data
    mov ds,ax

    lea dx,str
    mov ah,0ah
    int 21h

    lea si,str+2      ;字符串首地址,转成字符数组
    mov cl,str+1    ;字符串长度
    mov al,0          ;记录数字 
    mov ch,0         ;清零
L1:
    mov dl,[si]        ;寄存器间接寻址方式
    cmp dl,'0'         ;<0
    jb L2
    cmp dl,'9'         ;   >9
    ja L2
    cmp dl,'9'         ;  0~9
    jbe L3
L2:
    inc al
L3:
    inc si
    loop L1

    lea dx,crlf          ;换行
    mov ah,09h
    int 21h

    mov dl,al           ;al记录数是否大于9
    cmp dl,9h
    jbe L4

    mov ah,0            ;大于9转成10进制显示输出 
    mov bl,10
    div bl                  ;ax中的数做除数

    mov dl,al
    add dl,30h          ;+30h,先输出商al(dx)
    mov ah,02h
    int 21h
    mov dl,ah           ;再输出余数ah(ax)
L4:
    add dl,30h
    mov ah,02h
    int 21h

    mov ax,4c00h
    int 21h

    main endp
code ends
end start

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