david638 发表于 2007-12-11 21:42

求解一题目

输入一个6位的八进制数字,用逻辑和位移指令将其转换为二进制数出,再转换成4位16进制数。
望高手助一臂之力
在此谢过……

yiyuandao 发表于 2007-12-12 23:50

hexidec          segment             ; 8-->2-->16
                 assume cs: hexidec
main             proc   far
start:           push   ds
               sub    ax, ax
                 push   ax
repeat:
              call   hexibin      ; 8-->2
              call   crlf
              call   bintosixteen     ; 2-->16
              call   crlf
              jmp    repeat
              ret
main            endp
out1:        mov ax,4c00h
        int 21h
;************************************************************
;八进制转换成二进制
hexibin         proc  near  
                mov   bx, 0
newchar:         mov   ah, 1
               int   21h
               cmp al,1bh             ;如果按的是ESC则退出程序
              jz   out1
               sub   al, 30h
               jl    exit
               cmp   al, 8
               jl    add_to
               jmp   newchar
add_to:
              mov   cl, 3
              shl   bx, cl
              mov   ah, 0
              add   bx, ax
              jmp   newchar
exit:           ret
hexibin   endp
;*********************************************************
;二进制转换成十六进制
bintosixteen  proc
                mov cl,4
                mov ch,4
output:                 rol bx,cl
                mov al,bl
                 and al,0fh
                add al,30h
                cmp   al, 3ah
                  jl    print
                  add   al, 7
print:                mov dl,al
                mov ah,2
                int 21h
                dec ch
                jnz output
                ret
bintosixteen  endp                               
;*********************************************************               
;输出回车换行
crlf    proc  near
        mov   dl, 0dh
        mov   ah, 2
        int   21h
        mov   dl, 0ah
        mov   ah, 2
        int   21h
        ret
crlf    endp
hexidec  ends
         end    start
;和你的题目差不多了

david638 发表于 2007-12-13 19:15

致谢

谢了啊……

页: [1]

编程论坛