回 帖 发 新 帖 刷新版面

主题:请教一个问题!!

编程实现一个十进制数(0——65535)转换成十六进制数。
要求:十进制数由键盘输入,结果在屏幕上显示出来。

回复列表 (共1个回复)

沙发


data    segment
data    ends
;*************************
code    segment
    assume    cs:code,ds:data,es:data
main    proc
start:
    mov    ax,data
    mov    ds,ax
    mov    es,ax
    call    decibin
    mov    ah,02
    mov    dl,0ah
    int    21h
    mov    ah,02
    mov    dl,0dh
    int    21h
    call    binihex
exit:
    mov    ah,4ch
    int    21h
main    endp
;-------------------------------
decibin    proc    near    uses ax dx    
    mov    bx,0
newchar:
    mov    ah,1h
    int    21h
    sub    al,30h
    jl    dib_re
    cmp    al,9
    jg    dib_re
    cbw            

    xchg    ax,bx
    mov    cx,10

    mul    cx
    xchg    ax,bx

    add    bx,ax    
    jmp    newchar
dib_re:
    ret
decibin    endp
;-------------------------------
binihex    proc    near    uses    ax cx dx
    mov    ch,4
rotate:
    mov    cl,4
    rol    bx,cl
    mov    al,bl
    and    al,0fh
    add    al,30h
    cmp    al,3ah
    jl    print
    add    al,7h
print:
    mov    dl,al
    mov    ah,2
    int    21h
    dec    ch
    jnz    rotate
    ret
binihex    endp
;----------------------------------
code    ends
;-------------------------------
    end    start

我来回复

您尚未登录,请登录后再回复。点此登录或注册