- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验报告2 汇编程序设计初步
姓名: 学号:
学院:光电与信息工程学院 班级:2012级网络工程2班
实验目的
熟悉 51 单片机的指令系统,掌握汇编语言程序的设计方法,掌 握开发的调试方法。
实验环境
1、PC 机 1 台
2、仿真器软件 伟福6000
内容与步骤
(1)多字节加法
(2)多字节减法
(3)多字节乘法
(4)多字节除法
过程分析
(1)多字节加法
计算123456H+789ABCH,将结果存放在内部RAM 22H(高8位),21H(中8位)和20H(低8位)
方法一:
clr C ;(CY)-0
mov a,#56h ; (a)=56h
addc a,#0bch ; (a)-(a)+0bcH+(CY)
mov 20h,a ;(20h)-(a)
mov a,#34h ; (a)=34h
addc a,#9ah ; (a)-(a)+9aH+(CY)
mov 21h,a ; (21h)-(a)
mov a,#12h ; (a)=12h
addc a,#78h ; (a)-(a)+78H+(CY)
mov 22h,a ; (22h)-(a)
截图:
内部ROM的20h,21h,22h都默认为0
进位标志位置0
执行完第一次ADDC并将值赋给20H单元后
执行完第二次ADDC并将值赋给21H单元后
执行完第三次ADDC并将值赋给22H单元后
分析:多字节加法课本有2字节的,我写的是3字节加法,其他更高的字节可以依次类推,首先都要将进位标志位置0,依次分字节进行带进位的ADDC加法运算并将结果存放在指定的地址位置中,在执行过程中观察累加器A,程序状态寄存器PSW中CY 、AC、 OV 、P的变化。
方法二:
mov r0,#20h ;(r0)-22h
mov r1,#28h ;(r1)-32h
mov r2,#03h ;(r2)-3h
clr c
loop1:
mov a,@r0 ;(a)-((r0))
addc a,@r1 ;(a)-((r1))+(a)+(CY)
mov @r0,a ;(r0)-(a)
loop2:
inc r0 ;r0-(r0)+1;
inc r1 ;r1-(r1)+1;
mov a,r0 ;(a)-((r0))
djnz r2,loop1 ; r2-(r2)-1,若r2=0,顺序执行,否则转移
sjmp $
end
截图:
内部ROM的20h,21h,22h,28h,29h,2ah分别初始化
执行第一次循环:
执行第二次循环
执行第三次循环:
分析:此代码可以实现对任意n字节的加法运算。
本例中针对3字节来模拟,其他字节只要改变R2的值即可,比如四字节则R2=4。首先在两个加数从低位到高位依次存放到内部ROM的单元,在利用寄存器R0、R1来存放数据的地址,利用寄存器R2来进行循环次数的控制,使R0,R1所指向的内存地址逐次加1,实现对应位置的加法,结果再存放到指定的从20H开始的位置。
(2)多字节减法
计算34AB12H-1278CDH,将结果存放在内部RAM 22H(高8位),21H(中8位)和20H(低8位)
方法一:
clr CY ;(CY)-0
mov a,#12h ;(a)=12h
subb a,#0cdh ;(a)-(a)-0cdH-(CY)
mov 20h,a ;(20h)-(a)
mov a,#0abh ;(a)=0abh
subb a,#78h ;(a)-(a)-78H-(CY)
mov 21h,a ;(21h)-(a)
mov a,#34h ;(a)=34h
subb a,#12h ;(a)-(a)-12H-(CY)
mov 22h,a ;(22h)-(a)
截图:
内部ROM的20h,21h,22h都默认为0
进位标志位置0
执行完第一次SUBB并将值赋给20H单元后
执行完第二次SUBB并将值赋给21H单元后
执行完第三次SUBB并将值赋给22H单元后
分析:多字节减法课本有1字节的,我写的是3字节减法,其他更高的字节可以依次类推,首先都要将进位标志位CY置0,因为MCS-51中只有带借位的减法指令。依次分字节进行带进位的SUBB减法运算并将结果存放在指定的地址位置中,在执行过程中观察累加器A,程序状态寄存器PSW中CY 、AC、 OV 、P的变化。
方法二:
mov r0,#20h ;(r0)-22h
文档评论(0)