单片机汇编语言代码,将8位二进制数据转换为十进制 (BCD码)数据,并改写为子程序,输入30H,输出31H
时间: 2023-05-29 11:02:13 浏览: 748
org 0
mov al, 30H ;将待转换的二进制数放入AL寄存器中
call BINtoBCD ;调用子程序进行转换
mov dl, ah ;将转换后的高位放入DL寄存器中
mov dh, al ;将转换后的低位放入DH寄存器中
add dl, 30H ;将高位转换为ASCII码,存放在DL寄存器中
add dh, 30H ;将低位转换为ASCII码,存放在DH寄存器中
mov ah, 02H ;调用DOS中断,显示转换后的数字
mov dl, dh
int 21H
mov dl, dl
mov ah, 02H
mov dl, dh
int 21H
;将8位二进制数据转换为BCD码的子程序
BINtoBCD:
push ax ;将AX寄存器中的数据保存在栈中,防止程序执行过程中被修改
push bx ;将BX寄存器中的数据保存在栈中,防止程序执行过程中被修改
and al, 0FH ;将AL寄存器中的高4位清零
mov bl, al ;将AL寄存器中的低4位放入BL寄存器中
shr al, 1 ;将AL寄存器中的数据右移一位
shr al, 1
shr al, 1
shr al, 1
add al, bl ;将BL寄存器中的数据加到AL寄存器中
daa ;调整AL寄存器中的数据,逢10进1
mov ah, al ;将转换后的低位放入AH寄存器中
and al, 0FH ;将AL寄存器中的高4位清零
mov bl, al ;将AL寄存器中的低4位放入BL寄存器中
shr al, 1 ;将AL寄存器中的数据右移一位
shr al, 1
shr al, 1
shr al, 1
add al, bl ;将BL寄存器中的数据加到AL寄存器中
daa ;调整AL寄存器中的数据,逢10进1
pop bx ;将BX寄存器中的数据还原回去
pop ax ;将AX寄存器中的数据还原回去
ret ;返回主程序
阅读全文