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

我的博客

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

[2010-09-07 11:16] 习题4.15

请编写程序:把32位无符号二进制数转换为对应十进制数ASCII码串。作为入口参数的指示地址存放ASCII码串缓冲区首地址又段值和偏移组成。

答:
;-----------------------------------------------------
assume        cs:code,ds:data,ss:stack
data        segment
;定义32位二进制数num
num        dd        10101010100011110001010101010101b
;预留存放十进制空间
msg        db        10 dup (0)
data        ends
stack        segment stack
        dw 128 dup (0)
stack        ends
code        segment
start:        
        mov ax,data
        mov ds,ax
        push ds                 ;段地址入栈
        mov ax,offset num
        push ax                 ;偏移地址入栈
        call conv               ;调用子程序
        mov ah,4ch              ;返回dos
        int 21h
;子程序名:conv
;功能:将23位二进制数转换成十进制数ASCII并显示出来
;入口参数:二进制数所在串地址的段值和偏移
;出口参数:无
;注意事项:1,堆栈平衡。2,除法溢出。
conv        proc far                ;段间远转移
        push bp                 ;保存基址指针
        mov bp,sp               ;
        push ds                 ;保护DS
        push si                 ;保护SI
        mov ds,[bp+8]           ;第一入口参数赋值给DS
        mov si,[bp+6]           ;第二入口参数赋值给SI
        mov dx,[si+2]           ;高16位赋值给DX
        mov ax,[si]                ;低16位赋值给AX
        mov bx,10               ;除数
        mov di,offset msg       ;存放首地址
        xor cx,cx               ;中转器清零
htod:        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
        mov [di],dl
        mov dx,cx
        inc di
        jmp short htod
ok:        mov [di],al
        add byte ptr [di],30h
;显示十进制ASCII码串
disp:        mov dl,[di]               
        cmp dl,30h
        jb done
        cmp dl,39h
        ja done
        mov ah,2
        int 21h
        dec di
        jmp short disp        

done:        pop si               ;恢复所用寄存器
        pop ds
        pop bp
        ret 4                ;堆栈由子程序平衡
conv        endp
code        ends
end        start
;-----------------------------------------------------
评论次数(0)  |  浏览次数(315)  |  类型(汇编习题集) |  收藏此文  | 
 
 请输入验证码  (提示:点击验证码输入框,以获取验证码