第十四讲 汇编程序的基本结构(一) 教学目的: 1、掌握汇编语言的三种结构 2、掌握顺序结构、分支结构程序的编写方法 教学重点: 顺序结构、分支结构 教学难点: 分支结构、分支条件的确定 教学环节 组织教学:(2分钟)检查学生人数,强调作业要求。 直接进入新授课: §3-8 汇编语言程序的基本结构及应用举例 程序编写做到: 占用存储空间少; 运行时间短; 程序的编制、调试及排错所需时间短; 结构清晰,易读、易于移植。 按结构化程序设计思想,任何复杂程序都可由顺序结构、分支结构、循环结构等构成。 如图1所示。 顺序结构 分支结构 N Y 图 (a) 图 (b) 循环结构 入口 入口 Y 条件满足否? 处理 N 处理 修改条件 修改条件 条件满足否? N Y 出口 出口 图 (c) 图1 常用程序结构 一、顺序程序举例 例1、设在外RAM的60H单元存有1个字节代码,要求将其分解成两个4位字段,高4位存入原单元的低4位,其低4位存入61H单元的低4位,且要求这两个单元的高4位均为0,试编制完整程序。 解: 字节分解: 60H ×××× □□□□ 60H 0 0 0 0 ×××× 0 0 0 0 □□□□ 61H 核心指令 ANL ORL 1000H MODE:MOV R0,#60H MOVX A,@R0 MOV B,A ANL A,#0F0H SWAP A MOVX @R0,A ANL B,#0FH MOV A,B INC R0 MOVX @R0,A END 二、分支结构与分支程序设计 结构:根据不同的条件,进行相应的处理。 通常用条件转移指令形成简单分支结构。 如: 判(A) = Z 或 NZ ,转移 判(CY)= 1 或 0 ,转移 判(bit)=1 或 0 ,转移 CJNE 比较不相等转移 例3、设a存放在累加器A中,b存放在寄存器B中,要求按下式计算Y值,并将结果Y存于累加器A 中,试编写程序。 a-b (a≥0) Y = a+b (a < 0) 解:本题关键是判a是正数,还是负数;由ACC7便知。 ORG 1000H BR: JB ACC7,MINUS CLR C SUBB A,B SJMP DONE MINUS: ADD A,B DONE: SJMP $ END 例4、设有两个16位无符号数NA,NB分别存放在8031单片机内部RAM的40H、41H及50H、51H单元中,当NA > NB时,将内部RAM的42H单元清0;否则,将该单元置成全1,试编程。 解法I:因为无16位数的比较指令,所以,只能用8位数的比较指令。 (画出流程框图) ORG 2000H CMP:MOV A,50H CJNE A,40H,CMP1 MOV A,51H CJNE A,41H,CMP1 SJMP NHIGHE CMP1:JC HIGHE NHIGHE:MOV 42H,#0FFH SJMP DONE HIGHE:MOV 42H,#00H DONE:SJMP $ END 上述程序中多次用到SJMP语句,该语句为无条件转移语句。无条件语句应尽量少用,这样可使程序结构紧凑而易读,易理解。 解法II:先假设NA > NB,再来判断是否NA ≤ NB ORG 3000H CMP2:MOV R0,#00H MOV A,50H CJNE A,40H,CMP3 MOV A,51H CJNE A,41H,CMP3 SJMP NHIGHE CMP3:JC HIGHE NHIGHE:MOV R0,#0FFH ;不大于标志 HIGHE:MOV 42H,R0 SJMP $ END 小结: 1、汇编程序有哪三种基本结构? 2、构成分支程序,常用到哪些判断语句? 布置作业: 抄题目在黑板上。 版书设计 一、顺序结构 1、…. 2、……. 3、 二、分支结构 1、…….. 2、……..  三、分支程序设计 1、……. 2、……. 3、…….. 四、举例 1、……. 2、……. 3、…….. 小结: 1、…….. 2、……. .作业: