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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(计算机硬件技术基础软件实验讲义北辰版528.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

计算机硬件技术基础软件实验讲义北辰版528.docx

1、计算机硬件技术基础软件实验讲义北辰版528第3章 指令系统和汇编语言程序设计实验 本章实验主要包括指令系统和汇编语言程序设计两部分。采用软件模拟调试的方法,目的在于通过这些实验可以使学生巩固所学知识,加深对MCS-51单片机内部结构、指令系统的理解,更进一步掌握汇编语言程序设计的方法和技巧。3.0 实验操作说明Keil 软件调试方式分为:软件仿真方式和硬件调试两种。实验一到实验十为软件仿真实验;实验十一到实验十四为硬件仿真实验。3.0.1 软件仿真实验上机操作步骤1、进入Keil,点击桌面上“Keil Version 3”图标,进入Keil系统窗口;2、新建工程: 1)打开“工程”菜单中的新建

2、,在弹出的对话框中,键入自己定义的工程名; 2)在进一步打开的对话框中,选择CPU的类型,为Intel公司的8032AH,确定。3、打开“视图”菜单中的“工程窗口”;4、在“工程窗口”中,右击“目标1”,为工程设置参数; 1)在弹出的快捷菜单中选择“为目标“目标1”设置选项”; 2)在弹出的对话框中选择“项目”选项卡,设置时钟为“12Mhz”; 3)选择“调试”选项卡,在单选框选择“软件仿真方式”; 4)确定,即完成了“软件仿真方式”的设置。5、新建文件 1)打开“文件”菜单,选择“新建”; 2)系统打开一个文本窗口,你可在窗口的编辑区输入要调试的汇编语言源程序; 3)存盘,命名文件名和扩展名

3、,文件名任起,扩展名必须是.asm,存盘;例如:a.asm。6、将刚建的新文件添入当前的工程中 1)在“工程窗口”中,“目标1”的+号处打开,显示“源代码组1”; 2)右击“源代码组1”,在快捷菜单中选择“为“源代码组1”添加文件”,弹出一个对话框; 3)在对话框中选择“文件类型”为*.*; 4) 选择文件所在路径,同时找到刚键入的a.asm文件,点击“add”按钮,然后点击“close”按钮; 5) 在“工程窗口”点击“源代码组1”左侧的+号,显示添加的a.asm文件,添加成功。7、汇编 1)在“工程窗口”点击“源代码组1”的a.asm文件; 2)打开“a.asm”文件编辑窗口; 3)点击工

4、具按钮中的“重建所有的目标文件”,进行汇编; 4)在“输出窗口”显示汇编是否有错,无措,进入调试; 有错,在编辑窗口修改程序,改后,再次汇编,直至无措后进入调试;8、调试程序 1)点击“开始/停止调试”按钮,进入调试界面; 2)在程序窗口中有一个黄箭头指向程序的第一条可执行指令的开头; 3)选择调试方式进行调试; 在“调试”菜单中选择:跟踪、单步、运行、断点等方式; 或按单步或跟踪命令按钮,按一次单步,执行一条指令,pc指针指向下一条要被执行的指令; 检查运行结果 打开“视图”菜单,选择“存储器窗口”,弹出存储器对话框; 在存储器对话框的下方选择memory1在地址栏中键入“C:0X0000”

5、回车,建立程序存储器的观察窗口; 选择memory2在地址栏中键入“D:0X00”回车,建立内部数据存储器的观察窗口; 选择memory3在地址栏中键入“X:0X0000”回车,建立外部数据存储器的观察窗口; 在“project workspace”窗口中观察r0-r7,a,pc,dptr,psw,要观察各个标志位,打开psw左侧的+号; 9、设置PC指针 当程序的首地址不是0000H时,汇编结束后,PC指针仍然指向0000H的地方,在调试程序前,一定要将PC设置到你的程序首地址处,方法为:1)将光标移到程序的第一条指令处,击鼠标右键;2)在快捷菜单中选择“Set Program Counte

6、r”命令,PC指针即可指向程序的第一条指令。3.0.2 硬件仿真实验上机操作步骤1、调试前硬件的连接v 用串口通信电缆连接TKSMonitor仿真器和计算机的串口v 用电源线连接TKSMonitor仿真器电源插口和实验仪电源输出插口v 用仿真电缆(40灰色排线)连接TKSMonitor仿真器和实验仪MCU锁紧插座v 检查连接,连接正确后,打开实验仪电源。 1)220V电源线2)电源开关3)电源指示灯2、连接仿真器,TKSMonitor仿真器1)40线仿真电缆,红线朝上2)仿真器电源插口3)RS-232C串口,连接计算机的COM1/COM24)仿真器复位按钮5)仿真方式 LOAD/RUN,选择R

