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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(指令系统和汇编语言程序设计实验.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

指令系统和汇编语言程序设计实验.docx

1、指令系统和汇编语言程序设计实验第 二 章 指令系统和汇编语言程序设计实验本章实验主要包括指令系统和汇编语言程序设计两部分。采用软件模拟调试的方法, 目的在于通过这些实验可以使学生巩固所学知识, 加深对 MCS-51单片机内部结构、 指令系 统的理解,更进一步掌握汇编语言程序设计的方法和技巧。第一节 指令系统实验实 验 一 熟 悉 键 盘 操 作 及 数 传 指 令 编 程 设 计一、实验目的1.熟悉软件模拟调试的环境及键盘操作。2.掌握汇编语言程序设计的方法,加深对指令的理解。3.学会软件模拟调试和察看修改观察项的方法。二、 实 验内容印证数据传送指令的功能、寻址方式以及 PC 指针、 SP

2、指针、 DPTR 指针、 Ri 指针分别 对代码段、堆栈段、外扩数据存储器段、位寻址区等不同存储器的访问方式。三、 实验步骤1.进入调试软件环境,输入源程序;2.汇编源程序;3.用单步方式运行程序;4.检查并记录各寄存器和存储单元内容的变化。四、程序清单1. 内部 RAM 数据传送需要查看的数据有 30H,31H,A,R0等。ORG 0000HMOV R0,#30HMOV 30H,#45HMOV 31H,#46HMOV R2,30HMOV 02H,31HMOV A,#87HMOV 0E0H,30HMOV 30H,AMOV 31H,R0SJMP $END2. 外部数据传送需要查看的数据有外部数据

3、存储器单元 2000H ,外部程序存储器单元 2001H 。 ORG 0000HMOV A,#89HMOV DPTR,#2000HMOVX DPTR,AINC DPTRCLR AMOVC A,A+DPTRSJMP $ORG 2000HDB 44HDB 78HDB 67HEND3. 堆栈操作需要查看的数据有 50H 、 51H 、 A 及 SP 指针和堆栈区中数据随 PUSH 和 POP 指令执行后 的变化情况和数据的存放次序等。1 可用于保护现场和恢复现场的程序ORG 0000HMOV SP,#5FHMOV 50H,#3BHMOV 51H,#2FHMOV A,#12HPUSH 50HPUSH

4、51HPUSH ACCPOP 0E0HPOP 51HPOP 50HSJMP $END2可用于数据交换的程序ORG 0100HMOV SP,#6FHMOV 50H,#3BHMOV 51H,#2FHPUSH 50HPUSH 51HPOP 50HPOP 51HSJMP $END4. 数据交换记录每条指令运行后的结果,从而加深对各种不同的交换指令的理解。 ORG 0000HMOV A,#58HSWAP AMOV 40H,AMOV A,#30HMOV R0,#30HMOV R0,#09HXCHD A,R0MOV 50H,#1MOV A,#89HXCH A,50HMOV R7,#3XCH A,R7XCH

5、A,R0SJMP $END五、思考题1.寄存器寻址与寄存器间接寻址有什么区别?2. PC 指针与 SP 指针有什么区别?3. DPTR 指针与 Ri (R0, R1指针有什么区别?4.立即寻址与直接寻址有什么区别?4. 同一个特殊功能寄存器不同表达形式。实 验 二 数 传 指 令 和 算 数 运 算 指 令 编 程 设 计一、实验目的1.掌握数据块的传送操作和算术运算指令的应用。2.进一步掌握汇编语言设计和调试方法。3.掌握观察窗口的使用方法。4.学会给存储单元赋初值的方法。二、 实 验内容1. 数据区传送(1把内部 RAM 40H4FH 置初值 0A0H 0AFH ;(2而后把 40H 4F

6、H 内容传送到外部 RAM 9800H980FH 中;(3再把 9800980FH 内容传送到 50H5FH 中。2.多字节十进制加法加数放在 30H 开始的单元中(最低位放在 30H ,按从小到大的顺序存放 ,被加数和结 果存放在 20H 开始的单元(最低位在 20H 中 ,字节数放在 2FH 中,最高进位位放在 7FH 中的最低位。三、实验步骤1.分别用单步和连续运行方式,调试上述两个程序;2.在执行第二个程序之前,给被加数和加数单元赋初值;3.在观察窗口中观察结果。四、实验程序清单1. 数据块传送程序:ORG 0000HMAIN: MOV R0, #40HMOV R2, #10HMOV

7、A, #0A0HA1: MOV R0, AINC R0INC ADJNZ R2, A1MOV R0, #40HMOV DPTR, #9800HMOV R2, #10HA2: MOV A, R0MOVX DPTR, AINC R0INC DPTRDJNZ R2, A2MOV R0, #50HMOV DPTR, #9800HMOV R2, #10HA3: MOVX A, DPTRMOV R0, AINC DPTRINC R0DJNZ R2, A3SJMP $END2. 多字节十进制加法:ORG 0000HMAIN: MOV R0, #30HMOV R1, #20HMOV 2FH,#04HCLR C

8、DA1: MOV A,R0ADDC A, R1DA AMOV R1, AINC R0INC R1DJNZ 2FH, DA1MOV 7FH, CSJMP $END五、 思 考题1.若两个数据块都在外部数据存储器中,如何实现数据块的传送?2.在调试第一个程序时,若不用程序给 40H 4FH 赋初值,而用键盘在 CPU DATA 区给 40H 4FH 单元预赋初值,如何做?3.若把第二个程序改为无符号数的减法,怎样修改程序?4.在第二个程序中,若两数的和存放到从 40H 开始的单元,如何修改程序?实 验 三 逻 辑 运 算 及 位 操 作 指 令 编 程 设 计一、 实 验目的(1熟悉字节逻辑运算指

9、令功能。(2熟悉位操作指令运算功能。(3从而更深入的掌握汇编语言程序设计。(4学会观察 CPU 窗口中 BIT 区的变化。二、 实 验内容1. 字节逻辑运算程序在片内 RAM 的 FIRST 和 SECOND 单元中各有一符号数 X 和 Y, 要求按下列条件算出 Z , 存入 RESULT 单元中 (设运算结果仍为 8位数 。 FIRST EQU 30HSECOND EQU 31HRESULT EQU 32HORG 0000HSTART:MOV R0, FIRSTMOV A, R0JB ACC.7, NEGMOV B, #2DIV ABMOV A, BJZ TEMP1MOV A,R0ADD A

10、, SECONDSJMP RESTEMP1: MOV A, R0ANL A, SECONDSJMP RESNEG: CPL ACC.7MOV B, #2DIV ABMOV A, BJZ TEMP2MOV A, R0ORL A, SECONDSJMP RESTEMP2: MOV A, R0XRL A, SECONDRES: MOV RESULT, ASJMP $ENDZ=2.位操作程序布尔电路图如下: X BIT 00HY BIT 01HZ BIT 02HF BIT 03HORG 0000HSTART: MOV C, ZANL C, /YMOV F, CMOV C, YANL C, /ZORL

11、C, FMOV F, CMOV C, XANL C, YORL C, /FMOV F, CSJMP $END3.拆字程序把外部数据存储器 2000H 单元的内容拆开, 其高四位送 2001H 低四位, 低四位送 2002H 低四位, 2001H 、 2002H 高四位清零。 需要检查 2000H 、 2001H 和 2002H 单元的内容。程序清单ORG 0000HMOV DPTR,#2000HMOVX A,DPTRMOV B,ASWAP AANL A,#0FHINC DPTRMOVX DPTR,AINC DPTRMOV A,BANL A,#0FHMOVX DPTR,ASJMP $END程序框

12、图 4.拼字程序把外部数据存储器 2000H 、 2001H 单元的低四位分别送 2002H 高低四位。需要察看 2000H 、 2001H 和 2002H 程序清单ORG 0000HMOV DPTR,#2000HMOVX A,DPTRANL A,#0FHSWAP AMOV B,AINC DPTRMOVX A,DPTRANL A,#0FHORL A,BINC DPTRMOVX DPTR,ASJMP $END5.自选程序设计三、思考题1.字节与位逻辑运算指令在编程上什么区别?应注意什么?2.若把两位十六进制数转换成对应的 ASCII 码,应如何编写程序?3.采用其它方法设计第一个程序。4.如何用

13、断点方式调试本程序?实 验 四 代 码 转 换一、实验目的1.掌握各种代码转换的算法,加深对各种数据编码的理解。2.学会软件模拟调试和察看修改观察项的方法来观察转换结果。三、实验内容1.分析清楚个程序的功能。2.调试各种代码转换的程序。三、 实验步骤1.进入调试软件环境,输入源程序;2.汇编源程序;3.用单步或全速方式运行程序;4.查看最终结果。四、程序清单1 码将十六进制数据 08H , 0CH 转换成 ASCII 码, 转换结果存入 30H , 31H 两个单元中,再将 30H , 31H 两个单元中的数据分别增 1,然后转换成十六进制数存入 40H , 41H 两 个单元中。ORG 00

14、00HMOV SP,#2FHMOV A,#08HADD A,#30HPUSH ACCMOV A,#0CHADD A,#37HPUSH ACCMOV A,30HINC ACLR CSUBB A,#30HMOV 40H,APOP ACCINC ASUBB A,#37HMOV 41H,APOP ACCSJMP $END2 码将二进制数 10011011B 转换成 BCD 码数,存入 30H 和 31H 单元中;再将 30H 单元 中的数据加 16H 后,转换成二进制数据 , 存入 40H 单元中。ORG 0000HMOV A,#10011011BMOV B,#100DIV ABMOV 30H,AMO

15、V A,BMOV B,#10DIV ABSWAP AORL A,BMOV 31H,AMOV A,30HADD A,#16HDA A PUSH ACC ANL A,#00001111B MOV 40H,A POP ACC ANL A,#11110000B SWAP A MOV B,#10 MUL AB ADD A,40H MOV 40H,A SJMP $ END 3BCD 码 ASCII 码 将 20H 单元中压缩的 BCD 码数 78H 转换成 ASCII 码,转换结果存入 30H,31H 两 个单元中,再将 30H,31H 两个单元中的数据分别增 1,然后转换成压缩 BCD 码数存入 21H

16、 单元中。 ORG 0000H MOV A,20H ANL A,#00001111B ADD A,#30H MOV 30H,A PUSH ACC MOV A,20H ANL A,#11110000B SWAP A ADD A,#30H MOV 31H,A INC A CLR C SUBB A,#30H MOV R2,A POP ACC INC A CLR C SUBB A,#30H SWAP A ORL A,R2 24 MOV SJMP END 21H,A $ 5自选程序设计 六、思考题 1. 如何查看上面三个程序的结果。 2. 在程序 1 中,如果十六进制数未指定是否包含 AF 数码,程序应

17、如何修改? 3. 在程序 2 中,如果要转换的二进制数是十六位的,程序应如何编写? 4. 十六进制数转换成 ASCII 码与 BCD 码数转换成 ASCII 码有何区别? 实验五 移位操作 一、实验目的: 实验目的: 掌握移位操作的方法,并理解左移或右移与乘除法运算的关系。 二、实验内容: 实验内容: 1双字节二进制数左移一位 将两个内部 RAM 31H 和 30H 单元中的内容组成的双字节数通过 Cy 左移一位。 功能示意图 31H 30H Cy 程序清单 ORG 0000H CLR C MOV A ,30H RLC A MOV 30H, A MOV A,31H RLC A MOV 31H,

18、 A SJMP $ END 2多字节二进制数右移一位 将三个内部 RAM 32H、31H 和 30H 单元中的内容组成的三字节数通过 Cy 右移一 位。 25 功能示意图 32H Cy 31H 30H 程序清单 ORG 0000H CLR C MOV A,32H RRC A MOV 32H,A MOV A,31H RRC A MOV 31H,A MOV A,30H RRC A MOV 30H,A SJMP $ END 三、思考题 1 多于三个字节的移位操作如何进行? 2 如果不通过 Cy 如何移位?实现的功能有何不同? 第二节 汇编语言程序设计实验 实验六 分支程序设计 一、 实验目的 1. 进一步熟悉 MCS-51 指令系统,了解汇编语言程序设计的基本结构。 2. 掌握分支结构程序设计的方法。 3. 学会用条件转移指令、CJNE、JMP 及其配合使用来编写二分支、三分支和多分支 程序。 二、 实验内容 1. 二分支的条件转移程序 设变量 X 存放于 R0,函数值 Y 存放在 R1,其中 X、Y 均为二进制数。试按照下式的 要求给 Y 赋值: 26

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

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