- 7
- 0
- 约1.54千字
- 约 3页
- 2017-06-07 发布于重庆
- 举报
Pic16f877双字节无符号乘法源程序
Pic16f877双字节无符号乘法源程序内容如下:
list p 16f877A ; list directive to define processor
#include ; processor specific variable definitions
;
ACCALO EQU 0X20 ;存放乘数低8位
ACCAHI EQU 0X21 ;存放乘数高8位
ACCBLO EQU 0X22 ;存放被乘数低 8 位和乘积第 16~23 位
ACCBHI EQU 0X23 ;存放被乘数高 8 位和乘积第 24~31 位
ACCCLO EQU 0X24 ;存放乘积第 0~7 位
ACCCHI EQU 0X25 ;存放乘积第 8~15 位
MDD EQU 0X26 ;临时寄存器
MEE EQU 0X27 ;临时寄存器
TEMP EQU 0X28 ;临时寄存器
Maros_A EQU 0x29;宏单字节被乘数
Maros_B EQU 0x30;宏单字节乘数
Result_A EQU 0x31;单字节乘法结果高8位
Result_B EQU 0x32;单字节乘法结果低8位
; ORG 0x0000 ; 复位入口地址
nop ; 兼容ICD调试工具,必须加nop goto Main ; 跳转至Main函数
;
MUTIL_8 macro Maros_A,Maros_B movlw .8 movwf TEMP clrf Result_A clrf Result_B
LOOP_1 bcf STATUS,C rrf Maros_B btfsc STATUS,C call Add_8 rrf Result_A rrf Result_B decfsz TEMP,f goto LOOP_1 endm ;结束宏指令
;
Main movlw 0x15 ;送入乘数 movwf ACCALO movlw 0x40 movwf ACCAHI movlw 0x21 ;送入被乘数 movwf ACCBLO movlw 0x33 movwf ACCBHI call Mpy_32 ;调用子函数 nop movlw 0x11 movwf Maros_A movlw 0x2a movwf Maros_B MUTIL_8 Maros_A,Maros_B;调用宏指令 goto $
;
Mpy_32 call Init ;调用初始化的子程序
LOOP bcf STATUS,C rrf MEE ;MEE和MDD右移 rrf MDD btfsc STATUS,C call Add_16 rrf ACCBHI rrf ACCBLO rrf ACCCHI rrf ACCCLO decfsz TEMP goto LOOP RETURN
;
Init movlw .16 ;初始化TEMP寄存器 movwf TEMP movf ACCBLO,W;被乘数送临时寄存器MEE和MDD movwf MDD movf ACCBHI,W movwf MEE clrf ACCBLO clrf ACCBHI clrf ACCCLO clrf ACCCHI RETURN
;
Add_16 movf ACCALO,W addwf ACCBLO,F btfsc STATUS,C incf ACCBHI,F movf ACCAHI,W addwf ACCBHI,F RETURN ;
Add_8 movf Maros_A,w addwf Result_A,f return
; END
您可能关注的文档
最近下载
- 中医基础理论:气一元论.ppt VIP
- DB61_T 2002-2025 窄轨旅游轨道交通施工技术规范.pdf VIP
- DB61_T 2004-2025 水性环氧改性微表处施工技术规范.pdf VIP
- 北京市装配式建筑项目预制率和装配率计算说明及示例.ppt VIP
- 火灾报警控制器简单操作.doc VIP
- DB61_T 2012-2025 沥青路面一体化就地热再生施工技术规范.pdf VIP
- DB61_T 2013-2025 沥青路面半刚性基层微裂均质化处治施工技术规范.pdf VIP
- 单件流培训.ppt VIP
- 隧道工程应急处置方案(3篇).docx VIP
- 海关面试题及答案.doc VIP
原创力文档

文档评论(0)