📄 bcd.lst
字号:
Sunplus u'nSP Assembler - Ver. 1.10.0
Listing File Has Been Relocated
//============================================================
// 文件名称: 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码(使用两个字存储)
//=============================================================
0000020A .ram
0000020A 00 00 00 00 .var BCD_ww,BCD_qw,BCD_bw;
00 00
0000BFBE .code
.public _BCD
_BCD:.proc
0000BFBE 90 D8 push r3,r4 to [sp]
0000BFBF 40 94 r2=0
0000BFC0 40 96 r3=0
0000BFC1 40 98 r4=0
0000BFC2 1A D5 0A 02 [BCD_ww] = r2
0000BFC4 1A D5 0C 02 [BCD_bw] = r2
0000BFC6 1A D5 0B 02 [BCD_qw] = r2
0000BFC8 09 43 10 27 cmp r1,10000
0000BFCA 0A 0E jb F_BCD_Q
F_BCD_W:
0000BFCB 12 95 0A 02 r2 = [BCD_ww]
0000BFCD 41 04 r2 += 1;
0000BFCE 1A D5 0A 02 [BCD_ww] = r2;
0000BFD0 09 23 10 27 r1 -= 10000
0000BFD2 09 43 10 27 cmp r1, 10000
0000BFD4 4A 1E jae F_BCD_W
// cmp r1,1000
// jb F_BCD_B
F_BCD_Q:
0000BFD5 09 43 E8 03 cmp r1,1000
0000BFD7 0A 0E jb F_BCD_B
0000BFD8 12 95 0B 02 r2 = [BCD_qw]
0000BFDA 41 04 r2 += 1
0000BFDB 1A D5 0B 02 [BCD_qw]=r2
0000BFDD 09 23 E8 03 r1-=1000
0000BFDF 09 43 E8 03 cmp r1,1000
0000BFE1 4D 1E jae F_BCD_Q
F_BCD_B:
0000BFE2 09 43 64 00 cmp r1,100
0000BFE4 0A 0E jb F_BCD_S
0000BFE5 12 95 0C 02 r2=[BCD_bw]
0000BFE7 41 04 r2+=1
0000BFE8 1A D5 0C 02 [BCD_bw]=r2
0000BFEA 09 23 64 00 r1-=100
0000BFEC 09 43 64 00 cmp r1,100
0000BFEE 4D 1E jae F_BCD_B
F_BCD_S:
0000BFEF 4A 42 cmp r1,10
0000BFF0 04 0E jb F_BCD_G
0000BFF1 41 06 r3+=1
0000BFF2 4A 22 r1-=10
0000BFF3 4A 42 cmp r1,10
0000BFF4 46 1E jae F_BCD_S
F_BCD_G:
0000BFF5 01 99 r4=r1
0000BFF6 40 92 r1=0x0000
0000BFF7 99 93 r1=r1 rol 4
0000BFF8 11 93 0B 02 r1=[BCD_qw]
0000BFFA 12 95 0C 02 r2=[BCD_bw]
0000BFFC BA 95 r2=r2 ror 4
0000BFFD 99 93 r1=r1 rol 4
0000BFFE BB 97 r3=r3 ror 4
0000BFFF 99 93 r1=r1 rol 4
0000C000 BC 99 r4=r4 ror 4
0000C001 99 93 r1=r1 rol 4
0000C002 12 95 0A 02 r2 = [BCD_ww]
0000C004 90 94 pop r3,r4 from [sp]
0000C005 90 9A retf
.endp
0 error(s), 0 warning(s).
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -