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

上传人:b****5 文档编号:3982438 上传时间:2022-11-26 格式:DOCX 页数:54 大小:238.35KB
下载 相关 举报
计算机硬件技术基础软件实验讲义新版.docx_第1页
第1页 / 共54页
计算机硬件技术基础软件实验讲义新版.docx_第2页
第2页 / 共54页
计算机硬件技术基础软件实验讲义新版.docx_第3页
第3页 / 共54页
计算机硬件技术基础软件实验讲义新版.docx_第4页
第4页 / 共54页
计算机硬件技术基础软件实验讲义新版.docx_第5页
第5页 / 共54页
点击查看更多>>
下载资源
资源描述

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

《计算机硬件技术基础软件实验讲义新版.docx》由会员分享,可在线阅读,更多相关《计算机硬件技术基础软件实验讲义新版.docx(54页珍藏版)》请在冰豆网上搜索。

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

计算机硬件技术基础软件实验讲义新版

第3章指令系统和汇编语言程序设计实验

本章实验主要包括指令系统和汇编语言程序设计两部分。

采用软件模拟调试的方法,目的在于通过这些实验可以使学生巩固所学知识,加深对MCS-51单片机内部结构、指令系统的理解,更进一步掌握汇编语言程序设计的方法和技巧。

3.1实验操作说明

Keil软件调试方式分为:

软件仿真方式和硬件调试两种。

实验一到实验十为软件仿真实验;实验十一到实验十四为硬件仿真实验。

3.1.1软件仿真实验上机操作步骤

1、进入Keil,点击桌面上“KeilμVersion3”图标,进入Keil系统窗口;

2、新建工程:

1)打开“工程”菜单中的新建,在弹出的对话框中,键入自己定义的工程名;

2)在进一步打开的对话框中,选择CPU的类型,为Intel公司的8032AH,确定;

3)存入D:

\keil文件夹中。

3、打开“视图”菜单中的“工程窗口”;

4、在“工程窗口”中,右击“目标1”,为工程设置参数;

1)在弹出的快捷菜单中选择“为目标“目标1”设置选项”;

2)在弹出的对话框中选择“项目”选项卡,设置时钟为“12Mhz”;

3)选择“调试”选项卡,在单选框选择“软件仿真方式”;

4)确定,即完成了“软件仿真方式”的设置。

5、新建文件

1)打开“文件”菜单,选择“新建”;

2)系统打开一个文本窗口,你可在窗口的编辑区输入要调试的汇编语言源程序;

3)存盘,命名文件名和扩展名,文件名任起,扩展名必须是.asm,存入D:

\keil文件夹中;例如:

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)在“输出窗口”显示汇编是否有错,无错,进入调试;

有错,在编辑窗口修改程序,改后,再次汇编,直至无错后进入调试;

8、调试程序

1)点击“开始/停止调试”按钮,进入调试界面;

2)在程序窗口中有一个黄箭头指向程序的第一条可执行指令的开头;

3)选择调试方式进行调试;

①在“调试”菜单中选择:

跟踪、单步、运行、断点等方式;

②或按单步或跟踪命令按钮,按一次单步,执行一条指令,pc指针指向下一条要被执行的指令;

③检查运行结果

Ⅰ打开“视图”菜单,选择“存储器窗口”,弹出存储器对话框;

Ⅱ在存储器对话框的下方选择memory1在地址栏中键入“C:

0X0000”回车,建立程序存储器的观察窗口;

Ⅲ选择memory2在地址栏中键入“D:

0X00”回车,建立内部数据存储器的观察窗口;

Ⅳ选择memory3在地址栏中键入“X:

0X0000”回车,建立外部数据存储器的观察窗口;

Ⅴ在“projectworkspace”窗口中观察r0-r7,a,pc,dptr,psw,要观察各个标志位,打开psw左侧的+号;

9、设置PC指针

当程序的首地址不是0000H时,汇编结束后,PC指针仍然指向0000H的地方,在调试程序前,一定要将PC设置到你的程序首地址处,方法为:

1)将光标移到程序的第一条指令处,击鼠标右键;

2)在快捷菜单中选择“SetProgramCounter”命令,PC指针即可指向程序的第一条指令。

3.1.2硬件仿真实验上机操作步骤

1、调试前硬件的连接

v用串口通信电缆连接TKSMonitor仿真器和计算机的串口

v用电源线连接TKSMonitor仿真器电源插口和实验仪电源输出插口

v用仿真电缆(40灰色排线)连接TKSMonitor仿真器和实验仪MCU锁紧插座

v检查连接,连接正确后,打开实验仪电源。

1)220V电源线

2)电源开关

3)电源指示灯

2、连接仿真器,TKSMonitor仿真器

1)40线仿真电缆,红线朝上

2)仿真器电源插口

3)RS-232C串口,连接计算机的COM1/COM2

4)仿真器复位按钮

5)仿真方式LOAD/RUN,选择RUN

6)仿真器状态指示灯POW/RUN/MON

3、实验仪连接

1)MCU锁紧座,仿真头插入,红线朝上,按下锁紧杆锁紧

2)实验仪电源输出插口

3)实验仪复位按钮

4、TKSMonitor仿真器状态

vLOAD:

下载方式暂不使用。

vRUN:

在Keil的UV3集成开发环境下,TKSMonitor仿真器即作为Keil的MON51调试器。

5、调试状态下的存储器模型

v内部MON51监控程序:

0000~7FFFH

v用户程序区:

8000H~0BFFFH

v用户数据区:

0C000H~0FFFFH

v外部I/O区:

0000H~7FFFH

注意:

在调试状态下,定时器T2、串行口UART已被MON51监控程序占用,用户不能使用。

6、工程设置

1)设备选择——单片机选择

NXP-P89C52X2

2)项目设置

①设置系统时钟频率:

11.0592MHz

②设置片外代码存储

Eprom#1开始:

0x8000,大小:

0x4000

③设置片外Xdata存储

Ram#1开始:

0xC000,大小:

0x4000

3)调试设置

选择使用“KeilMonitor-51Driver”;

目标系统设置:

设置串行口为:

COM1或COM2;

4)按“确定”按钮,保存设置并结束设置。

3.2指令系统实验

实验一熟悉键盘操作及数传指令编程设计

一、实验目的

1.熟悉软件模拟调试的环境及键盘操作。

2.掌握汇编语言程序设计的方法,加深对指令的理解。

3.学会软件模拟调试和察看修改观察项的方法。

二、实验内容

印证数据传送指令的功能、寻址方式以及PC指针、SP指针、DPTR指针、Ri指针分别对代码段、堆栈段、外扩数据存储器段、位寻址区等不同存储器的访问方式。

三、实验步骤

1.进入调试软件环境,输入源程序;

2.汇编源程序;

3.用单步方式运行程序;

4.检查并记录各寄存器和存储单元内容的变化。

四、程序清单

1.内部RAM数据传送

1)寄存器寻址与立即寻址,需要查看的数据有A、PSW和不同寄存器区的Rn等单元的内容。

ORG0000H

MOVPSW,#00H

MOVR0,#30H

MOVA,R0

MOVR6,A

MOVPSW,#14H

MOVR0,#30H

MOVA,R0

MOVR6,A

MOVPSW,#10H

MOVR0,#30H

MOVA,R0

MOVR6,A

MOVPSW,#08H

MOVR0,#30H

MOVA,R0

MOVR6,A

SJMP$

END

2)直接寻址,需查看30H、31H、32H、40H、ACC、PSW等单元的内容。

ORG0100H

MOV30H,#45H

MOV31H,#46H

MOV02H,31H

MOV0E0H,30H

MOV32H,ACC

MOVACC,PSW

MOV40H,ACC

SJMP$

END

3)寄存器间接寻址,需查看@R0、RO等的内容。

ORG0200H

MOV30H,#66H

MOVR0,#30H

MOV@R0,#30H

SJMP$

END

2.外部数据传送

需要查看的数据有外部数据存储器单元2000H,外部程序存储器单元2001H。

ORG0000H

MOVA,#89H

MOVDPTR,#2000H

MOVX@DPTR,A

INCDPTR

CLRA

MOVCA,@A+DPTR

SJMP$

ORG2000H

DB44H

DB78H

DB67H

END

3.堆栈操作

需要查看的数据有50H、51H、A及SP指针和堆栈区中数据随PUSH和POP指令执行后的变化情况和数据的存放次序等。

1)可用于保护现场和恢复现场的程序

ORG0000H

MOVSP,#5FH

MOV50H,#3BH

MOV51H,#2FH

MOVA,#12H

PUSH50H

PUSH51H

PUSHACC

POP0E0H

POP51H

POP50H

SJMP$

END

2)可用于数据交换的程序

ORG0100H

MOVSP,#6FH

MOV50H,#3BH

MOV51H,#2FH

PUSH50H

PUSH51H

POP50H

POP51H

SJMP$

END

4.数据交换

记录每条指令运行后的结果,从而加深对各种不同的交换指令的理解。

1)SWAP指令

ORG0000H

MOVA,#58H

SWAPA

MOV40H,A

SJMP$

END

2)XCHD指令

ORG0030H

MOVA,#30H

MOVR0,#30H

MOV@R0,#09H

XCHDA,@R0

MOV41H,A

SJMP$

END

3)XCH指令

ORG0100H

MOV50H,#1

MOVA,#89H

XCHA,50H

MOVR7,#3

XCHA,R7

XCHA,@R0

SJMP$

END

五、思考题

1、寄存器寻址与寄存器间接寻址有什么区别?

2、PC指针与SP指针有什么区别?

3、DPTR指针与Ri(R0,R1)指针有什么区别?

4、立即寻址与直接寻址有什么区别?

5、同一个特殊功能寄存器不同表达形式。

6、三种不同的交换指令的区别是什么?

实验二数传指令程序设计

一、实验目的

1.掌握数据块的传送操作和算术运算指令的应用。

2.进一步掌握汇编语言设计和调试方法。

3.掌握观察窗口的使用方法。

4.学会给存储单元赋初值的方法。

二、实验内容

1、把内部RAM40H~4FH置初值0A0H~0AFH;

2、而后把40H~4FH内容传送到外部RAM9800H~980FH中;

3、再把9800H~980FH内容传送到50H~5FH中。

三、实验步骤

1.分别用单步和连续运行方式,调试上述程序;

2.在观察窗口中观察结果。

四、实验程序清单

数据块传送参考程序:

ORG0000H

MAIN:

MOVR0,#40H

MOVR2,#10H

MOVA,#0A0H

A1:

MOV@R0,A

INCR0

INCA

DJNZR2,A1

MOVR0,#40H

MOVDPTR,#9800H

MOVR2,#10H

A2:

MOVA,@R0

MOVX@DPTR,A

INCR0

INCDPTR

DJNZR2,A2

MOVR0,#50H

MOVDPTR,#9800H

MOVR2,#10H

A3:

MOVXA,@DPTR

MOV@R0,A

INCDPTR

INCR0

DJNZR2,A3

SJMP$

END

五、思考题

1)若两个数据块都在外部数据存储器中,如何实现数据块的传送?

2)在调试程序时,若不用程序给40H~4FH赋初值,而用键盘在CPUDATA区给40H~4FH单元预赋初值,如何做?

实验三算数运算指令编程设计

一、实验目的

1、掌握算术运算指令及其应用。

2、进一步掌握汇编语言设计和调试方法。

3、掌握观察窗口的使用方法。

4、学会给存储单元赋初值的方法。

二、实验内容

1、求两个无符号数求和及差;

2、求两个带符号数求和及差;

3、求两个压缩的BCD码数的和及差。

三、实验步骤

1.分别用单步和连续运行方式,调试上述各个程序;

2.在观察窗口中观察结果。

四、实验程序清单

1、计算下面各式中两个无符号数的和及差,观察CY,并记录运算结果,并求出结果的真值。

(1)计算200+200

(2)计算36589+46542

(3)计算100-200及200-100

(4)计算36589-16542及16542-36589

1)加法的参考程序:

(1)计算两个单字节数的和的参考程序:

ORG0000H

MAIN:

MOVA,#200

ADDA,#200

SJMP$

END

(2)计算两个双字节数的和的参考程序:

ORG0100H

MAIN:

MOVA,#low(36589)

ADDA,#low(46542)

MOV30H,A

MOVA,#HIGH(36589)

ADDCA,#HIGH(46542)

MOV31H,A

MOVA,#0

ADDCA,#0

MOV32H,A

SJMP$

END

2)减法的参考程序

(1)两个单字节数的减法程序

ORG0000H

MAIN:

CLRC

MOVA,#100

SUBBA,#200

SJMP$

END

(2)两个双字节数的减法程序

ORG0100H

MAIN:

CLRC

MOVA,#low(36589)

SUBBA,#low(16542)

MOV30H,A

MOVA,#HIGH(36589)

SUBBA,#HIGH(16542)

MOV31H,A

MOVA,#0

SUBBA,#0

MOV32H,A

SJMP$

END

2、计算下面各式中两个带符号数的和及差,观察OV,并记录运算结果,并求出结果的真值。

(1)计算56+78

(2)计算120+120

(3)计算-56-78

(4)计算-120-123

参考程序见无符号数的加法和减法程序。

3、BCD码运算,观察CY、AC,并记录运行结果,求出结果的真值。

1)计算56+99

参考程序:

ORG0000H

MAIN:

MOVA,#56H

ADDA,#99H

DAA

MOV30H,A

SJMP$

END

2)计算56-99

参考程序:

ORG0000H

MAIN:

CLRC

MOVA,#9AH

SUBBA,#99H

ADDA,#56H

DAA

MOV30H,A

CPLC

SJMP$

被加数

(33H)

(32H)

(31H)

(30H)

36H

82H

65H

29H

加数

(23H)

(22H)

(21H)

(20H)

29H

54H

12H

65H

(23H)

(22H)

(21H)

(20H)

END

3)计算36826529+29541265

多字节十进制加法参考程序:

ORG0000H

MAIN:

MOVR0,#30H

MOVR1,#20H

MOV2FH,#04H

CLRC

DA1:

MOVA,@R0

ADDCA,@R1

DAA

MOV@R1,A

INCR0

INCR1

DJNZ2FH,DA1

MOV7FH,C

SJMP$

END

五、思考题

1)如果求两个带符号数的和或差出现了溢出,如何将两个运算数扩大字节后再做一遍,再观察OV,记录结果,求出真值,计算结果还溢出吗?

2)在多字节十进制加法程序,若两数的和存放到从40H开始的单元,如何修改程序?

实验四逻辑运算及位操作指令编程设计

一、实验目的

(1)熟悉字节逻辑运算指令功能。

(2)熟悉位操作指令运算功能。

(3)从而更深入的掌握汇编语言程序设计。

(4)学会观察CPU窗口中BIT区的变化。

二、实验内容

1.字节逻辑运算程序

在片内RAM的FIRST和SECOND单元中各有一符号数X和Y,要求按下列条件算出Z,存入RESULT单元中(设运算结果仍为8位数)。

 

FIRSTEQU30H

SECONDEQU31H

RESULTEQU32H

ORG0000H

START:

MOVR0,FIRST

MOVA,R0

JBACC.7,NEG

MOVB,#2

DIVAB

MOVA,B

JZTEMP1

MOVA,R0

ADDA,SECOND

SJMPRES

TEMP1:

MOVA,R0

ANLA,SECOND

SJMPRES

NEG:

CPLACC.7

MOVB,#2

DIVAB

MOVA,B

JZTEMP2

MOVA,R0

ORLA,SECOND

SJMPRES

TEMP2:

MOVA,R0

XRLA,SECOND

RES:

MOVRESULT,A

SJMP$

END

2.位操作程序

布尔电路图如下:

XBIT00H

YBIT01H

ZBIT02H

FBIT03H

ORG0000H

START:

MOVC,Z

ANLC,/Y

MOVF,C

MOVC,Y

ANLC,/Z

ORLC,F

MOVF,C

MOVC,X

ANLC,Y

ORLC,/F

MOVF,C

SJMP$

END

3.拆字程序

把外部数据存储器2000H单元的内容拆开,其高四位送2001H低四位,低四位送2002H低四位,2001H、2002H高四位清零。

需要检查2000H、2001H和2002H单元的内容。

