📄 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.19 二进制码到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 _Binary_BCD;
r1 = 0xa;
call _Binary_BCD;
r1 = 0x1f;
call _Binary_BCD;
jmp _main;
//===================================================================================
//功能:一个字节的二进制数转化为BCD码
//入口:R1(存放一个字节的二进制数)
//出口:R1(存放BCD码)
//说明:R1作为入口参数时,低字节存放的是待转换的二进制码。R1作为出口参数时。
// 其中bo~b3存的是个位,b4~b7存的是十位,b8~b11存的是百位。参考代码
// 如下,程序流程如图4.28。
//====================================================================================
_Binary_BCD: .PROC
push r2,r4 to [sp];
r2=0; //清零,准备存百位数
r3=0; //清零,准备存十位数
r4=0; //清零,准备存个位数
r1&=0x00ff; //屏蔽高字节
cmp r1,100; //与100比较
jb ShiWei //小于100,则跳转
BaiWei:
r1-=100;
r2+=1; //百位数加1
cmp r1,100;
jae BaiWei; //大于等于100继续求百位数
ShiWei:
cmp r1,10; //与10比较
jb GeWei; //小于10,则跳
r1-=10;
r3+=1; //十位数加1
cmp r1,10;
jae ShiWei; //大于10,则跳
GeWei:
r4=r1;
r1=0x0000;
r1=r1 rol 4; //移位寄存器清零
r3=r3 ror 4; //将十位数移出
r2=r2 rol 4; //将十位数移入r2寄存器(b4~b7)
r4=r4 ror 4; //将个位数移出
r2=r2 rol 4; //将个位数移入r2寄存器(b0~b3)
R1=R2; //其中b8~b11存的是百位
pop r2,r4 from [sp];
RETF
.ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -