📄 十六进制与十进制的互换.asm
字号:
data segment
s0 db '>>>>Press any other key to Exit.',0ah,0dh,'$'
s1 db '---- 1. DEC to HEX.',0ah,0dh,'$'
s2 db '---- 2. HEX to DEC.',0ah,0dh,'$'
s3 db 'Make a Choice: ',0dh,0ah,'$'
s4 db '*****Writen by Fang xiaolin, No. 0227340623.*****',0dh,0ah,'$'
s5 db ' ',0dh,0ah,'$'
s6 db 'Please Input the DEC number which smaller than 65535. > ',0dh,0ah,'$'
s7 db 'The HEX number is:',0dh,0ah,'$'
s8 db 'Please Input the HEX number of less than 4 digitals. > ',0dh,0ah,'$'
s9 db 'The DEC number is: ',0dh,0ah,'$'
s10 db 'The Title: Covertion between DEC and HEX.',0dh,0ah,'$'
data ends
assume cs:proc
proc segment
main proc
assume ds:data
start:
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax
lea dx,s5
call exit
lea dx,s4
call exit
lea dx,s5
call exit
lea dx,s10
call exit
lea dx,s5
call exit
lea dx,s1
call exit
lea dx,s2
call exit
lea dx,s0
call exit
lea dx,s5
call exit
lea dx,s3
call exit
mov ah,09h
call decibin
call crlf
cmp bx,1
jz D2H
cmp bx,2
jz H2D
mov ax,data
mov ds,ax
mov ah,4ch
int 21h
exit proc
mov ah,09h
int 21h
ret
exit endp
ret
main endp
D2H proc
lea dx,s6
call exit
call decibin
call crlf
lea dx,s7
call exit
call binihex
call crlf
ret
D2H endp
H2D proc
lea dx,s8
call exit
push ds
sub ax,ax
push ax
call hexibin
call crlf
lea dx,s9
call exit
call binidec
call crlf
ret
H2D endp
decibin proc
mov bx,0
new1:
mov ah,1
int 21h
sub al,30h
jl exit1
cmp al,9d
jg exit1
cbw
xchg ax,bx
mov cx,10d
mul cx
xchg ax,bx
add bx,ax
jmp new1
exit1:
ret
decibin endp
binihex proc
mov ch,4
rotate:
mov cl,4
rol bx,cl
mov al,bl
and al,0fh
add al,30h
cmp al,3ah
jl printit
add al,7h
printit:
mov dl,al
mov ah,2
int 21h
dec ch
jnz rotate
ret
binihex endp
hexibin proc
mov bx,0
new2:
mov ah,1h
int 21h
sub al,30h
jl exit2
cmp al,10d
jl add_to
sub al,27h
cmp al,0ah
jl exit2
cmp al,10h
jge exit2
add_to:
mov cl,4
shl bx,cl
mov ah,0
add bx,ax
jmp new2
exit2: ret
hexibin endp
binidec proc
mov cx,10000d
call dec_div
mov cx,1000d
call dec_div
mov cx,100d
call dec_div
mov cx,10d
call dec_div
mov cx,1d
call dec_div
ret
dec_div proc
mov ax,bx
mov dx,0
div cx
mov bx,dx
mov dl,al
add dl,30h
mov ah,2h
int 21h
ret
dec_div endp
binidec endp
crlf proc
mov dl,0ah
mov ah,2h
int 21h
mov dl,0dh
mov ah,2h
int 21h
ret
crlf endp
proc ends
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -