📄 main.asm
字号:
//============================================================================
//
// The information contained herein is the exclusive property of
// Sunplus Technology Co. And shall not be distributed, reproduced,
// or disclosed in whole in part without prior written permission.
//
// (C) COPYRIGHT 2001 SUNPLUS TECHNOLOGY CO.
// ALL RIGHTS RESERVED
//
// The entire notice above must be reproduced on all authorized copies.
//
//============================================================================
// 工程名称: BCD码到二进制码的转换
// 功能描述: 程序4.20 BCD码到二进制码的转换
// 文件来源: 《SPCE061单片机原理及应用技术》 第四章 程序设计
// IDE环境: SUNPLUS u'nSPTM IDE 1.8.0(or later)
//
// 涉及的库: (a) C-Lib: (CMacro.lib);
// 组成文件:
// main.asm
// Resource.asm/
// 日期: 2003-5-22(建立)
// 2003-7-16(添加版本说明及版权声明并做代码标准化)
//============================================================================
//测试主程序
.PUBLIC _main
.CODE
_main:
r1 = 0x1;
call _BCD_Binary;
r1 = 0x10;
call _BCD_Binary;
r1 = 0x21;
call _BCD_Binary;
jmp _main;
//==================================================================================
//功能:将两字节压缩BCD码转换成两字节二进制数程序
//入口:R1(存放一个字节的二进制数)
//出口:R1(存放BCD码)
//==================================================================================
_BCD_Binary: .PROC
push r2,r5 to [sp];
r5 = r1;
r5 = r5 lsl 4 //将千位数a移出
r1 = r1 rol 4;
r1 &= 0x000f; //将千位数a存入r1;
r2 = 10;
mr = r1*r2 //a*10
r5 = r5 lsl 4; //将百位数b移出
r1 = r1 rol 4;
r1 &= 0x000f; //将百位数b存入r1
r1 += r3; //r1=(a*10+b)
mr = r1*r2
r5 = r5 lsl 4; //将十位数c移出
r1 = r1 rol 4;
r1 &= 0x000f; //将十位数c存入r1
r1 += r3; //((a*10+b)*10+c)
MR = r1*r2 //((a*10+b)*10+c)*10
r5 = r5 lsl 4; //将十位数d移出
r1 = r1 rol 4;
r1 &= 0x000f;
r1 += r3; //((a*10+b)*10+c)*10+d
pop r2,r5 from [sp];
retf
.ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -