一、复习上次课内容
1、什么是标识符?
答:标识符是程序员选择的名字,用来标识常量、变量、过程、段名等。
2、什么是伪指令?
答:注释性的,没有对应的机器码,不令计算机做任何操作,不产生目
标程序,不影响程序的执行。。
二、讲授新课
4.3分支程序设计
在很多实际问题中,都需要根据不同的情况进行不同的处理。这种
思想体现在程序设计中,就是根据不同条件而转到不同的程序段去执行,这就构成了分支程序。分支程序的结构有两种,如图4.2所示。
图4.2 分支程序结构
图4.2(a) 结构使用条件转移指令来实现分支,当给出的条件成立时,执行程序段A,否则执行程序段B。
图4.2 (b) 结构使用散转指令JMP来实现多分支转移,它首先将分支程序按序号的值来实现分支转移。
分支程序的特点是改变程序的执行顺序,跳过一些指令,去执行另外一些指令。应注意:对每一个分支都要单独编写一段程序,每一分支的开始地址赋给一个标号。
在编写分支程序时,关键是如何判断分支的条件。在MCS-51系列单片机中可以直接用来判断分支条件的指令并不多,只有累加器为零(或不为零)、比较条件转移指令CJNE等,MCS-51单片机还提供了位条件转移指令,如JC,JB等。把这些指令结合在一起使用,就可以完成各种各样的条件判断。
【例4-5】设补码X放在内部RAM30H单元中,函数Y与X有如下的关系式:
试编写程序,根据X的值求出Y,并放回原单元。
解 取出X后先做取值范围的判断,用累加器A状态转移指令判断X是否为0,用位状态转移指令判断X是大于0还是小于0。程序流程图如图4.3所示。
程序如下: MOV A,30H JZ ZER0 JNB ACC.7,PLUS
ADD A,#5 MOV 30H,A PLUS: SJMP $ ZERO: MOV 30H,#20H SJMP $ END
【例4-6】内部RAM40H和41H单元中各有一无符号数,比较其大小,将大数存放于内部RAM60H单元,小数存放于内部RAM61H单元,如两数相等,则分别送往这2个单元。
解 用比较不等转移指令CJNE比较力两个无符号书,先确定它们是否相等,若不相等时再根据借位标志确定这两个无符号书的大小。程序框图如图4.4所示。 程序如下:
LOOP: AGEQ:
SJMP END
$
XCH MOV
A, 61H 60H, A
;A<(41H)有借位 ;A与(61H)交换
MOV MOV CJNE AJMP JNC
A, 40H 61H, 41H A, 41H, LOOP AGEQ AGEQ
;A≥(41H)则无借位
【例4-8】将ASCII码制转换为十六进制数。如果不是十六进制数得ASCII码,用户标志位置1。解:由ASCII码表知,30H~39H为0~9的ASCII码,41H~46H为A~F的ASCII码。在这一范围的ASCII码减去37H就可以获得对应的十六进制。设ASCII码放在累加器A中,转换结果放回A中。程序流程图如图4.5所示
三、课堂巩固 四、课堂小结 五、作业
因篇幅问题不能全部显示,请点此查看更多更全内容