+ -
当前位置:首页 → 问答吧 → 用汇编输入一串字符,并显示字符,并统计输出字符个数,,,,跪求……

用汇编输入一串字符,并显示字符,并统计输出字符个数,,,,跪求……

时间:2011-06-26

来源:互联网

用汇编,输入一串字符,并显示字符,并统计输出字符个数

作者: ddj008   发布时间: 2011-06-26

Assembly code
assume    cs:code,ds:data
data    segment
buff    db    100 dup (0)                 ;预设输入缓冲100字符
msg1    db    'Your input string is:$'    ;
msg2    db    'Numbers of character:$'    ;提示信息
data    ends
code    segment
start:
    mov ax,data
    mov ds,ax
    mov bx,offset buff                  ;输入地址首地址
    mov cx,0                            ;字符计数器
    mov ah,1                            ;dos 1号中断
s:
    int 21h                             ;调用
    cmp al,0dh                          ;如果是回车结束输入
    jz done
    mov [bx],al                         ;否则将输入字符放入缓冲区
    inc bx                              ;指向下一个地址
    inc cx                              ;计数器加1
    jmp s
done:
    push cx                             ;输入结束,保存字符个数
    mov byte ptr [bx],'$'               ;置字符串结尾标识

    mov ah,9                            ;用dos 21H 9号功能打印字符串

    mov dx,offset msg1                  ;提示信息
    int 21h
    
    mov dx,offset buff                  ;打印字符串
    int 21h
    
    call crlf                           ;打印回车

    mov dx,offset msg2                  ;提示信息
    int 21h

    pop dx                              ;恢复字符个数

    call dispdec                        ;调用子程序打印字符个数

    mov ah,4ch                          ;程序结束
    int 21h
;回车子程序
crlf    proc uses ax dx
    mov ah,2
    mov dl,0dh
    int 21h
    mov dl,0ah
    int 21h
    ret
crlf    endp
;打印十进制子程序
;input:dx
dispdec    proc uses ax bx cx dx
    mov ax,dx
    xor dx,dx
    mov bx,10
    mov cx,0
d1:    cmp ax,10
    jb ok
    div bx
    add dl,30h
    push dx
    xor dx,dx
    inc cx
    jmp d1
ok:    add al,30h
    push ax
    inc cx
d2:    pop dx
    mov ah,2
    int 21h
    loop d2
    ret
dispdec    endp
;

code    ends
end    start

作者: masmaster   发布时间: 2011-06-26