- 1、本文档共20页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
微机原理实验报告4.
实 验 报 告
课程名称:《微机原理》实验 第3次实验
实验名称:宏命令与子程序的区别
实验时间:2015年10月13日
实验地点:XXXXXX组号__________
学号:XXXX
姓名:XXX
指导老师:XX 评定成绩:___________
微机原理实验4
南京大学工程管理学院
一、实验设备:
计算机
二、实验用时:
4小时
三、实验内容:
单步运行实例函数NO3_Mpy_8,了解单字节无符号数乘法的实现方法。
编写子程序Mpy_16,实现双字节无符号数乘法。自行定义变量,其中:
ACCALO ;存放乘数低 8 位
ACCAHI ;存放乘数高 8 位
ACCBLO ;存放被乘数低 8 位和乘积第 16~23 位
ACCBHI ;存放被乘数高 8 位和乘积第 24~31 位
ACCCLO ;存放乘积第 0~7 位
ACCCHI ;存放乘积第 8~15 位
编写Main主程序,使用乘数 0x4015和被乘数0x3321对编写的子程序进行测试,结果应为0x0CCC71B5。
编写宏命令Mpy_16,实现单字节无符号数乘法。编写Main主程序调用宏命令并对运算结果进行测试。
使用反汇编工具Disassembly Listing单步运行程序,观察子程序与宏命令的差异。
四、实验报告要求:
程序框图和源程序清单。
分析宏扩展过程,说明宏与子程序的差别。
五、实验结果:
1、程序框图
(1)子程序Mpy_16
否
是
否
是
(2)宏命令Mpy_16
否
是
否
是
2、源程序清单
(1)子程序Mpy_16
list p=16f877A ; list directive to define processor
#include p16f877A.inc ; processor specific variable definitions
__CONFIG _CP_OFF _WDT_OFF _BODEN_OFF _PWRTE_OFF _HS_OSC _WRT_OFF _LVP_OFF _CPD_OFF
ACCALO EQU 0x20 ;存放加数低8位
ACCAHI EQU 0x21 ;存放加数高8位
ACCBLO EQU 0x22 ;存放被加数低8位
ACCBHI EQU 0x23 ;存放被加数高8位
ACCCLO EQU 0x24;
ACCCHI EQU 0x25;
MDLO EQU 0x26;
MDHI EQU 0x27;
TEMP EQU 0x28 ;临时寄存器
; 双 字 节 加 法 子 程序,入口地址ACCB + ACCA,出口地址ACC
ORG 0x0000 ; 复位入口地址
nop ; 兼容ICD调试工具,必须加nop
goto Main ; 跳转至Main函数
Main
MOVLW 0x15;
MOVWF ACCALO;
MOVLW 0x40;
MOVWF ACCAHI;
MOVLW 0x21;
MOVWF ACCBLO;
MOVLW 0x33;
MOVWF ACCBHI;
CALL MPY_16;
NOP;
GOTO $;
ORG 0x0100
MPY_16
CALL SETUP ;
MLOOP
BCF STATUS, C ; 清进位位
RRF MDHI ; MD 右移
RRF MDLO;
BTFSC STATUS, C ;判断是否需要相加
CALL Add_16 ; 加乘数至 MB
RRF ACCBHI ; 右移部分乘积
RRF ACCBLO;
RRF ACCCHI;
RRF A
文档评论(0)