欢迎来到天天文库
浏览记录
ID:797602
大小:189.53 KB
页数:33页
时间:2017-09-05
《pic单片机应用开发典型模块_第八章程序》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、(1)16×16位定点数加、减法程序LIST p=16f877 INCLUDE p16f877.inc ACCALO EQU 20 ;存放加数或减数低8位 ACCAHI EQU 21 ;存放加数或减数高8位 ACCBLO EQU 23 ;存放被加数或被减数低8位 ACCBHI EQU 24 ;存放被加数或被减数高8位 ORG 0X0000START GOTO MAIN;***双
2、字节减法子程序,入口地址ACCB-ACCA,出口地址ACCB***D_sub CALL NEG_A ;求ACCA的补码;双字节加法子程序,入口地址ACCB+ACCA,出口地址ACCBD_add MOVF ACCALO,0;ACCB和ACCA低半字节相加 ADDWF ACCBLO BTFSC STATUS,C;有进位否? INCF ACCBHI;有,ACCB高字节加1,再加ACCAHI MOVF ACCAHI,0;ACCA、ACCB高半字节相加 A
3、DDWF ACCBHI RETURN ;子程序返回;ACCA取补子程序NEG_A COMF ACCALO ;ACCALO取反加1 INCF ACCALO BTFSC STATUS,Z ;低8位有进位吗? DECF ACCAHI;有,ACCAHI减1,再取反 COMF ACCAHI;否则ACCAHI直接取反 RETURN;子程序返回(2)16×16位定点数乘法程序LIST p=16f877 INCLUDE p16f877
4、.inc ACCALO EQU 20 ;存放乘数低8位 ACCAHI EQU 21 ;存放乘数高8位 ACCBLO EQU 23 ;存放被乘数低8位和乘积第16~23位 ACCBHI EQU 24 ;存放被乘数高8位和乘积第24~31位 ACCCLO EQU 26 ;存放乘积低8位 ACCCHI EQU 27 ;存放乘积高8位 ACCDLO EQU 28
5、;临时寄存器 ACCDHI EQU 29 ;临时寄存器 TEMP EQU 2A ;临时寄存器 SIGN EQU 2B ;存放乘积的符号 ORG 0X0000START GOTO MAIN ORG 0X0100D_mpy CALL S_SIGN ;求取乘积的符号,并对负数取补 CALL SETUP ;调用子程序,将ACCB的值送ACCD INCF TEMP CLRF
6、 ACCCHI;清ACCC CLRF ACCCLOMLOOP BCF STATUS,C;清进位位 RRF ACCDHI ;ACCD右移 RRF ACCDLO BTFSC STATUS,C ;判断是否需要相加 CALL D_add ;加乘数至ACCB,见加法程序 BCF STATUS,C ;清进位位 RRF ACCBHI ;右移部分乘积 RRF ACCBLO RRF ACCCHI
7、 RRF ACCCLO DECFSZ TEMP;乘法完成否? GOTO MLOOP ;否,继续求乘积 BTFSS SIGN,7 ;是,确定乘积的符号 GOTO OVER ;为正,乘法结束 COMF ACCCLO ;为负,乘积取补 INCF ACCCLO BTFSC STATUS,Z DECF ACCCHI COMF ACCCHI BTFSC STA
8、TUS,ZNEG_B DECF ACCBLO COMF ACCBLO BTFSC
此文档下载收益归作者所有