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

📄 二进制输出 为十进制.asm

📁 汇编子程序 大学课程设计需求者的最爱
💻 ASM
字号:
;功能:将寄存器中的二进制数输出为十进制
;参数: bx    寄存器
;返回值:   无

binidec proc far 
	push si
	push ax
	push bx
	push cx
	push dx

	call clf		;回车换行	
	
	cmp bx,0           ;为0的情况
	jnz fuck
	mov dl,'0'
	mov ah,2
	int 21h
	jmp re

fuck:	mov cx,10000d        ; 最高位除10000余数为下一位的数值
	call decdiv
	mov cx,1000d      
	call decdiv
	mov cx,100d
	call decdiv
	mov cx,10d
	call decdiv
	mov cx,1d
	call decdiv
	call clf		;回车换行
	mov si,1	

re:	pop dx
	pop cx
	pop bx
	pop ax
	pop si

	ret

decdiv proc near		;**************显示子程序
	mov ax,bx
	mov dx,0
	div cx
	mov bx,dx       ;余数给bx
	
	cmp si,2         ;如前几位为0则不显示
	jz con
	cmp al,0
	je goout

	mov si,2
con:	mov dl,al           ;显示
	add dl,30h      
	mov ah,02h
	int 21h

goout:	ret
	decdiv endp

clf proc near 			;************回车换行子程序
	mov dl,0dh            
	mov ah,02h
	int 21h
	mov dl,0ah
	mov ah,02h
	int 21h
	ret 
clf endp

binidec endp;功能:将寄存器中的二进制数输出为十进制
;参数: bx    寄存器
;返回值:   无

binidec proc far 
	push si
	push ax
	push bx
	push cx
	push dx

	call clf		;回车换行	
	
	cmp bx,0
	jnz fuck
	mov dl,'0'
	mov ah,2
	int 21h
	jmp re

fuck:	mov cx,10000d        ; 最高位除10000余数为下一位的数值
	call decdiv
	mov cx,1000d      
	call decdiv
	mov cx,100d
	call decdiv
	mov cx,10d
	call decdiv
	mov cx,1d
	call decdiv
	call clf		;回车换行
	mov si,1	

re:	pop dx
	pop cx
	pop bx
	pop ax
	pop si

	ret

decdiv proc near		;**************显示子程序
	mov ax,bx
	mov dx,0
	div cx
	mov bx,dx       ;余数给bx
	
	cmp si,2         ;如前几位为0则不显示
	jz con
	cmp al,0
	je goout

	mov si,2
con:	mov dl,al           ;显示
	add dl,30h      
	mov ah,02h
	int 21h

goout:	ret
	decdiv endp

clf proc near 			;************回车换行子程序
	mov dl,0dh            
	mov ah,02h
	int 21h
	mov dl,0ah
	mov ah,02h
	int 21h
	ret 
clf endp

binidec endp
;宇光制作

⌨️ 快捷键说明

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