单片机 子程序 软件实验3.docx
- 文档编号:10940581
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:10
- 大小:482.27KB
单片机 子程序 软件实验3.docx
《单片机 子程序 软件实验3.docx》由会员分享,可在线阅读,更多相关《单片机 子程序 软件实验3.docx(10页珍藏版)》请在冰豆网上搜索。
单片机子程序软件实验3
实验十子程序设计
一、实验目的
1.进一步熟悉MCS-51指令系统和汇编语言程序设计。
2.掌握子程序设计及参数传递的方法。
3.掌握子程序调用与返回时堆栈的变化与作用。
二、实验内容
1.根据参考流程框图2-7,使用工作寄存器或累加器来传递参数的方法把入口参数放到累加器A中,然后将累加器中的一个十六进制数的ASCⅡ字符转换为一位十六进制数存放于A。
2.用指针寄存器来传递参数,将(R0)和(R1)指出的内部RAM两个3字节无符号整数相加,结果送(R0)指出的内部RAM中,入口时,(R0)(R1)分别指向加数和被加数的低位字节,出口时(R0)指向结果的高位字节。
3.用堆栈传递参数,把一位十六进制数转化为ASCⅡ码子程序(主程序用PUSH指令,已把参数压入堆栈)。
参考程序框图如2-7图所示:
开始
0C
(A)—30H(A)
(A)10?
Y
N
(A)—7(A)
返回
图2-7ASCII码字符转换为十六进制数框图
四、实验报告要求
画出实验内容中2和3的程序流程图,并列出三个题目的主—子程序清单。
五、思考题
1、使不同种参数传递方法实现子程序调用的异同是什么?
答:
结果由累加器、堆栈弹入操作地址。
堆栈操作可以根据需要将堆栈中的数据弹出到指定的工作单元。
2、ACALL和LCALL指令有什么区别?
使用时应注意什么?
答:
LCALL指令提供的16位子程序入口地址送入PC,长调用指令可以调用64KB范围内的子程序;ACALL指令提供11位目标地址,限在2KB地址范围内调用。
目标地址的形成方法与绝对转移指令AJMP相同。
3、RET指令的功能是什么?
答:
返回以及保护断点
六、参考程序清单
1.用累加器和工作寄存器传递参数子程序清单:
命令行
命令结果
备注
MOVR0,#60H
MOVA,R0
ACALLASCH
调用子程序CPU自动将下一条命令地址压入堆栈
SJMP$
2.用指针寄存器来传递参数子程序清单:
赋值D:
0X3D:
6E5E4ED:
0X5D:
6F7F8F
分类
命令行
命令结果
备注
MOVR0,5FH
MOVR1,3FH
ACALLNADD
SJMP$
程序流程图:
1.用堆传递参数子程序清单:
赋初值:
D:
0X5E:
67
分类
命令行
命令结果
备注
MOV30H,#14H
MOV31H,#15H
MOV32H,#16H
PUSH30H
PUSH31H
PUSH32H
ACALLHASC
SJMP$
程序流程图:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 子程序 软件实验3 软件 实验