7、UN6)仿真器状态指示灯 POW/RUN/MON3、实验仪连接1)MCU锁紧座,仿真头插入,红线朝上,按下锁紧杆锁紧2)实验仪电源输出插口3)实验仪复位按钮4、TKSMonitor仿真器状态v LOAD:下载方式暂不使用。v RUN:在Keil的UV3集成开发环境下, TKSMonitor仿真器即作为Keil的MON51调试器。5、调试状态下的存储器模型v 内部MON51监控程序:00007FFFHv 用户程序区: 8000H0BFFFHv 用户数据区: 0C000H0FFFFHv 外部I/O区: 0000H7FFFH 注意:在调试状态下,定时器T2、串行口UART已被MON51监控程序占用,

8、用户不能使用。6、工程设置1)设备选择单片机选择 NXP-P89C52X22) 项目设置设置系统时钟频率:11.0592MHz设置片外代码存储Eprom #1 开始:0x8000,大小:0x4000设置片外Xdata存储 Ram #1 开始:0xC000,大小:0x40003)调试设置选择 使用“Keil Monitor-51 Driver”;目标系统设置:设置串行口为:COM1或COM2;4)按“确定” 按钮,保存设置并结束设置。3.1 指令系统实验实验一 熟悉键盘操作及数传指令编程设计一、 实验目的1 熟悉软件模拟调试的环境及键盘操作。2 掌握汇编语言程序设计的方法,加深对指令的理解。3

9、学会软件模拟调试和察看修改观察项的方法。二、 实验内容印证数据传送指令的功能、寻址方式以及PC指针、SP指针、DPTR指针、Ri指针分别对代码段、堆栈段、外扩数据存储器段、位寻址区等不同存储器的访问方式。 三、实验步骤1 进入调试软件环境,输入源程序;2 汇编源程序;3 用单步方式运行程序;4 检查并记录各寄存器和存储单元内容的变化。四、程序清单1. 内部RAM数据传送需要查看的数据有30H,31H,A,R0等。ORG 0000H MOV R0,#30HMOV 30H,#45H MOV 31H,#46H MOV R2,30H MOV 02H,31H MOV A,#87H MOV 0E0H,30

10、H MOV 30H,A MOV 31H,R0 SJMP $ END2. 外部数据传送需要查看的数据有外部数据存储器单元2000H,外部程序存储器单元2001H。ORG 0000H MOV A,#89H MOV DPTR,#2000H MOVX DPTR,A INC DPTRCLR A MOVC A,A+DPTR SJMP $ ORG 2000H DB 44H DB 78H DB 67H END3. 堆栈操作需要查看的数据有50H、51H、A及SP指针和堆栈区中数据随PUSH和POP指令执行后的变化情况和数据的存放次序等。1)可用于保护现场和恢复现场的程序ORG 0000H MOV SP,#5F

11、HMOV 50H,#3BHMOV 51H,#2FHMOV A,#12H PUSH 50H PUSH 51H PUSH ACCPOP 0E0H POP 51H POP 50H SJMP $ END 2)可用于数据交换的程序ORG 0100H MOV SP,#6FHMOV 50H,#3BHMOV 51H,#2FH PUSH 50H PUSH 51H POP 50H POP 51H SJMP $ END4.数据交换 记录每条指令运行后的结果,从而加深对各种不同的交换指令的理解。 ORG 0000H MOV A,#58H SWAP A MOV 40H,A MOV A,#30H MOV R0,#30H

12、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 寄存器寻址与寄存器间接寻址有什么区别?2 PC指针与SP指针有什么区别?3 DPTR指针与Ri(R0,R1)指针有什么区别?4 立即寻址与直接寻址有什么区别?4. 同一个特殊功能寄存器不同表达形式。实验二 数传指令和算数运算指令编程设计一、 实验目的1 掌握数据块的传送操作和算术运算指令的应用。2 进一步掌握汇编语言设计和调试方法。3 掌握观察窗口的使用方法。4 学会给存储单元赋初值的方法。二、

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

14、00H MAIN: MOV R0,#40H MOV R2,#10H 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 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 多字节十进制

15、加法: ORG 0000HMAIN: MOV R0, #30H MOV R1, #20H MOV 2FH,#04H CLR C DA1: MOV A,R0ADDC 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开始的

16、单元,如何修改程序?实验三 逻辑运算及位操作指令编程设计一、 实验目的(1) 熟悉字节逻辑运算指令功能。(2) 熟悉位操作指令运算功能。 (3)从而更深入的掌握汇编语言程序设计。 (4)学会观察CPU窗口中BIT区的变化。二、 实验内容1 字节逻辑运算程序在片内RAM的FIRST和SECOND单元中各有一符号数X和Y,要求按下列条件算出Z,存入RESULT单元中(设运算结果仍为8位数)。 FIRST EQU 30H SECOND EQU 31H RESULT EQU 32H ORG 0000H START:MOV R0,FIRST MOV A, R0 JB ACC.7, NEG MOV B,

17、#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 MOV B, #2 DIV AB MOV A, B JZ TEMP2 MOV A, R0 ORL A, SECOND SJMP RES TEMP2: MOV A, R0 XRL A, SECOND RES: MOV RESULT, ASJMP $END 2位操作程序 布尔电路图如下: X BIT 00H Y BIT 01H Z BIT 02H F BIT 03H OR

18、G 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 MOV F, C SJMP $ END 3拆字程序把外部数据存储器2000H单元的内容拆开,其高四位送2001H低四位,低四位送2002H低四位,2001H、2002H高四位清零。 需要检查2000H、 2001H和2002H单元的内容。程序清单ORG 0000HMOV DPTR,#2000HMOVX A,DPTRMOV B,ASWAP AANL A,#0FHINC DPTR MO

19、VX DPTR,A INC DPTR MOV A,B ANL A,#0FHMOVX DPTR,A SJMP $END程序框图 4拼字程序把外部数据存储器2000H、2001H单元的低四位分别送2002H高低四位。需要察看2000H、2001H和2002H单元内容。程序框图:程序清单ORG 0000HMOV DPTR,#2000HMOVX A,DPTRANL A,#0FHSWAP AMOV B,AINC DPTR MOVX A,DPTR ANL A,#0FH ORL A,B INC DPTRMOVX DPTR,ASJMP $END5自选程序设计 三、 思考题1 字节与位逻辑运算指令在编程上什么区

20、别?应注意什么?2 若把两位十六进制数转换成对应的ASCII码,应如何编写程序?3 采用其它方法设计第一个程序。4 如何用断点方式调试本程序?实验四 代码转换一、实验目的1掌握各种代码转换的算法,加深对各种数据编码的理解。2学会软件模拟调试和察看修改观察项的方法来观察转换结果。三、 实验内容1分析清楚个程序的功能。2调试各种代码转换的程序。三、实验步骤1进入调试软件环境,输入源程序;2汇编源程序;3用单步或全速方式运行程序;4查看最终结果。四、程序清单1十六进制数 ASCII码 将十六进制数据08H,0CH转换成ASCII码,转换结果存入30H,31H两个单元中,再将30H,31H两个单元中的

21、数据分别增1,然后转换成十六进制数存入40H,41H两个单元中。ORG 0000HMOV 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二进制数 BCD码将二进制数10011011B转换成BCD码数,存入30H和31H单元中;再将30H单元中的数据加16H后,转换成二进制数据,存入40H单元中。ORG 0000HMOV A,#10011011

22、BMOV B,#100DIV ABMOV 30H,AMOV A,BMOV B,#10DIV ABSWAP AORL A,BMOV 31H,AMOV A,30HADD A,#16HDA APUSH ACCANL A,#00001111BMOV 40H,APOP ACCANL A,#11110000BSWAP AMOV B,#10MUL ABADD A,40HMOV 40H,ASJMP $END3BCD码 ASCII码 将20H单元中压缩的BCD码数78H转换成ASCII码,转换结果存入30H,31H两个单元中,再将30H,31H两个单元中的数据分别增1,然后转换成压缩BCD码数存入21H单元中。

23、 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 MOV 21H,A SJMP $ END5 自选程序设计六、 思考题1. 如何查看上面三个程序的结果。2. 在程序1中,如果十六进制数未指定是否包含AF数码,程序应如何修改?3. 在程序2中,

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

25、y右移一位。功能示意图程序清单 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如何移位?实现的功能有何不同?3.2汇编语言程序设计实验实验六 分支程序设计一、 实验目的1. 进一步熟悉MCS-51指令系统,了解汇编语言程序设计的基本结构。2. 掌握分支结构程序设计的方法。3. 学会用条件转移指令、CJNE、JMP及其配合使用来编写二分支、三分支和多分支程序。二、 实验内

26、容 1. 二分支的条件转移程序设变量X存放于R0,函数值Y存放在R1,其中X、Y均为二进制数。试按照下式的要求给Y赋值:Y=1X00X=0-1X 0转MP2 MOV R1,#0FFH ;(R0) 0,1 (R1) MP3: SJMP $ END实验七 循环程序设计 一、实验目的1 进一步熟悉MCS-51指令系统,了解汇编语言程序设计的基本结构。2 掌握循环结构程序设计的方法,弄清单重及多重循环控制过程。3 通过设计软件延时程序,学会计算内外循环次数以及循环体的循环时间。二、 实验内容1 设计一个循环程序具体要求:将内部RAM中30H至32H的内容右移四位,程序流程图如图2-3所示。2 设计循环程序:冒泡法排序。具体要求:设单片机8031外部RAM从3600H单元开始存放10个无符号数,试编写程序能使它们按从大到小的顺序排列(最大数存放在3600H单元)。程序流程图如图2-4所示。 3 自选题目设计。三、 实验步骤1 输入预先编好的程序,汇编成功;2 用自动单步方式执行程序,观察循环计数器的变化

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

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