程序框图如图3-1所示。

 

参考程序清单:

ORG0000H

MOVDPTR,#2000H

MOVXA,@DPTR

MOVB,A

SWAPA

ANLA,#0FH

INCDPTR

MOVX@DPTR,A

INCDPTR

MOVA,B

ANLA,#0FH

MOVX@DPTR,A

SJMP$

END

4.拼字程序

把外部数据存储器2000H、2001H单元的低四位分别送2002H高低四位。

需要察看2000H、2001H和2002H单元内容。

程序框图如图3-2所示:

图3-2拼字程序流程图

 

参考程序清单:

ORG0000H

MOVDPTR,#2000H

MOVXA,@DPTR

ANLA,#0FH

SWAPA

MOVB,A

INCDPTR

MOVXA,@DPTR

ANLA,#0FH

ORLA,B

INCDPTR

MOVX@DPTR,A

SJMP$

END

5.自选程序设计

三、思考题

1.字节与位逻辑运算指令在编程上什么区别?

应注意什么?

2.若把两位十六进制数转换成对应的ASCII码,应如何编写程序?

3.采用其它方法设计第一个程序。

4.如何用断点方式调试本程序?

 

实验四代码转换

一、实验目的

1.掌握各种代码转换的算法,加深对各种数据编码的理解。

2.学会软件模拟调试和察看修改观察项的方法来观察转换结果。

三、实验内容

1.分析清楚个程序的功能。

2.调试各种代码转换的程序。

三、实验步骤

1.进入调试软件环境,输入源程序;

2.汇编源程序;

3.用单步或全速方式运行程序;

4.查看最终结果。

四、程序清单

1.十六进制数ASCII码

将十六进制数据08H,0CH转换成ASCII码,转换结果存入30H,31H两个单元中,再将30H,31H两个单元中的数据分别增1,然后转换成十六进制数存入40H,41H两个单元中。

ORG0000H

MOVSP,#2FH

MOVA,#08H

ADDA,#30H

PUSHACC

MOVA,#0CH

ADDA,#37H

PUSHACC

MOVA,30H

INCA

CLRC

SUBBA,#30H

MOV40H,A

POPACC

INCA

SUBBA,#37H

MOV41H,A

POPACC

SJMP$

END

2.二进制数BCD码

将二进制数10011011B转换成BCD码数,存入30H和31H单元中;再将30H单元中的数据加16H后,转换成二进制数据,存入40H单元中。

ORG0000H

MOVA,#10011011B

MOVB,#100

DIVAB

MOV30H,A

MOVA,B

MOVB,#10

DIVAB

SWAPA

ORLA,B

MOV31H,A

MOVA,30H

ADDA,#16H

DAA

PUSHACC

ANLA,#00001111B

MOV40H,A

POPACC

ANLA,#11110000B

SWAPA

MOVB,#10

MULAB

ADDA,40H

MOV40H,A

SJMP$

END

3.BCD码ASCII码

将20H单元中压缩的BCD码数78H转换成ASCII码,转换结果存入30H,31H两个单元中,再将30H,31H两个单元中的数据分别增1,然后转换成压缩BCD码数存入21H单元中。

ORG0000H

MOVA,20H

ANLA,#00001111B

ADDA,#30H

MOV30H,A

PUSHACC

MOVA,20H

ANLA,#11110000B

SWAPA

ADDA,#30H

MOV31H,A

INCA

CLRC

SUBBA,#30H

MOVR2,A

POPACC

INCA

CLRC

SUBBA,#30H

SWAPA

ORLA,R2

MOV21H,A

SJMP$

END

5.自选程序设计

六、思考题

1.如何查看上面三个程序的结果。

2.在程序1中,如果十六进制数未指定是否包含A~F数码,程序应如何修改?

3.在程序2中,如果要转换的二进制数是十六位的,程序应如何编写?

4.十六进制数转换成ASCII码与BCD码数转换成ASCII码有何区别?

实验五移位操作

一、实验目的:

掌握移位操作的方法,并理解左移或右移与乘除法运算的关系。

二、实验内容:

1.双字节二进制数左

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 考试认证 > 财会金融考试

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

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