⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 transmit.asm

📁 这个是个数字转换
💻 ASM
字号:
datarea segment 
mesg1 db 'Please input a number(1,2,3,4,5,6) to select style:',13,10 
db '1.bin to hex',13,10 
db '2.hex to bin',13,10 
db '3.dec to bin',13,10 
db '4.bin to dec',13,10 
db '5.hex to dec',13,10 
db '6.dec to hex',13,10,'$' 
mesg2 db 'You have input a invalid number!Please select again:',13,10,'$' 
mesg3 db 'Please input a bin number:',13,10,'$' 
mesg4 db 'Please input a dec number:',13,10,'$' 
mesg5 db 'please input a hex number:',13,10,'$' 
mesg6 db 'Its bin number is',13,10,'$' 
mesg7 db 'Its dec number is',13,10,'$' 
mesg8 db 'Its hex number is',13,10,'$' 
datarea ends 
prognam segment 
main proc far 
assume cs:prognam,ds:datarea 
start:	push ds 
	xor ax,ax 
	push ax 
	mov ax,datarea 
	mov ds,ax 
again: 	lea dx,mesg1 
	mov ah,09h 
	int 21h 
repeat: 
	mov ah,1 
	int 21h 
	cmp al,31h 
	je L1 
	cmp al,32h 
	je L2 
	cmp al,33h 
	je L3 
	cmp al,34h 
	je L4 
	cmp al,35h 
	je L5 
	cmp al,36h 
	je L6 
	lea dx,mesg2 
	mov ah,9 
	int 21h 
	jmp repeat 


L1: 
	call binhex 
	call crlf 
	jmp again 
L2: 
	call hexbin 
	call crlf 
	jmp again 
L3: 
	call decbin 
	call crlf 
	jmp again 
L4: 
	call bindec 
	call crlf 
	jmp again 
L5: 
	call hexdec 
	call crlf 
	jmp again 
L6: 
	call dechex 
	call crlf 
	jmp again 
ret 
main endp 

binhex proc near 
	xor ax,ax 
	mov bx,ax 
	lea dx,mesg3 
	mov ah,9 
	int 21h 
	mov si,4 
newchar1:
	mov ah,1 
	int 21h 
	sub al,30h 
	jl rotate1 
	cmp al,10d 
	jl add_to1 
	jmp rotate1 

add_to1:
	mov cl,1 
	shl bx,cl 
	mov ah,0 
	add bx,ax 
	jmp newchar1 
rotate1: 
	lea dx,mesg8 
	mov ah,9 
	int 21h 

rotate1_1: 
	mov cl,4 
	rol bx,cl 
	mov al,bl 
	and al,0fh 
	add al,30h 
	cmp al,3ah 
	jl print1 
	add al,7h 
print1: 
	mov dl,al 
	mov ah,2 
	int 21h 
	dec si 
	jnz rotate1_1 
ret 

binhex endp 

hexbin proc near 
	mov bx,0 
	lea dx,mesg5 
	mov ah,9 
	int 21h 
	mov si,16 
newchar2: 
	mov ah,1 
	int 21h 
	sub al,30h 
	jl print2 
	cmp al,10d 
	jl add_to2 

	sub al,27h 
	cmp al,0ah 
	jl print2 
	cmp al,10h 
	jge print2 
add_to2: 
	mov cl,4 
	shl bx,cl 
	mov ah,0 
	add bx,ax 
	jmp newchar2 

	lea dx,mesg6 
	mov ah,9 
	int 21h 
print2: 
	rol bx,1 
	mov al,bl 
	and al,1h 
	add al,30h 
	mov dl,al 
	mov ah,2 
	int 21h 
	dec si 
	jnz print2 
ret 
hexbin endp 

decbin proc near 
	lea dx,mesg4 
	mov ah,9 
	int 21h 
	mov bx,0 
newchar3: 
	mov ah,1 
	int 21h 
	sub al,30h 
	jl print3 
	cmp al,9d 
	jg print3 
	cbw 
	xchg ax,bx 
	mov cx ,10d 
	mul cx 
	xchg ax,bx 
	add bx,ax 
	jmp newchar3 
print3:
	lea dx,mesg6 
	mov ah,9 
	int 21h 
	rol bx,1 
	mov al,bl 
	and al,1h 
	add al,30h 
	mov dl,al 
	mov ah,2 
	int 21h 
	dec si 
	jnz print3 
	ret 
decbin endp 

bindec proc near 
	lea dx,mesg3 
	mov ah,9 
	int 21h 
newchar4: 
	mov ah,1 
	int 21h 
	sub al,30h 
	jl print4 
	cmp al,10d 
	jl add_to4 
	jmp print4 
add_to4: 
	mov cl,1 
	shl bx,cl 
	mov ah,0 
	add bx,ax 
	jmp newchar4 
print4: 
	lea dx,mesg7 
	mov ah,9 
	int 21h ;display dec 
	mov cx,10000d 
	call dec_div4 
	mov cx,1000 
	call dec_div4 
	mov cx,100 
	call dec_div4 
	mov cx,10 
	call dec_div4 
	mov cx,1 
	call dec_div4 
	ret 

dec_div4 proc near 
	mov ax,bx 
	mov dx,0 
	div cx 
	mov bx,dx 
	mov dl,al 
	add dl,30h 
	mov ah,2 
	int 21h 
	ret 
dec_div4 endp 
bindec endp 

hexdec proc near 
	lea dx,mesg5
	mov ah,9 
	int 21h 
	mov bx,0 
newchar5: 
	mov ah,1 
	int 21h 
	sub al,30h 
	jl next5 
	cmp al,10d 
	jl add_to5 
	sub al,27h 
	cmp al,0ah 
	jl next5 
	cmp al,10h 
	jge next5 
add_to5: 
	mov cl,4 
	shl bx,cl 
	mov ah,0 
	add bx,ax 
	jmp newchar5 
next5: 
	lea dx,mesg7 
	mov ah,9 
	int 21h ;display dec 
	mov cx,10000d 
	call dec_div5 
	mov cx,1000d 
	call dec_div5 
	mov cx,100d 
	call dec_div5 
	mov cx,10d 
	call dec_div5 
	mov cx,1d 
	call dec_div5 
	ret 
hexdec endp 

dec_div5 proc near 
	mov ax,bx 
	mov dx,0 
	div cx 
	mov bx,dx 
	mov dl,al 
	add dl,30h 
	mov ah,2 
	int 21h 
	ret 
dec_div5 endp 


dechex proc near 
	lea dx,mesg7 
	mov ah,9 
	int 21h 
	mov bx,0 
newchar6: 
	mov ah,1 
	int 21h 
	sub al,30h 
	jl next6 
	cmp al,9d 
	jg next6 
	cbw 
	xchg ax,bx 
	mov cx,10d 
	mul cx 
	xchg ax,bx 
	add bx,ax 
	jmp newchar6 
next6: 
	mov si,4 
	lea dx,mesg8 
	mov ah,9 
	int 21h 
rotate6: 
	mov cl,4 
	rol bx,cl 
	mov al,bl 
	and al,0fh 
	add al,30h 
	cmp al,3ah 
	jl print6 
	add al,7h 
print6: 
	mov dl,al 
	mov ah,2 
	int 21h 
	dec ch 
	jnz rotate6 
	ret 
	dechex endp 

crlf proc near 
	mov dl,13 
	mov ah,2 
	int 21h 
	mov dl,10 
	mov ah,2 
	int 21h 
	ret 
crlf endp 
prognam ends 
	end start

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -