📄 二进制输出 为十进制.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 + -