;子程序名:B2TOBCD
;
输入参数:AX=十六位二进制数
;
输出参数:CF=0,则AX=四位压缩型BCD码。CF=1,则要转换的数大于9999,AX不变。
;
使用寄存器:CX:存放除数,DX:存放中间结果。

B2TOBCD    PROC    FAR
    CMP        AX
,9999
    JBE        TRAN    
;低于等于/不高于时转移
    STC                ;置CF=1
    JMP        EXIT
TRAN:
    PUSH    CX
    PUSH    DX
    SUB        DX
,DX    ;DX清零
    MOV        CX,1000    ;计算千位数
    DIV        CX        ;(AX)<--(DX)(AX)/OPRD,(DX)<--(DX)(AX) MOD OPRD;1字=2字节
    XCHG    AX,DX    ;商在DX中,余数在AX中
    MOV        CL,4
    SHL        DX
,CL    ;DX左移4位
    MOV        CL,100    ;计算百位数
    DIV        CL        ;(AL)<--(AX)/OPRD,(AH)<--(AX)MOD OPRD
    ADD        DL,AL    ;百位数加到DL中
    MOV        CL,4
    SHL        DX
,CL    ;DX左移4位
    XCHG    AL,AH    ;余数保存在AL中
    SUB        AH,AH    ;AH清零
    MOV        CL,10    ;计算十位数
    DIV        CL
    ADD        DL
,AL
    MOV        CL
,4
    SHL        DX
,CL
    ADD        DL
,AH    ;加个位数
    MOV        AX,DX    ;结果送到AX中
    POP        DX
    POP        CX
EXIT:
    RET
B2TOBCD    ENDP
Posted on 2010-10-31 12:11 JimmyZhang 阅读(211) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理