![]() |
#2
yiyuandao2007-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 ;和你的题目差不多了 |
输入一个6位的八进制数字,用逻辑和位移指令将其转换为二进制数出,再转换成4位16进制数。
望高手助一臂之力
在此谢过……