搜档网
当前位置:搜档网 › 十进制到十六进制和二进制的转换

十进制到十六进制和二进制的转换






DATAS SEGMENT
x dw 0
mess1 db 0dh,0ah,'make a choice$'
mess2 db 0dh,0ah,'1.dec to bin to hex$'
mess3 db 0dh,0ah,'2.hex to dec$'
messa db 0dh,0ah,'please choose$'
mess11 db 0dh,0ah,'input dec=$'
mess22 db 0dh,0ah,'out hex=$'
mess33 db 0dh,0ah,'out bin=$'
mess111 db 0dh,0ah,'hex=$'
mess222 db 0dh,0ah,'de=$'
de db '0123456789'
hex db '0123456789ABCDEF'
bin db'01'

;此处输入数据段代码
DATAS ENDS

STACKS SEGMENT
db 100h dup(0) ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
leta: mov dx,offset mess1
mov ah,9
int 21h
mov dx,offset mess2
mov ah,9
int 21h
mov dx,offset mess3
mov ah,9
int 21h
mov dx,offset messa

mov ah,9
int 21h
mov ah,1
int 21h
mov ah,9
int 21h
cmp al,'1'
jz prog1
jmp prog2
prog1:
let0:mov x,0
mov dx,offset mess11
mov ah,9
int 21h
call let1
call let2
call let3
jmp let0
let1:mov ah,1
int 21h
cmp al,27
jz out1
sub al,30h
jl exit
cmp al,9
jg exit
mov ah,0
xchg ax,x
mov cx,10
mul cx
xchg ax,x
add x,ax
jmp let1
exit:ret
let2:mov dx,offset mess22
mov ah,9
int 21h
mov bx,x
mov ch,4
mov cl,4
rept1:rol bx,cl
mov al,bl
and ax,000fh
mov si,ax
mov dl,hex[si]
mov ah,2
int 21h
dec ch
jnz rept1
ret

let3:mov dx,offset mess33
mov ah,9
int 21h
mov bx,x
mov ch,16
mov cl,1
rept2:rol bx,cl
mov al,bl
and ax,01b
mov si,ax
mov dl,bin[si]
mov ah,2
int 21h
dec ch
jnz rept2
ret
jmp leta
prog2:
let00: mov x,0
mov bx,0
call let111
call let222
jmp let00
let111:mov dx,offset mess111
mov ah,9
int 21h
inc bx
cmp bx,4
jg exit
mov ah,1
int 21h
cmp al,27
jz out1
cmp al,'0'
jl out1
cmp al,'9'
jle small1

cmp al,'A'
jl out1
cmp al,'F'
jle small2
cmp al,'a'
jl out1
cmp al,'f'
jg out1
sub al,20h
small2:sub al,7
small1:sub al,30h
mov ah,0
xchg ax,x
mov cx,16
mul cx
xchg ax,x
add x,ax
jmp let111

exit1: ret
let222:mov dx,offset mess222
mov ah,9
int 21h
mov ax,x
mov dx,0
mov x,10000
mov cx,x
div cx
mov bx,dx
mov si,ax
mov dl,de[si]
mov ah,2
int 21h
mov ax,bx
mov dx,0
mov x,1000
mov cx,x
div cx
mov bx,dx
mov si,ax
mov dl,de[si]
mov ah,2
int 21h
mov ax,bx
mov dx,0
mov x,100
mov cx,x
div cx
mov bx,dx

mov si,ax
mov dl,de[si]
mov ah,2
int 21h
mov ax,bx
mov dx,0
mov x,10
mov cx,x
div cx
mov bx,dx
mov si,ax
mov dl,de[si]
mov ah,2
int 21h
mov ax,bx
mov dx,0
mov x,1
mov cx,x
div cx
mov bx,dx
mov si,ax
mov dl,de[si]
mov ah,2
int 21h
mov ax,bx
mov dx,0
ret
jmp leta
out1:MOV AH,4CH
INT 21H
CODES ENDS
END START



相关主题