⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.asm

📁 spce061单片机的一些程序!C语言和汇编语言都有
💻 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 + -