实验三 查表与子程序设计练习
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三查表与子程序设计练习
一、实验目的
1.掌握子程序调用的原理
2.掌握主程序和子程序间的参数传递机制
3.掌握现场保护的方法
4.熟悉查表指令,会编写查表程序
二、实验内容
(1)编写程序,利用子程序实现将片内RAM中30H-3FH单元内容置为FFH。要求通过寄存器和堆栈分别传递参数实现。
寄存器:
MOV R0,#30H
MOV A,#0FFH
LOOP:LCALL L
CJNE R0,#40H,LOOP
SJMP $
NOP
L:MOV @R0,A
INC R0
RET
END
堆栈:
MOV SP,#5FH
MOV 70H,#30H
MOV 71H,#16
PUSH 70H
PUSH 71H
SJMP $
NOP
L:POP DPH
POP DPL
POP 07H
POP 00H
MOV A,#0FFH
L2:MOV @R0,A
INC R0
DJNZ R7,L2
PUSH DPL
PUSH DPH
RET
END
(2)利用查表程序,计算0~10的平方。要求分别用MOVC A,@A+DPTR和MOVC A,@A+PC
两种指令实现。
○1MOV DPTR #TABLE
MOV R1,#0
MVO R0,#40H
L:MOV A,R1
MOVC A,@A+DPTR
MOV @R0,A
INC R1
INC R0
CJNE R0,#4BH,L
SJMP $
NOP
TABLE:DB 0,1,4,9,16,25,36,49,64,81,100
END
○2MOV R1,#0
MOV R0,#30H
L:MOV A,R1
ADD A,#09H
MOVC A,@A+PC
MOV @R0,A
INC R0
INC R1
CJNE R1,#08H,L
SJMP $
NOP
TABLE:DB 0,1,4,9,16,25,36,49,64,81,100
END
三、实验要求与步骤
(1)画出程序流程图
(2)分配内存工作区及有关端口地址
(3)编写程序(给出详细注释)
(4)运行程序,分析运行结果
四、实验报告要求
编出相应的程序,列出程序清单,给出详细注释,并对运行结果加以分析。