计算机硬件技术基础软件实验讲义.pdf
《计算机硬件技术基础软件实验讲义.pdf》由会员分享,可在线阅读,更多相关《计算机硬件技术基础软件实验讲义.pdf(39页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!14 第 二 章 指令系统和汇编语言程序设计实验 本章实验主要包括指令系统和汇编语言程序设计两部分。采用软件模拟调试的方法,目的在于通过这些实验可以使学生巩固所学知识,加深对 MCS-51单片机内部结构、指令系统的理解,更进一步掌握汇编语言程序设计的方法和技巧。第一节 指令系统实验 实 验 一 熟 悉 键 盘 操 作 及 数 传 指 令 编 程 设 计 一、实验目的 1 熟悉软件模拟调试的环境及键盘操作。2 掌握汇编语言程序设计的方法,加深对指令的理解。3 学会软件模拟调试和察看修改观察项的方法。二、
2、实验内容 印证数据传送指令的功能、寻址方式以及 PC 指针、SP 指针、DPTR指针、Ri 指针分别对代码段、堆栈段、外扩数据存储器段、位寻址区等不同存储器的访问方式。三、实验步骤 1 进入调试软件环境,输入源程序;2 汇编源程序;3 用单步方式运行程序;4 检查并记录各寄存器和存储单元内容的变化。四、程序清单 1.内部 RAM数据传送 需要查看的数据有 30H,31H,A,R0等。ORG 0000H;起始地址 MOV R0,#30H;30H-(R0)MOV 30H,#45H;45H-(30H)MOV 31H,#46H;46H-(31H)MOV R2,30H;(30H)-(R2)MOV 02H
3、,31H;31H-(02H)MOV A,#87H;87H-(A)MOV 0E0H,30H;(30H)-(0E0H)MOV 30H,A;(A)-(30H)MOV 31H,R0;(R0)-(31H)SJMP$END 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!15 执行结果:2.外部数据传送 需要查看的数据有外部数据存储器单元 2000H,外部程序存储器单元 2001H。ORG 0000H MOV A,#89H MOV DPTR,#2000H MOVX DPTR,A INC DPTR CLR A MOVC A,A+DPTR SJMP$ORG 200
4、0H DB 44H DB 78H DB 67H END 3.堆栈操作 需要查看的数据有 50H、51H、A 及 SP 指针和堆栈区中数据随 PUSH和 POP指令执行后的变化情况和数据的存放次序等。1)可用于保护现场和恢复现场的程序 ORG 0000H MOV SP,#5FH MOV 50H,#3BH MOV 51H,#2FH MOV A,#12H PUSH 50H PUSH 51H PUSH ACC POP 0E0H POP 51H POP 50H SJMP$END 2)可用于数据交换的程序 ORG 0100H MOV SP,#6FH MOV 50H,#3BH MOV 51H,#2FH 欢迎
5、您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!16 PUSH 50H PUSH 51H POP 50H POP 51H SJMP$END 4.数据交换 记录每条指令运行后的结果,从而加深对各种不同的交换指令的理解。ORG 0000H MOV A,#58H SWAP A MOV 40H,A MOV A,#30H MOV R0,#30H MOV R0,#09H XCHD A,R0 MOV 50H,#1 MOV A,#89H XCH A,50H MOV R7,#3 XCH A,R7 XCH A,R0 SJMP$END 五、思考题 1 寄存器寻址与寄存器间接
6、寻址有什么区别?2 PC 指针与 SP 指针有什么区别?3 DPTR指针与 Ri(R0,R1)指针有什么区别?4 立即寻址与直接寻址有什么区别?4.同一个特殊功能寄存器不同表达形式。欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!17 实 验 二 数 传 指 令 和 算 数 运 算 指 令 编 程 设 计 一、实验目的 1 掌握数据块的传送操作和算术运算指令的应用。2 进一步掌握汇编语言设计和调试方法。3 掌握观察窗口的使用方法。4 学会给存储单元赋初值的方法。二、实验内容 1 数据区传送(1)把内部 RAM 40H4FH置初值 0A0H0AFH;
7、(2)而后把 40H4FH内容传送到外部 RAM 9800H980FH中;(3)再把 9800H980FH内容传送到 50H5FH中。2多字节十进制加法 加数放在 30H开始的单元中(最低位放在 30H,按从小到大的顺序存放),被加数和结果存放在 20H开始的单元(最低位在 20H中),字节数放在 2FH中,最高进位位放在位地址7FH单元中。三、实验步骤 1 分别用单步和连续运行方式,调试上述两个程序;2 在执行第二个程序之前,给被加数和加数单元赋初值;3 在观察窗口中观察结果。四、实验程序清单 1 数据块传送程序:ORG 0000H MAIN:MOV R0,#40H MOV R2,#10H
8、MOV A,#0A0H A1:MOV R0,A INC R0 INC A DJNZ R2,A1 MOV R0,#40H MOV DPTR,#9800H MOV R2,#10H A2:MOV A,R0 MOVX DPTR,A INC R0 INC DPTR 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!18 DJNZ R2,A2 MOV R0,#50H MOV DPTR,#9800H MOV R2,#10H A3:MOVX A,DPTR MOV R0,A INC DPTR INC R0 DJNZ R2,A3 SJMP$END 2 多字节十进制加法:
9、ORG 0000H MAIN:MOV R0,#30H MOV R1,#20H MOV 2FH,#04H CLR C DA1:MOV A,R0 ADDC A,R1 DA A MOV R1,A INC R0 INC R1 DJNZ 2FH,DA1 MOV 7FH,C SJMP$END 五、思考题 1 若两个数据块都在外部数据存储器中,如何实现数据块的传送?2 在调试第一个程序时,若不用程序给 40H4FH赋初值,而用键盘在 CPU DATA区给40H4FH单元预赋初值,如何做?3 若把第二个程序改为无符号数的减法,怎样修改程序?4 在第二个程序中,若两数的和存放到从 40H开始的单元,如何修改程序
10、?欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!19 实 验 三 逻 辑 运 算 及 位 操 作 指 令 编 程 设 计 一、实验目的(1)熟悉字节逻辑运算指令功能。(2)熟悉位操作指令运算功能。(3)从而更深入的掌握汇编语言程序设计。(4)学会观察 CPU窗口中 BIT区的变化。二、实验内容 1 字节逻辑运算程序 在片内 RAM的 FIRST和 SECOND单元中各有一符号数 X 和 Y,要求按下列条件算出 Z,存入 RESULT单元中(设运算结果仍为 8 位数)。FIRST EQU 30H SECOND EQU 31H RESULT EQU
11、32H ORG 0000H START:MOV R0,FIRST MOV A,R0 JB ACC.7,NEG MOV B,#2 DIV AB MOV A,B JZ TEMP1 MOV A,R0 ADD A,SECOND SJMP RES TEMP1:MOV A,R0 ANL A,SECOND SJMP RES NEG:CPL ACC.7 X+Y X 为正奇数 XY X 为正偶数 XY X 为负奇数 Z=XY X 为负偶数 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!20 MOV B,#2 DIV AB MOV A,B JZ TEMP2 MOV
12、A,R0 ORL A,SECOND SJMP RES TEMP2:MOV A,R0 XRL A,SECOND RES:MOV RESULT,A SJMP$END 2位操作程序 布尔电路图如下:X BIT 00H Y BIT 01H Z BIT 02H F BIT 03H ORG 0000H START:MOV C,Z ANL C,/Y MOV F,C MOV C,Y ANL C,/Z ORL C,F MOV F,C MOV C,X ANL C,Y ORL C,/F 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!21 MOV F,C SJMP$EN
13、D 3 拆字程序 把外部数据存储器2000H单元的内容拆开,其高四位送2001H低四位,低四位送2002H低四位,2001H、2002H 高四位清零。需要检查 2000H、2001H 和 2002H 单元的内容。程序清单 ORG 0000H MOV DPTR,#2000H MOVX A,DPTR MOV B,A SWAP A ANL A,#0FH INC DPTR MOVX DPTR,A INC DPTR MOV A,B ANL A,#0FH MOVX DPTR,A SJMP$END 程序框图 4拼字程序 开 始 结 束 2000H 内容送 A 高低位交换,屏蔽高位后送 2001H 2000H
14、 内容送 A 屏蔽高位后送 2002H 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!22 把外部数据存储器 2000H、2001H 单元的低四位分别送 2002H 高低四位。需要察看2000H、2001H 和 2002H 单元内容。程序框图:程序清单 ORG 0000H MOV DPTR,#2000H MOVX A,DPTR ANL A,#0FH SWAP A MOV B,A INC DPTR MOVX A,DPTR ANL A,#0FH ORL A,B INC DPTR MOVX DPTR,A SJMP$END 5 自选程序设计 三、思考题
15、1 字节与位逻辑运算指令在编程上什么区别?应注意什么?2 若把两位十六进制数转换成对应的 ASCII码,应如何编写程序?3 采用其它方法设计第一个程序。4 如何用断点方式调试本程序?2001H 内容送 A,屏蔽高位 开 始 结 束 高低位交换,送 B A 和 B 或后送 2002H 2000H 内容送 A,屏蔽高位 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!23 实 验 四 代 码 转 换 一、实验目的 1 掌握各种代码转换的算法,加深对各种数据编码的理解。2 学会软件模拟调试和察看修改观察项的方法来观察转换结果。三、实验内容 1 分析清楚个
16、程序的功能。2 调试各种代码转换的程序。三、实验步骤 1 进入调试软件环境,输入源程序;2 汇编源程序;3 用单步或全速方式运行程序;4 查看最终结果。四、程序清单 1 十六进制数 ASCII码 将十六进制数据 08H,0CH转换成 ASCII码,转换结果存入 30H,31H两个单元中,再将 30H,31H两个单元中的数据分别增 1,然后转换成十六进制数存入 40H,41H两个单元中。ORG 0000H MOV SP,#2FH MOV A,#08H ADD A,#30H PUSH ACC MOV A,#0CH ADD A,#37H PUSH ACC MOV A,30H INC A CLR C
17、SUBB A,#30H MOV 40H,A POP ACC INC A SUBB A,#37H MOV 41H,A POP ACC SJMP$END 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!24 2 二进制数 BCD码 将二进制数 10011011B转换成 BCD码数,存入 30H和 31H单元中;再将 30H单元中的数据加 16H后,转换成二进制数据,存入 40H单元中。ORG 0000H MOV A,#10011011B MOV B,#100 DIV AB MOV 30H,A MOV A,B MOV B,#10 DIV AB SWAP
18、A ORL A,B MOV 31H,A MOV A,30H ADD A,#16H DA 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 3 BCD码 ASCII码 将 20H单元中压缩的 BCD码数 78H转换成 ASCII码,转换结果存入 30H,31H两个单元中,再将 30H,31H两个单元中的数据分别增 1,然后转换成压缩 BCD码数存入21H单元中。ORG 0000H MOV A,20H ANL A,#0
19、0001111B ADD A,#30H MOV 30H,A 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!26 实 验 五 移 位 操 作 一、实验目的:掌握移位操作的方法,并理解左移或右移与乘除法运算的关系。二、实验内容:1双字节二进制数左移一位 将两个内部 RAM 31H 和 30H 单元中的内容组成的双字节数通过 Cy左移一位。功能示意图 程序清单 ORG 0000H CLR C MOV A,30H RLC A MOV 30H,A MOV A,31
20、H RLC A MOV 31H,A SJMP$END 2多字节二进制数右移一位 将三个内部 RAM 32H、31H 和 30H 单元中的内容组成的三字节数通过 Cy右移一位。功能示意图 程序清单 Cy 31H 30H 32H 31H Cy 30H 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!27 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 多于三个字节的移位操作如何进行
21、?2 如果不通过 Cy如何移位?实现的功能有何不同?第二节 汇编语言程序设计实验 实验六 分支程序设计 一、实验目的 1.进一步熟悉 MCS-51 指令系统,了解汇编语言程序设计的基本结构。2.掌握分支结构程序设计的方法。3.学会用条件转移指令、CJNE、JMP 及其配合使用来编写二分支、三分支和多分支程序。二、实验内容 1.二分支的条件转移程序 设变量 X 存放于 R0,函数值 Y 存放在 R1,其中 X、Y 均为二进制数。试按照下式的要求给 Y 赋值:程序框图 2-1 如下:Y=1 X0 0 X=0-1 X 0?(A)=0?A(R0)(A)=-1(A)=1(A)(R1)结束 欢迎您阅读并下
22、载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!29 写出题目运行结果。六、参考程序清单 1、二分支的条件转移程序 1)用二分支结构程序实现:ORG 0000H MOV A,R0 JZ LOAD ;等于零转 LOAD JNB ACC.7,GO ;大于零转 GO MOV A,#0FFH SJMP LOAD GO:MOV A,#01H LOAD:MOV R1,A SJMP$END 2)用三分支结构程序实现:ORG 0000H MOV A,R0 JNZ COMP ;不等于零转 COMP MOV R1,#00H ;等于零,则 0(R1)SJMP MP3 COMP:CJN
23、E R0,#80H,MP1;(R0)中数与 80H比较,不相等则转移到 MP1 MOV R1,#0FFH ;若比较相等,则-1(R1)LJMP MP3 MP1:JC MP2 ;两数不相等,(R0)0转 MP2 MOV R1,#0FFH ;(R0)0,1(R1)MP3:SJMP$END 实 验 七 循 环 程 序 设 计 一、实验目的 1进一步熟悉 MCS-51 指令系统,了解汇编语言程序设计的基本结构。2掌握循环结构程序设计的方法,弄清单重及多重循环控制过程。3通过设计软件延时程序,学会计算内外循环次数以及循环体的循环时间。二、实验内容 1 设计一个循环程序 具体要求:将内部 RAM 中 30
24、H 至 32H 的内容右移四位,程序流程图如图 2-3 所示。欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!30 2 设计循环程序:冒泡法排序。具体要求:设单片机 8031 外部 RAM 从 3600H 单元开始存放 10 个无符号数,试编写程序能使它们按从大到小的顺序排列(最大数存放在 3600H 单元)。程序流程图如图 2-4所示。3 自选题目设计。三、实验步骤 1输入预先编好的程序,汇编成功;2用自动单步方式执行程序,观察循环计数器的变化情况。3用断点运行方式调试排序程序,记录排序过程。四、实验报告要求 1编出相应的循环结构程序,列出程序清
25、单,并且会计算循环体的循环时间。2写出自选题目的设计内容、程序清单及运行结果。五、思考题 1程序中循环时间由什么来控制?2若用 DJNZ 或 CJNE 指令来控制循环,编写程序有什么不同?六、参考流程图 开始 4(R7)3(R6)0CY 30H(R0)(R0)(A)右移(A)一次 (A)(R0)(R0)+1(R0)N (R6)-1=0?Y N (R7)-1=0?Y 结束 图 2-3 循环结构程序流程图 七、循环结构程序参考清单:1三个字节右移四位:欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!31 ORG 0000H MOV R7,#4 RR30
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机硬件 技术 基础 软件 实验 讲义
限制150内