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

我的博客

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

[2010-09-12 10:23] 习题4.28

请编写一个程序实现如下功能:把内存单元F000:0000H开始的1024个字节作为有符号数, 分别统计其中的正数、负数和零的个数,并显示。

答:
;-----------------------------------------------------
assume        cs:code,ss:stack,ds:data
data        segment
symbol        db        'pos neg zero',0dh,0ah,'$'
posnum        dw        0
negnum        dw        0
zero        dw        0
tab        dw        offset posnum,offset negnum,offset zero
data        ends
stack        segment stack
        dw 128 dup (0)
stack        ends
code        segment
start:
        mov ax,data
        mov ds,ax
        mov ax,0f000h
        mov es,ax
        mov bx,0
        mov cx,1024
L1:        
        mov al,es:[bx]
        cmp al,0
        jl n
        jg p
        inc zero
        jmp jx
n:        inc negnum
        jmp jx
p:        inc posnum
jx:        inc bx
        loop L1
;
        mov dx,offset symbol
        mov ah,9
        int 21h
        mov di,offset tab
        mov cx,lengthof tab
L2:        mov bx,[di]
        mov ax,[bx]
        xor dx,dx
        call hex2dec
        mov dl,20h
        mov ah,2
        int 21h
        add di,2
        loop L2

        mov ah,4ch
        int 21h
;
hex2dec        proc uses bx cx si 
        mov bx,10                
        mov cx,0                
        mov si,0
_do:        
        cmp ax,10
        jb _ok
        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
        jmp _do
_ok:        
        add al,30h
        push ax
        inc si
        mov cx,si
_show:        
        pop dx
        mov ah,2
        int 21h
        loop _show
        ret
hex2dec        endp
;
code        ends
end        start
;-----------------------------------------------------
评论次数(0)  |  浏览次数(328)  |  类型(汇编习题集) |  收藏此文  | 
 
 请输入验证码  (提示:点击验证码输入框,以获取验证码