计算机硬件技术基础软件实验讲义Word文档格式.docx
- 文档编号:21700931
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:46
- 大小:207.47KB
计算机硬件技术基础软件实验讲义Word文档格式.docx
《计算机硬件技术基础软件实验讲义Word文档格式.docx》由会员分享,可在线阅读,更多相关《计算机硬件技术基础软件实验讲义Word文档格式.docx(46页珍藏版)》请在冰豆网上搜索。
MOVA,#12H
PUSH50H
PUSH51H
PUSHACC
POP0E0H
POP51H
POP50H
2)可用于数据交换的程序
ORG0100H
MOVSP,#6FH
4.数据交换
记录每条指令运行后的结果,从而加深对各种不同的交换指令的理解。
ORG0000H
MOVA,#58H
SWAPA
MOV40H,A
MOVA,#30H
MOV@R0,#09H
XCHDA,@R0
MOV50H,#1
XCHA,50H
MOVR7,#3
XCHA,R7
XCHA,@R0
五、思考题
1.寄存器寻址与寄存器间接寻址有什么区别?
2.PC指针与SP指针有什么区别?
3.DPTR指针与Ri(R0,R1)指针有什么区别?
4.立即寻址与直接寻址有什么区别?
4.同一个特殊功能寄存器不同表达形式。
实验二数传指令和算数运算指令编程设计
1.掌握数据块的传送操作和算术运算指令的应用。
2.进一步掌握汇编语言设计和调试方法。
3.掌握观察窗口的使用方法。
4.学会给存储单元赋初值的方法。
1.数据区传送
(1)把内部RAM40H~4FH置初值0A0H~0AFH;
(2)而后把40H~4FH内容传送到外部RAM9800H~980FH中;
(3)再把9800H~980FH内容传送到50H~5FH中。
2.多字节十进制加法
加数放在30H开始的单元中(最低位放在30H,按从小到大的顺序存放),被加数和结果存放在20H开始的单元(最低位在20H中),字节数放在2FH中,最高进位位放在位地址7FH单元中。
三、实验步骤
1.分别用单步和连续运行方式,调试上述两个程序;
2.在执行第二个程序之前,给被加数和加数单元赋初值;
3.在观察窗口中观察结果。
四、实验程序清单
1.数据块传送程序:
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
DJNZR2,A2
MOVR0,#50H
A3:
MOVXA,@DPTR
DJNZR2,A3
END
2.多字节十进制加法:
MAIN:
MOVR0,#30H
MOVR1,#20H
MOV2FH,#04H
CLRC
DA1:
MOVA,@R0
ADDCA,@R1
DAA
MOV@R1,A
INCR1
DJNZ2FH,DA1
MOV7FH,C
1.若两个数据块都在外部数据存储器中,如何实现数据块的传送?
2.在调试第一个程序时,若不用程序给40H~4FH赋初值,而用键盘在CPUDATA区给40H~4FH单元预赋初值,如何做?
3.若把第二个程序改为无符号数的减法,怎样修改程序?
4.在第二个程序中,若两数的和存放到从40H开始的单元,如何修改程序?
实验三逻辑运算及位操作指令编程设计
(1)熟悉字节逻辑运算指令功能。
(2)熟悉位操作指令运算功能。
(3)从而更深入的掌握汇编语言程序设计。
(4)学会观察CPU窗口中BIT区的变化。
1.字节逻辑运算程序
在片内RAM的FIRST和SECOND单元中各有一符号数X和Y,要求按下列条件算出Z,存入RESULT单元中(设运算结果仍为8位数)。
FIRSTEQU30H
SECONDEQU31H
RESULTEQU32H
START:
MOVR0,FIRST
MOVA,R0
JBACC.7,NEG
MOVB,#2
DIVAB
MOVA,B
JZTEMP1
MOVA,R0
ADDA,SECOND
SJMPRES
TEMP1:
MOVA,R0
ANLA,SECOND
NEG:
CPLACC.7
JZTEMP2
ORLA,SECOND
TEMP2:
XRLA,SECOND
RES:
MOVRESULT,A
SJMP$
END
2.位操作程序
布尔电路图如下:
XBIT00H
YBIT01H
ZBIT02H
FBIT03H
START:
MOVC,Z
ANLC,/Y
MOVF,C
MOVC,Y
ANLC,/Z
ORLC,F
MOVC,X
ANLC,Y
ORLC,/F
3.拆字程序
把外部数据存储器2000H单元的内容拆开,其高四位送2001H低四位,低四位送2002H低四位,2001H、2002H高四位清零。
需要检查2000H、2001H和2002H单元的内容。
程序清单
MOVDPTR,#2000H
MOVXA,@DPTR
MOVB,A
SWAPA
ANLA,#0FH
INCDPTR
MOVA,B
ANLA,#0FH
MOVX@DPTR,A
END
程序框图
4.拼字程序
把外部数据存储器2000H、2001H单元的低四位分别送2002H高低四位。
需要察看2000H、2001H和2002H单元内容。
程序框图:
MOVXA,@DPTR
ORLA,B
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两个单元中。
MOVSP,#2FH
MOVA,#08H
ADDA,#30H
PUSHACC
MOVA,#0CH
ADDA,#37H
MOVA,30H
INCA
CLRC
SUBBA,#30H
MOV40H,A
POPACC
SUBBA,#37H
MOV41H,A
2.二进制数BCD码
将二进制数10011011B转换成BCD码数,存入30H和31H单元中;
再将30H单元中的数据加16H后,转换成二进制数据,存入40H单元中。
MOVA,#10011011B
MOVB,#100
DIVAB
MOV30H,A
MOVA,B
MOVB,#10
ORLA,B
MOV31H,A
ADDA,#16H
DAA
ANLA,#00001111B
ANLA,#11110000B
MULAB
ADDA,40H
3.BCD码ASCII码
将20H单元中压缩的BCD码数78H转换成ASCII码,转换结果存入30H,31H两个单元中,再将30H,31H两个单元中的数据分别增1,然后转换成压缩BCD码数存入21H单元中。
MOVA,20H
ANLA,#00001111B
ADDA,#30H
MOV30H,A
ANLA,#11110000B
MOV31H,A
SUBBA,#30H
MOVR2,A
POPACC
ORLA,R2
MOV21H,A
5.自选程序设计
六、思考题
1.如何查看上面三个程序的结果。
2.在程序1中,如果十六进制数未指定是否包含A~F数码,程序应如何修改?
3.在程序2中,如果要转换的二进制数是十六位的,程序应如何编写?
4.十六进制数转换成ASCII码与BCD码数转换成ASCII码有何区别?
实验五移位操作
一、实验目的:
掌握移位操作的方法,并理解左移或右移与乘除法运算的关系。
二、实验内容:
1.双字节二进制数左移一位
将两个内部RAM31H和30H单元中的内容组成的双字节数通过Cy左移一位。
功能示意图
ORG0000H
MOVA,30H
RLCA
MOV30H,A
MOVA,31H
MOV31H,A
2.多字节二进制数右移一位
将三个内部RAM32H、31H和30H单元中的内容组成的三字节数通过Cy右移一位。
CLRC
MOVA,32H
RRCA
MOV32H,A
MOV31H,A
MOVA,30H
MOV30H,A
SJMP$
END
1.多于三个字节的移位操作如何进行?
2.如果不通过Cy如何移位?
实现的功能有何不同?
第二节汇编语言程序设计实验
实验六分支程序设计
1.进一步熟悉MCS-51指令系统,了解汇编语言程序设计的基本结构。
2.掌握分支结构程序设计的方法。
3.学会用条件转移指令、CJNE、JMP及其配合使用来编写二分支、三分支和多分支程序。
二、实验内容
1.二分支的条件转移程序
设变量X存放于R0,函数值Y存放在R1,其中X、Y均为二进制数。
试按照下式的要求给Y赋值:
Y=
1
X>
X=0
-1
X<
程序框图2-1如下
:
N
图2-1二、三分支结构程序流程图
2.自选题目设计
1.根据实验内容和参考程序流程图,编出相应的分支结构程序。
2.输入程序,汇编成功;
3.用F4(执行到光标处)、F7(跟踪执行)、F8(单步执行)或断点运行等方式调试程序;
4.观察程序的流程,记录运行结果。
四、思考题
1.CJNE指令对CY有影响吗?
用CJNE和JC/JNC指令配合应注意什么?
在用JMP指令前,若变址255怎么办?
2.用什么指令可以实现多分支之间的隔离?
五、实验报告要求
写出题目运行结果。
六、参考程序清单
1、二分支的条件转移程序
1)用二分支结构程序实现:
JZLOAD;
等于零转LOAD
JNBACC.7,GO;
大于零转GO
MOVA,#0FFH
SJMPLOAD
GO:
MOVA,#01H
LOAD:
MOVR1,A
2)用三分支结构程序实现:
MOVA,R0
JNZCOMP;
不等于零转COMP
MOVR1,#00H;
等于零,则0(R1)
SJMPMP3
COMP:
CJNER0,#80H,MP1;
(R0)中数与80H比较,不相等则转移到MP1
MOVR1,#0FFH;
若比较相等,则-1(R1)
LJMPMP3
MP1:
JCMP2;
两数不相等,(R0)>
0转MP2
(R0)<
0,-1(R1)
MP2:
MOVR1,#01H;
(R0)>
0,1(R1)
MP3:
实验七循环程序设计
一、实验目的
1.进一步熟悉MCS-51指令系统,了解汇编语言程序设计的基本结构。
2.掌握循环结构程序设计的方法,弄清单重及多重循环控制过程。
3.通过设计软件延时程序,学会计算内外循环次数以及循环体的循环时间。
1.设计一个循环程序
具体要求:
将内部RAM中30H至32H的内容右移四位,程序流程图如图2-3所示。
2.设计循环程序:
冒泡法排序。
设单片机8031外部RAM从3600H单元开始存放10个无符号数,试编写程序能使它们按从大到小的顺序排列(最大数存放在3600H单元)。
程序流程图如图2-4所示。
3.自选题目设计。
1.输入预先编好的程序,汇编成功;
2.用自动单步方式执行程序,观察循环计数器的变化情况。
3.用断点运行方式调试排序程序,记录排序过程。
四、实验报告要求
1.编出相应的循环结构程序,列出程序清单,并且会计算循环体的循环时间。
2.写出自选题目的设计内容、程序清单及运行结果。
五、思考题
1.程序中循环时间由什么来控制?
2.若用DJNZ或CJNE指令来控制循环,编写程序有什么不同?
六、参考流程图
开始
4(R7)
3(R6)
0CY
30H(R0)
((R0))(A)
右移(A)一次
(A)((R0))
(R0)+1(R0)
(R6)-1=0?
Y
(R7)-1=0?
结束
图2-3循环结构程序流程图
七、循环结构程序参考清单:
1.三个字节右移四位:
MOVR7,#4
RR30:
MOVR6,#3
MOVR0,#30H
RR31:
MOVA,@R0
RRCA
MOV@R0,A
DJNZR6,RR31
DJNZR7,RR30
2.冒泡法排序:
MOVPSW,#00H
MOVP2,#36H
MOVR2,#10-1
LOOP0:
MOVR0,#00H
MOVR1,#01H
MOV03H,R2
CLR7FH
LOOP1:
MOVXA,@R0
MOVXA,@R1
CJNEA,30H,LOOP2
SJMPL1
LOOP2:
JCL1
MOVX@R0,A
XCHA,30H
MOVX@R1,A
SETB7FH
L1:
DJNZR3,LOOP1
JNB7FH,LOOP3
DJNZR2,LOOP0
LOOP3:
N
图2-4循环结构程序流程图
实验八查表程序设计
1.进一步熟悉MCS-51指令系统和汇编语言程序设计。
2.学会用MOVC指令编写查表程序。
二、实验内容
1.设计并调试一个查平方表的程序,其功能为应用查表指令MOVCA,@A+PC,求累加器A中数的平方值,结果平方值送A。
要求待查的(A)≤15。
2.设计并调试一个根据电压值查与其对应的温度值的查表程序,其功能为应用查表指令MOVCA,@A+DPTR,求(A)中电压值对应的温度值,将温度值送R2R3(温度值为二字节的压缩BCD码),电压值的范围为(A)≤0FFH。
实验程序参考框图如2-5所示。
三、实验步骤
1.敲入程序和预定表后;
2.通过修改自变量参数启动并调试程序,直至正确为止。
3.边调试边体会用PC或DPTR作指针查表的区别。
表首地址(DPTR)
0(A)
0(A)
图2-5查表程序框图
四、实验报告要求
根据实验内容和程序参考流程,编出所需查表程序,列出实验程序清单。
1.当表的长度〉255个字节时应选哪一条指令查表?
2.用PC指针查表编程时应注意什么?
1.求平方值查表程序:
ADDA,#02H
MOVCA,@A+PC
DB0,1,4,9,16,25
DB36·
·
225
2.测量温度查表程序:
MOVDPTR,#TAB
MOVR0,A
ADDA,R0
MOVF0,C
ADDA,DPL
MOVDPL,A
ADDCA,DPH
MOVC,F0
ADDCA,#0
MOVDPH,A
MOVCA,@A+DPTR;
查第一个字节
MOVR2,A
查第二个字节
MOVR3,A
TAB:
DW……;
温度表值(自己设定一组数)
实验九散转程序设计
2.学会用三种不同的方法设计散转程序,并掌握它们的区别。
设计并调试一个程序,其功能为根据(20H)的值i(i≤7)取相应的处理程序Pi的入口地址并转移到程序Pi,Pi的处理程序的功能为(Ri)+1→(Ri),[(20H)+1]^7(20H),再重复地根据(20H)散转。
参考程序框图如图2-6所示:
1.输入编好的程序,汇编成功;
2.调试程序,使用修改寄存器的方法,使R0—R7初值为0,然后启动系统,带断点运行,运行一个循环后检查运行结果,观察R0—R7是否依次计数,排除程序中错误,直至R0—R7同步计数为止。
1.列出根据流程图编写的程序清单,写出程序执行的结果。
2.采用另外两种不同的方法编写程序,列出调试通过的程序清单。
开始
01……7
……
图2-6散转程序框图
五、参考程序清单
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机硬件 技术 基础 软件 实验 讲义