内容正文:
四川省(电子信息大类)对口招生《单片机原理与应用》
复习讲义
模块 4 程序设计方法
考点二 顺序与分支程序
【考纲要求】
掌握顺序程序与分支程序的识读和编写。
【知识网络】
【知识和技能要点】
一、汇编语言实用程序设计
1.汇编语言程序的基本结构形式
常采用以下几种基本结构:顺序程序、分支程序和循环程序,再加上广泛使用的子程序和查表程序。
程序结构:
2.子程序设计原则和应注意的问题
一种能完成某一特定任务的程序段,其资源要为所有调用程序共享。因此,子程序在结构上应具有独立性和通用性。
在编写子程序时应注意以下问题
(1) 子程序的第一条指令的地址称为子程序的入口地址。该指令前必须有标号。
(2) 主程序调用子程序
两条子程序调用指令:
短调用指令:ACALL addr11
长调用指令:LCALL addr16
(3) 注意设置堆栈指针和现场保护
(4) 最后一条指令必须是RET指令
(5) 子程序可以嵌套,即子程序可以调用子程序
(6) 在子程序调用时,还要注意参数传递的问题
子程序的基本结构
MAIN:┇;MAIN为主程序或调用程序标号
┇
LCALL SUB;调用子程序SUB
┇
┇
SUB:PUSH PSW;现场保护
PUSH ACC;
子程序处理程序段
POP ACC;现场恢复
POP PSW;
RET;最后一条指令必须为RET
2、 顺序程序
指无分支,无转移,无循环结构的程序,其特点是按逻辑操作的顺序,从某条指令开始逐条执行。在实际应用中,这种结构的程序用于实现简单的功能,可以作为各种复杂程序的基础和主干。
3、 分支程序
1. 分支转移程序设计
特点是程序中含有转移指令,转移指令又分为无条件转移和有条件转移,因此分支程序也可分为无条件分支转移程序和有条件分支转移程序。有条件分支转移程序按结构类型来分,又分为单分支转移结构和多分支转移结构。
2.单分支转移结构,仅有两个出口,两者选一。
此外,单分支选择结构还有下图所示的几种形式:
2.多分支转移结构
程序的判别部分有两个以上的出口流向。
指令系统提供了非常有用的两种多分支选择指令:
间接转移指令:JMP@A+DPTR;
比较转移指令:CJNE A,direct,rel;
CJNE A,#data,rel;
CJNE Rn,#data,rel;
CJNE@Ri,#data,rel;
最简单的分支转移程序的设计,一般常采用逐次比较法,就是把所有不同的情况一个一个的进行比较,发现符合就转向对应的处理程序。这种方法的主要缺点是程序太长,有n种可能的情况,就需有n个判断和转移。
使用转移指令的注意事项
(1) 无条件分支程序
–LJMP指令,跳转的程序可位于程序存储器中任意位置
(2) 有条件分支程序
–根据已经执行的程序中标志位、ACC或内部RAM的某些位的结果决定程序的流向
–JZ/JNZ、CJNE、DJNZ、位控制转移类指令(JC、JNC、JB、JNB、JBC)
–跳转的程序位置有要求,必须位于当前指令的-128~127范围之内,如果超过该范围需要采取必要的措施
【练习题】
1、 填空题
1.汇编语言程序的基本结构形式包括:顺序结构、分支结构、______、子程序和查表程序。
2.子程序的第一条指令地址称为______,该指令前必须有标号。
3.汇编语言中,主程序调用子程序的短调用指令为______,长调用指令为LCALL addr16。
4.子程序执行完毕后,最后一条指令必须是______指令。
5.子程序调用过程中,为避免寄存器数据冲突,需要进行______和现场恢复操作。
6.顺序结构程序的特点是无分支、无转移、无循环,______执行指令。
7.分支转移程序分为无条件分支转移程序和______分支转移程序。
8.汇编语言中实现多分支转移的间接转移指令是______。
二、选择题
1.下列不属于汇编语言基本程序结构的是( )
A. 顺序结构 B. 树型结构 C. 分支结构 D. 循环结构
3.主程序调用子程序的长调用指令是( )
A. ACALL addr11 B. LCALL addr16 C. LJMP D. RET
4.子程序的最后一条指令必须是( )
A. LJMP B. ACALL C. RET D. PUSH
5.下列属于现场保护指令的是( )
A. POP ACC B. PUSH PSW C. RET D. LCALL
6.顺序结构程序的执行方式是( )
A. 跳转执行 B. 逐条顺序执行 C. 循环执行 D. 中断执行
7.单分支转移结构的出口数量为( )
A. 1个 B. 2个 C. 3个 D. 多个
8.下列不属于有条件分支转移指令的是( )
A. LJMP B. JZ C. CJNE D. DJNZ
9.多分支转移指令JMP @A+DPTR属于( )
A. 无条件转移 B. 间接转移 C. 比较转移 D. 位转移
10.有条件分支指令的跳转范围是( )
A. -128-127 B. 0-255 C. 0~65535 D. 任意地址
三、判断题
1.中断服务子程序是汇编语言程序的基本结构形式之一。( )
2.子程序的资源只能被一个主程序调用,不具备共享性。( )
3.子程序入口地址指令前可以不加标号。( )
4.子程序可以嵌套调用,即子程序内部能调用其他子程序。( )
5.编写子程序时无需考虑堆栈指针和现场保护。( )
6.顺序结构程序是复杂程序的基础和主干。( )
7.无条件转移指令LJMP可以跳转到程序存储器任意位置。( )
8.逐次比较法设计多分支程序,n种情况需要n次判断转移。( )
9.CJNE指令属于无条件分支转移指令。( )
10.有条件分支指令的跳转范围没有限制。( )
四、分析题
1.简述汇编语言程序的5种基本结构形式。
2.简述子程序现场保护和现场恢复的作用,并举出两条对应指令。
3.写出汇编语言中3种常用的有条件分支转移指令。
【答案】
一、填空题
1.循环结构
3.子程序入口地址
4.ACALL addr11
5.RET
6.现场保护
7.逐条
8.有条件
9.JMP @A+DPTR
二、选择题
1.B 2. D 3. B 4. C 5. B
6.B 7. B 8. A 9. B 10. A
三、判断题
1.√ 2. × 3. × 4. √ 5. ×
6.√ 7. √ 8. √ 9. × 10. ×
四、分析题
1.顺序程序、分支程序、循环程序、查表程序、子程序。
2.作用:保护寄存器原有数据,避免调用冲突;指令:PUSH PSW、POP ACC。
3. JZ、CJNE、DJNZ。
【真题演练】
1.(24单招,单选题)在MCS-51单片机中,要调用子程序ABC时,需要使用哪一个指令。( )
A. JZ ABC B.JNZ ABC
C. LCALL ABC D.LJMP ABC
【答案】
1.C
原创精品资源学科网独家享有版权,侵权必究
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$