bcd.asm
来自「基于SPCE061A的出租车计价器」· 汇编 代码 · 共 78 行
ASM
78 行
//============================================================
// 文件名称: BCD.asm
// 功能描述: 二进制转BCD码
// 维护记录: 2004-4-25 v1.0
// 2006-9-10 v1.1
// 维护说明: 支持0~65535数字转换
//============================================================
//=============================================================
// 语法格式: unsigned long int BCD(unsigned int Binary)
// 实现功能: 二进制转BCD码
// 参数: Binary - 需要转换的二进制数
// 返回值: 压缩格式存储的BCD码(使用两个字存储)
//=============================================================
.ram
.var BCD_ww,BCD_qw,BCD_bw;
.code
.public _BCD
_BCD:.proc
push r3,r4 to [sp]
r2=0
r3=0
r4=0
[BCD_ww] = r2
[BCD_bw] = r2
[BCD_qw] = r2
cmp r1,10000
jb F_BCD_Q
F_BCD_W:
r2 = [BCD_ww]
r2 += 1;
[BCD_ww] = r2;
r1 -= 10000
cmp r1, 10000
jae F_BCD_W
// cmp r1,1000
// jb F_BCD_B
F_BCD_Q:
cmp r1,1000
jb F_BCD_B
r2 = [BCD_qw]
r2 += 1
[BCD_qw]=r2
r1-=1000
cmp r1,1000
jae F_BCD_Q
F_BCD_B:
cmp r1,100
jb F_BCD_S
r2=[BCD_bw]
r2+=1
[BCD_bw]=r2
r1-=100
cmp r1,100
jae F_BCD_B
F_BCD_S:
cmp r1,10
jb F_BCD_G
r3+=1
r1-=10
cmp r1,10
jae F_BCD_S
F_BCD_G:
r4=r1
r1=0x0000
r1=r1 rol 4
r1=[BCD_qw]
r2=[BCD_bw]
r2=r2 ror 4
r1=r1 rol 4
r3=r3 ror 4
r1=r1 rol 4
r4=r4 ror 4
r1=r1 rol 4
r2 = [BCD_ww]
pop r3,r4 from [sp]
retf
.endp
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?