ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:278.28KB ,
资源ID:6260061      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6260061.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(华科光电 单片机第一次试验报告.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

华科光电 单片机第一次试验报告.docx

1、华科光电 单片机第一次试验报告 微机实验报告实验名称 专业班级 姓名 学号 序号 联系方式 一、任务要求 1.掌握KeilC环境的使用 1)字节拆分、合并:调试e421.asm程序, 观察相关寄存器和单元的内容。 2)数据块填充:调试fill.asm程序,观察相关寄存器和单元的内容。 2. 编写两个十六位数的加法程序。 有两个十六位无符号数,分别存放在从20H和30H开始的数据区中,低八位先存,高八位在后,和存于R3(高八位)和R4(低八位),进位位存于R2。二、设计思路 1.对于两个程序的调试,由于代码已经给出,只需利用软件进调试。 字节拆分程序调试 数据块填充程序调试 2.对于16位无符号

2、数的加法,可以先低位相加,再高位相加,分别存入相应地址。在低位相加时,使用ADD 指令即可,而在高位相加时,应考虑进位,故使用ADDC 指令,考虑到高位相加也可能产生进位,故分配另一个地址存放。三、资源分配 根据题目的条件,将加数与被加数分别存放在以 20H、30H 开始的数据区中,然后将二者之和存放于寄存器 R3(高8位)、R4(低8位),进位位存放于 R2中。四、流程图 五、源代码 (含文件头说明、资源使用说明、语句行注释)File name: test 01.asmDescription: 两个16位数加法的程序Date: 2013/09/30Designed: hahaSource u

3、sed: 20H: 加数A的低位 21H: 加数A的高位 30H: 加数B的低位 31H: 加数B的高位 R4: 和的低位 R3: 和的高位 R2: 和的进位位 ORG 0000H LJMP START ORG 0100HSTART: MOV 20H,# 78H ;将加数存放到相应的内存中 MOV 21H,# 56H MOV 30H,# 76H MOV 31H,# 98H MOV R0, # 20H ;以R0作为被加数的地址索引 MOV R1, # 30H ;以R1作为加数的地址引索引 MOV A, R0 ADD A, R1 ;低字节相加 MOV R4,A ;存放低字节之和至寄存器R4 INC

4、 R0 INC R1 :地址索引加1 MOV A, R0 ADDC A,R1 ;高字节相加带进位位 MOV R3,A ;高字节之和存入R3 CLR A ;将A清零 ADDC A,#00H MOV R2, A ;将进位位存入R2END六、程序测试方法与结果、软件性能分析 测试方法:手动输入两个加数,运行程序,观察结果是否正确。 在调试过程中,跟踪 A、R4、R3、R2的值,看是否与预期相同。 结果:各项指标均与预期相同,程序正确。截图如下附加:思考题 1.怎样查看工作寄存器、SFR、片内RAM、片外RAM及程序代码空间内容?Disassembly 窗口有何作用?答:点击调试后,在左侧Regist

5、er窗口中可以清晰的看到,工作寄存器R0-R7,特殊功能寄存器SFW,和PSW中的内容。再右下角Memory窗口中,输入d:0x_可以看片内RAM的内容;输入x:0x_可以查看片外RAM的内容。输入c:0x_可以查看程序代码空间内容。Disassembly窗口的作用是显示每一步指令的执行情况,包括源代码的储存位置机器码和相应的助记符。2.字节拆分、合并还有哪些方法,举一例说明。答:可以使用逻辑运算类指令屏蔽高四位和第四位,再对第四位和高四位进行操作,然后利用SWAP指令,就可以完成字节的拆分和合并。不妨设20H单元中有待操作数86H,要将其字节拆分,高四位存于R3,低四位存于R4,接着进行字节

6、的合并,将合并后的结果存于R2中,源代码如下: ORG 0000H LJMP START ORG 0100HSTART: MOV 20H,#86H ;20H单元赋初值 MOV A,20H ;20H单元的内容赋给A ANL A,#0FH ;高四位清零 MOV R4,A ;低四位存于R4 MOV A ,20H ;20H单元内容赋给A ANL A, #0F0H ;低四位清零 SWAP A ;低四位移至高四位 MOV R3,A ;结果存于R3,字节拆分结束 SWAP A ;移回低四位 ADD A, R4 ;A中的内容与R4的内容相加 MOV R2,A ;结果存于R2中,字节合并完成 HERE: SJM

7、P HERE END调试结果如下: 字节拆分 字节合并3.若按递减一的规律填充数据块,应如何修改程序 答:程序的修改后的源代码如下: ORG 0000H LJMP START ORG 0100HSTART: MOV A,#0FFH ;将立即数OFFH存入累加器A MOV R0,#00H ;RO指向00H MOV DPTR, #7000H ;DPTR指向7000HFILL: MOVX DPTR, A ; 传递到片外RAM DEC A ; A减一 INC DPTR ; 数据指针加一 INC R0 ;修改循环计数器 CJNE R0, #00H, FILL ; 判断是否结束HERE: SJMP HER

8、E ; 原地踏步 END 调试截图如下: 4. 若从7020H单元开始,连续填充10个字节,应该如何修改程序? ORG 0000H LJMP START ORG 0100HSTART: CLR A ;累加器A清零 MOV R0, #0AH ;设计数器初值 MOV DPTR, #7020H ;设数据指针初值FILL: MOVX DPTR, A ;传送到片外RAM INC A ;累加器A加一 INC DPTR ;数据指针加一 DJNZ R0, FILL ;判断是否结束HERE: SJMP HERE ;原地踏步 END结果如图5.若完成双字节BCD码加法,应如何修改程序?不妨设第一个BCD码存于40

9、H,41H;第二个存于45H,46H程序代码: ORG 000H LJMP START ORG 0100HSTART: MOV A,40H ;将加数低8位存入A ADD A,45H ;两者低8位相加,和存于A DA A ;二-十进制转化 MOV 50H,A ;和的低8位存于50H MOV A, 41H ;将加数高位存于A ADDC A, 46H ;两者高8位相加,和存于A DA A ;二十进制转化 MOV 51H, A ;和的高位存于51HHERE: SJMP HERE END七、心得与体会 通过本次试验,了解了keil软件的安装与使用,强化了各种转移指令,运算指令的应用。基本熟悉了汇编语言的格式与使用规则,受益匪浅。在独立完成实验的同时,锻炼了我们保持冷静,独立思考的能力。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1