第6章 指令和寻址方式的验证.docx
《第6章 指令和寻址方式的验证.docx》由会员分享,可在线阅读,更多相关《第6章 指令和寻址方式的验证.docx(37页珍藏版)》请在冰豆网上搜索。
第6章指令和寻址方式的验证
第6章指令和寻址方式的验证实验
实验1数据传送类指令的验证实验
一.实验目的
1.学习、掌握MCS-51单片机片内、外部数据传送类指令的使用方法;
2.学习、掌握QTH仿真器的使用方法。
二.实验设备及器件
1.PC机一台
2.QTH仿真器一台
三.实验内容
1.进入QTH2003版仿真开发系统环境,学习软件仿真及QTH仿真器的使用方法;
2.完成各种寻址方式的验证;以及内存与外存之间的数据传送。
四.实验要求
1.在QTH2003软件仿真环境下编写、运行实验程序;
2.掌握MCS-51单片机内部、外部数据传送指令,以A、Rn、Direct、@Ri、@DPTR为目的操作数的使用方法;
3.掌握在QHT仿真环境下如何建立一个新文件、调试程序以及查看内外部RAM、特殊功能寄存器数据变化情况等。
五.实验步骤
1.新建文件,如附图6-1所示,单击“新建”,输入参考程序清单;
2.保存新建文件,如附图6-2所示,单击“保存”,在打开的“保存为”对话框上键入新建文件名“实验一.ASM”,注意:
文件的扩展名必须是“.ASM”,如附图6-3所示;
3.仿真器设置,如附图6-4所示,单击“设置”,在“仿真模拟设置”窗口上选中“8052模式”、在“仿真存储器模选择”的选项中单击“内程序存储器内数据存储器”、仿真器主频选中“12MHz”、单击“确认”,如附图6-5所示;
4.新建项目,如附图6-6所示,单击“项目”/“新建项目”,在“新建项目”对话框内键入新建项目名“实验一.PRJ”、选中“立即加入模块文件”、单击“确认”,如附图6-7所示。
在“打开”对话框上单击要运行的实验程序名“实验一.ASM”,单击“打开”,如附图6-8所示。
在“workspace”对话框上单击选项卡“project”,打开目标文件,找到源文件实验一路径,双击,打开新建项目如附图6-9所示;
5.编译新建文件,如附图6-10所示,单击“编译当前项目”。
如果实验程序中没有语法错误,则在“output”窗口上可见“0warning(s)0error(s)”,表示编译成功,如附图6-11所示;
6.实验程序的运行,实验程序既可以单步运行,也可以全速运行。
为了便于观察各内存单元数据的变化情况,单步运行程序如附图6-12所示;
7.QTH2003仿真软件界面窗口对话框简介,如附图6-13所示;
8.在Workspace窗口上单击选项卡“REG”,查看A,R2初始值。
在Memory-1窗口上单击选项卡Data和XData分别查看内部RAM30H、40H、41H、42H和外部RAM1000H、1001H、1002H单元初值,如图6-1-1、图6-1-2所示;
图6-1-1内部RAM程序运行前结果图6-1-2外部RAM程序运行前结果9.单步执行实验程序,查看A、R2、30H、40H、41H、42H、1000H、1001H、1002H单元的值,运行结果如图6-1-3、图6-1-4所示,将运结果填入表6-1-1。
比较程序运行前后A、R2、30H、40H、41H、42H1000H、1001H、1002H的值。
图6-1-3内部RAM程序运行后结果图6-1-4外部RAM程序运行后结果
调试程
序状态
相关内存单元值
A
R2
40H
41H
42H
1000H
1001H
1002H
运行前
运行后
表6-1-1调试程序运行情况
6.预习要求
1.预习教材相关章节,掌握用于片内、外数据存储器传送指令的使用方法;
2.写出预习报告。
7.参考程序
1).实验内容1参考程序
ORG
0030H
MOV
A,#20H
;A
20H,给A赋初值
MOV
R2,#05H
;R2
05H,给R2赋初值
MOV
30H,#0FH
;31H
0FH,给30单元赋初值
MOV
40H,A
;40H
A
MOV
41H,R2
;41H
R2
MOV
42H,30H
;42H
30H
MOV
DPTR,#1000H
;DPTR
1000H
MOV
A,40H
;A
(40H)
MOVX
@DPTR,A
;1000H
A
MOV
DPTR,#1001H
;DPTR
1001H
MOV
A,41H
;A
(41H)
MOVX
@DPTR,A
;1001H
A
MOV
DPTR,#1002H
;DPTR
1002H
MOV
A,42H
;A
(42H)
MOVX
@DPTR,A
;1002H
A
END
8.实验报告要求1.整理实验数据,填写数据表6-1-1;2.写出完成“实验要求”的程序清单。
9.QTH仿真器使用方法图示
附图6-1附图6-2
附图6-3附图6-4
附图6-5附图6-6
附图6-7附图6-8
附图6-9附图6-10
附图6-11附图6-12
附图6-13
实验2程序存储器数据传送、堆栈、交换指令的应用实验
一.实验目的
1.学习、掌握MCS-51单片机程序存储器传送、堆栈、交换指令的使用方法;
2.学习、掌握QTH仿真器的使用方法。
二.实验设备及器件
1.PC机一台
2.QTH仿真器一台
三.实验内容
1.进入QTH2003版仿真开发系统环境,学习软件仿真及QTH仿真器的使用方法;
2.在程序存储器1000H~1009H单元中分别存放着0~9的ASII码,请编写一段程序将6、7、8读出来,送到内部RAM30H开始的三个单元中去;
3.将内部RAM30H单元内容25H与A中内容79H互换,然后,将A中数据存入由R0所寻址的内部RAM40H单元(40H中存放数据为18H),A的高4位存入该单元的低4位,A的低4位存入该单元的高4位;
4.在外部RAM0030H开始的三个单元内,存放着5、6、7三个十进制数,利用堆栈指令将其送入内部RAM50H、51H、52H三个单元内,存放顺序为7、6、5。
四.实验要求
1.在QTH2003软件仿真环境下编写、运行实验程序。
五.实验步骤
1.实验内容2
(1)新建文件,如附图6-1所示(附图6-在实验一后),单击“新建”,输入参考程序清单;
(2)保存新建文件,如附图6-2所示,单击“保存”,在打开的“保存为”对话框上键入新建文件名“实验二.ASM”,注意:
文件的扩展名必须是“.ASM”,如附图6-3所示;
(3)仿真器设置,如附图6-4所示,单击“设置”,在“仿真模拟设置”窗口上选中“8052模式”、单击“内程序存储器内数据存储器”、仿真器主频选择“12MHz”、单击“确认”,如附图6-5所示;
(4)新建项目,如附图6-6所示,单击“项目”/“新建项目”,在“新建项目”对话框内键入新建项目名“实验二.PRJ”、选中“立即加入模块文件”、单击“确认”,如附图6-7所示。
在“打开”对话框上单击要运行的实验程序名称“实验二.ASM”、单击“打开”,如附图6-8所示。
在“workspace”对话框上单击选项卡“project”,打开目标文件,找到源文件实验二路径,双击,打开新建项目如附图6-9所示;
(5)编译新建文件,如附图6-10所示,单击“编译当前项目”。
如果实验程序中没有语法错误,则在“output”窗口上显示“0warning(s)0error(s)”,表示编译成功,如附图6-11所示;
(6)实验程序的运行,实验程序既可以单步运行,也可以全速运行。
为了便于观察各内存单元数据的变化情况,单步运行程序如附图6-12所示;
(7)QTH2003仿真软件界面窗口对话框简介,如附图6-13所示;
(8)图6-2-1为程序存储器1000H~1009H单元初始化结果;
(9)在Memory-1窗口上图6-2-2为内部RAM30H~32H单元的运行结果,
图6-2-11000H~1009H单元初始化结果图6-2-230H~32H单元的运行结果
2.实验内容3
(1)~(6)同上;
(7)单步运行实验程序,在Memory-1窗口上查看RAM00H、30H、40H单元的运行结果,如图6-2-3所示。
图6-2-3内部RAM运行结果图6-2-4修改外部RAM数据结果3.实验内容4
(1)~(6)与实验内容2基本相同,只是仿真器设置应为“内程序存储器外数据存储器”;
(7)在Memory-1窗口上单击选项卡XData找到外部RAM0030H、0031H、0032H单元,双击其数据,选中后将原来的000000修改成353637(注意:
修改RAM数据时输入法必须是“中文(中国)”),如图6-2-4所示;
(8)在Memory-1窗口上单击选项卡Data找到内部RAM50H、51H、52H单元,单步运行程序,观察50H、51H、52H单元数据的变化情况。
程序运行结果如图6-2-5所示。
图6-2-5程序运行结果
六.预习要求
1.预习教材相关章节,掌握用于片内、外数据存储器传送指令的使用方法;
2.写出预习报告。
七.参考程序
1.实验内容2参考程序
ORG
0000H
MOV
DPTR,#1000H
;立即数1000H送DPTR
MOV
A,#6
;立即数6送A
MOVC
A,@A+DPTR
;查取1006单元数据
MOV
30H,A
;1006单元数据送30H单元
MOV
A,#7
;立即数7送A
MOVC
A,@A+DPTR
;查取1007单元数据
MOV
31H,A
;1007单元数据送31H单元
MOV
A,#8
;立即数8送A
MOVC
A,@A+DPTR
;查取1008单元数据
MOV
32H,A
;1008单元数据送32H单元
;用伪指令DB直接在程序存储中确定出0~9的存放位置为1000H~1009H单元
;30H~39H为0~9的ASCII码
ORG1000H
DB30H,31H,32H,33H,34H,35H,36H,37H,38H,39H
END
2.实验内容3参考程序
ORG
0000H
MOV
R0,#40H
;立即数40H送R0
MOV
30H,#25H
;立即数25H送30H单元
MOV
A,#79H
;立即数79H送A
MOV
40H,#18H
;立即数18H送40H单元
XCH
A,30H
;30H单元与A数据容互换
SWAP
A
;A中数据高4位与低4位互换
MOV
@R0,A
;A中数据送40单元
END
3.实验内容4参考程序
ORG
0000H
MOV
SP,#30H
;立即数30H送SP
MOV
DPTR,#0030H
;立即数0030H送DPTR
MOVX
A,@DPTR
;0030H单元数据送A
PUSH
ACC
;ACC内容入栈
MOV
DPTR,#0031H
;立即数0031H送DPTR
MOVX
A,@DPTR
;0031H单元数据送A
PUSH
ACC
;ACC内容入栈
MOV
DPTR,#0032H
;立即数0032H送DPTR
MOVX
A,@DPTR
;0032H单元数据送A
PUSH
ACC
;ACC内容入栈
POP
50H
;数据出栈送50H
POP
51H
;数据出栈送51H
POP
52H
;数据出栈送52H
END
八.实验报告要求
1.整理实验数据;
2.写出完成“实验要求”的程序清单。
实验3算术运算类指令对程序状态字的影响实验
一.实验目的
1.学习、掌握MCS-51单片机执行算术运算类指令对程序状态字的影响情况;
2.学习、掌握QTH仿真器的使用方法。
二.实验设备及器件
1.PC机一台
2.QTH仿真器一台
三.实验内容
1.进入QTH2003版仿真开发系统环境,学习软件仿真及QTH仿真器的使用方法;
2.设(A)=53H,(R0)=0FCH,执行ADDA,R0后,观察程序状态字PSW的变化;
3.设(A)=85H,(R0)=20H,(20H)=0AFH,执行指令ADDA,@R0后,观察程序状态字PSW的变化;
4.设(A)=54H,(R2)=0C9H,执行指令SUBBA,R2后,观察程序状态字PSW的变化。
四.实验要求
1.在QTH2003软件仿真环境下编写、运行实验程序。
五.实验步骤
1.实验内容2
(1)新建文件,如附图6-1所示(附图6-在实验一后面),单击“新建”,输入参考程序清单;
(2)保存新建文件,如附图6-2所示,单击“保存”,在打开的“保存为”对话框上键入新建文件名“实验三.ASM”,注意:
文件的扩展名必须是“.ASM”,如附图6-3所示;
(3)仿真器设置,如附图6-4所示,单击“设置”,在“仿真模拟设置”窗口上选中“8052模式”、选择“内程序存储器内数据存储器”、仿真器主频选中“12MHz”、单击“确认”,如附图6-5所示;
(4)新建项目,如附图6-6所示,单击“项目”/“新建项目”,在“新建项目”对话框内键入新建项目名“实验三.PRJ”、选中“立即加入模块文件”、单击“确认”,如附图6-7所示。
在“打开”对话框上单击要运行的实验程序名称“实验三.ASM”,单击“打开”,如附图6-8所示。
在“workspace”对话框上单击选项卡“project”,打开目标文件,找到源文件实验三路径,双击,打开新建项目如附图6-9所示;
(5)编译新建文件,如附图6-10所示,单击“编译当前项目”。
如果实验程序中没有语法错误,则在“output”窗口上显示“0warning(s)0error(s)”,表示编译成功,如附图6-11所示;
(6)实验程序的运行,实验程序既可以单步运行,也可以全速运行。
为了便于观察各内存单元数据的变化情况,单步运行程序如附图6-12所示;
(7)QTH2003仿真软件界面窗口对话框简介,如附图6-13所示;
(8)在Workspace窗口上单击选项卡REG查看特殊功能寄存器A、PSW、R0的初值,如图6-3-1所示;
(9)单步运行实验程序,查看A、PSW、R0、存储数值的变化情况如图6-3-2所示,填写表6-3-1。
图6-3-1特殊功能及寄存器初始图6-3-2程序运行结束A、PSW、R0的值
表6-3-1实验内容2数据表
调试程
序状态
相关内存单元值
A
R0
CY
AC
F0
RS1
RS0
OV
P
运行前
运行后
表6-3-2实验内容3数据表
调试程
序状态
相关内存单元值
A
R0
CY
AC
F0
RS1
RS0
OV
P
运行前
运行后
表6-3-3实验内容4数据表
调试程
序状态
相关内存单元值
A
R2
CY
AC
F0
RS1
RS0
OV
P
运行前
运行后
2.实验内容3
(1)~(9)同上
图6-3-3、图6-3-4所示为参考实验内容3实验程序未运行前及运行后特殊功能寄存器A、PSW、R0的值,填写表6-3-2。
3.实验内容4
(1)~(9)同上
图6-3-5、3-6所示为实验内容4参考实验程序未运行前及运行后特殊功能寄存A、PSW、R2的值,填写表6-3-3。
图6-3-3图6-3-4
图6-3-5图6-3-6
六.预习要求
1.预习教材相关章节,掌握算术运算指令的使用方法;
2.写出预习报告。
七.参考程序
1.实验内容2参考程序
ORG
0000H
MOV
A,#53H
;立即数53H送A
MOV
R0,#0FCH
;立即数FCH送A
ADD
A,R0
;(A)与(R0)相加
END
2.实验内容3参考程序
ORG
0000H
MOV
A,#85H
;立即数85H送A
MOV
R0,#20H
;立即数20H送R0
MOV
20H,#0AFH
;立即数AFH送20H单元
ADD
A,@R0
;(A)与(20H)相加
END
3.实验内容4参考程序
ORG
0000H
MOV
A,#54H
;立即数54H送A
MOV
R2,#0C9H
;立即数C9H送A
SUBB
A,R2
;(A)与(R2)相减
END
八.实验报告要求
1.整理实验数据,填写数据表;
2.写出完成实验要求的程序清单。
实验4逻辑运算类指令对字节拆分的应用实验
一.实验目的
1.学习、掌握MCS-51单片机逻辑运算指令的应用;
2.学习、掌握QTH仿真器的使用方法。
二.实验设备及器件
1.PC机一台
2.QTH仿真器一台
三.实验内容
1.进入QTH2003版仿真开发系统环境,学习软件仿真及QTH仿真器的使用方法;
2.今有一电子表,要显示的时间为23时48分57秒,该数据存放在外部RAM0040H单元开始的三个单元,将23H、48H、57H拆成六个BCD码表示的十进制数,送到LED显示电路的数据缓冲,缓冲器口地址为内部RAM30H单元,请编写一段程序,完成上述任务。
四.实验要求
1.在QTH2003软件仿真环境下编写、运行实验程序;
2.数据存放要求:
30H时高位、31H时低位、32H分高位、33H分低位、34H秒高位、35H秒低位。
五.实验步骤
1.新建文件,如附图6-1所示(附图6-在实验一后面),输入参考程序清单;
2.保存新建文件,如附图6-2所示,单击“保存”,在打开的“保存为”对话框上键入新建文件名“实验四.ASM,”,注意:
文件的扩展名必须是“.ASM”,如附图6-3所示;
3.仿真器设置,如附图6-4所示,单击“设置”,在“仿真模拟设置”窗口上选中“8052模式”、选择“内程序存储器外数据存储器”、仿真器主频选中“12MHz”、单击“确认”,如附图6-5所示;
4.新建项目,如附图6-6所示,单击“项目”/“新建项目”,在“新建项目”对话框内键入新建项目名“实验四.PRJ”,选中“立即加入模块文件”,单击“确认”,如附图6-7所示。
在“打开”对话框上单击要运行的实验程序名称“实验四.ASM”,单击“打开”,如附图6-8所示。
在“workspace”对话框上单击选项卡“project”,打开目标文件,找到源文件实验四路径,双击,打开新建项目如附图6-9所示;
5.编译新建文件,如附图6-10所示,单击“编译当前项目”。
如果实验程序中没有语法错误,则在“output”窗口上显示“0warning(s)0error(s)”,表示编译成功,如附图6-11所示;
6.实验程序的运行,实验程序既可以单步运行,也可以全速运行。
为了便于观察各内存单元数据的变化情况,单步运行程序如附图6-12所示;
7.QTH2003仿真软件界面窗口对话框简介,如附图6-13所示;
8.在Memory-1窗口单击选项卡XData,找到外部RAM0040H、0041H、00042H单元,双击其数据区,选中后将数据修改成23、48、57(注意:
修改RAM数据时输入法必须是“中文(中国)”),如图6-4-1所示;
9.单步运行程序,在Memory-1窗口上单击选项卡查Data,查看内部RAM30H~35H数值变化情况,如图6-4-2所示为程序运行结束时30H~35H单元的值。
六.预习要求
1.预习教材相关章节,掌握逻辑运算的指令的使用方法;
2.写出预习报告。
图6-4-1外部RAM初值设置图6-4-2程序运行结束内部RAM的值
七.参考程序
实验内容2参考程序:
ORG
0000H
MOV
R0,#30H
;数据缓冲区入口地址送R0
MOV
DPTR,#0040H
;立即数0040H送DPTR
MOV
R7,#3
;循环次数送R7
LOOP:
MOVX
A,@DPTR
;0040H单元内容送A
MOV
R6,A
;A中数据暂存于R6
ANL
A,#0F0H
;保留高4位
SWAP
A
;高4位与低4位对调
MOV
@R0,A
;A中内容送(R0)单元
INC
R0
;地址加1
MOV
A,R6
;(R6)送A
ANL
A,#0FH
;取A低4位
MOV
@R0,A
;低4位送(R0)
INC
R0
;地址加1
INC
DPTR
;DPTR加1
DJNZ
R7,LOOP
;R7≠0,转至LOOP
END
八.实验报告要求
1.按上述步骤写出实验报告;
2.写出完成实验要求的程序清单。
实验5控制转移类指令在有转移范围限制时的应用实验
一.实验目的
1.学习、掌握MCS-51单片机控制转移类指令的使用方法;
2.学习、掌握QTH仿真器的使用方法。
二.实验设备及器件
1.PC机一台
2.QTH仿真器一台
三.实验内容
1.进入QTH2003版仿真开发系统环境,学习软件仿真及QTH仿真器的使用方法;
2.在内部RAM30H单元开始存放了10名学生的单片机课程考试成绩,分数为:
91、85、83、60、63、51、64、96、77、89,请编写一段程序将60分以上的成绩放到内部RAM40H开始的单元,小于60分的成绩放到内部RAM50H开始的单元,等于60分的成绩放到内部RAM60H开始的单元