db?'*?1.Input?Binary?Number:*',0dh,0ah
db?'*?2.Input?Hex?Number:*',0dh,0ah
db?'*?3.exit*',0dh,0ah
db?'*************************',0dh,0ah,'$'
msg1?db?0dh,0ah,'Input?Binary?Number:$' msg2?db?0dh,0ah,'Input?Hex?Number:$' res1?db?0dh,0ah,'Convert2Hex?Number:$' res2?db?0dh,0ah,'Convert2Bin?Number:$' crlf?db?0dh,0ah,'$'dseg?ends
cseg?segment
assume?cs:cseg,?ds:dseg
start:
mov?ax,?dseg mov?ds,?axm0:
mov?ah,9 lea?dx,?msg0 int?21h mov?ah,?7 int?21h cmp?al,'1' jb?m0 cmp?al,'3' ja?m0 mov?ah,0eh int?10h and?al,0fh cmp?al,1 jz?m1 cmp?al,2 jz?m2 cmp?al,3 jz?m3m1:
mov?ah,9 lea?dx,?msg1 int?21h call?readBin mov?ah,9 lea?dx,?res1 int?21h call?printHex jmp?m0m2:
mov?ah,9 lea?dx,?msg2 int?21h call?readHex mov?ah,9 lea?dx,?res2 int?21h call?printBin jmp?m0m3:
mov?ah,4ch int?21hreadBin?proc?near
mov?bx,?0 mov?cx,?16b0:
mov?ah,7 int?21h cmp?al,0dh jz?b1 cmp?al,'0' jb?b0 cmp?al,'1' ja?b0 mov?ah,0eh int?10h and?ax,01h shl?bx,1 add?bx,ax dec?cx jnz?b0b1:
retreadBin?endp
printBin?proc?near
mov?cx,16 mov?ah,0ehp1:
rol?bx,1 mov?al,bl and?al,1 xor?al,30h int?10h loop?p1 retprintBin?endp
readHex?proc?near
mov?bx,0 mov?cx,404hh0:
mov?ah,7 int?21h cmp?al,0dh jz?h6 cmp?al,'0' jb?h0 cmp?al,'9' ja?h1 mov?ah,0eh int?10h and?al,0fh jmp?h5h1:
cmp?al,'A' jb?h0 cmp?al,'F' ja?h2 mov?ah,0eh int?10h sub?al,37H jmp?h5h2:
cmp?al,'a' jb?h0 cmp?al,'f' ja?h0 mov?ah,0eh int?10h sub?al,57Hh5:
shl?bx,cl add?bl,al dec?ch jnz?h0h6:
retreadHex?endp
printHex?proc?near
mov?cx,404h mov?ah,0eh mov?dx,?bx lea?bx,?hextbp0:
rol?dx,?cl mov?al,?dl and?al,0fh xlat int?10h dec?ch jnz?p0 retprintHex?endp
cseg?ends
end?start