汇编网首页登录博客注册
masmaster的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
文章收藏

[2010-09-23 10:27] 习题5.32

写一个程序统计当前屏幕上字母的个数。

答:
;----------------------------------------------------;
assume        cs:code,ds:data
data        segment
char        dw        0
msg        db        'Numbers of charctor:$'
data        ends
code        segment
start:
        mov ax,data
        mov ds,ax
        mov ah,2
        mov dx,0
        int 10h
        mov cx,80*25
begin:        
        mov ah,8
        mov bh,0
        int 10h        
        cmp al,41h
        jb jx
        cmp al,5ah
        ja xx
        inc char
        jmp jx
xx:        cmp al,61h
        jb jx
        cmp al,7ah
        ja jx
        inc char
jx:        inc dl
        cmp dl,79
        ja newline
        mov ah,2
        int 10h
        dec cx
        jcxz ok
        jmp begin
newline:
        inc dh
        mov dl,0
        mov ah,2
        int 10h
        dec cx
        jcxz ok
        jmp begin
                
ok:        push char
        mov dx,offset msg
        mov ah,9
        int 21h
        pop ax
        xor dx,dx
        call show        
        mov ah,4ch
        int 21h
;
show        proc 
        mov bx,10
        mov si,0
_divdw:
        push ax
        mov ax,dx
        xor dx,dx
        div bx
        mov cx,ax
        pop ax
        div bx
        add dl,30h
        push dx
        inc si
        mov dx,cx
        cmp ax,10
        jb _ok
        jmp _divdw
_ok:
        and ax,0fh
        cmp ax,0
        jz _pop
        add al,30h
        push ax
        inc si
_pop:        
        mov cx,si
_disp:
        pop dx
        mov ah,2
        int 21h
        loop _disp
        ret
show        endp
;
code        ends
end        start
;----------------------------------------------------;
评论次数(0)  |  浏览次数(534)  |  类型(汇编习题集) |  收藏此文  | 
 
 请输入验证码  (提示:点击验证码输入框,以获取验证码