第14讲 汇编程序的基本结构(一)

更新时间:2023-06-07 14:38:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

单片机的基础知识

第十四讲 汇编程序的基本结构(一)

教学目的:

1、掌握汇编语言的三种结构

2、掌握顺序结构、分支结构程序的编写方法

教学重点:

顺序结构、分支结构

教学难点:

分支结构、分支条件的确定

教学环节

组织教学:(2分钟)检查学生人数,强调作业要求。

直接进入新授课: §4-2 汇编语言程序的基本结构及应用举例

程序编写做到:

占用存储空间少;

运行时间短;

程序的编制、调试及排错所需时间短;

结构清晰,易读、易于移植。

按结构化程序设计思想,任何复杂程序都可由顺序结构、分支结构、循环结构等构成。

如图1所示。

顺序结构 分支结构

图 (a) 图 (b)

单片机的基础知识

循环结构

出口 图 (c)

图1 常用程序结构

一、顺序程序举例

例1、设在外RAM的60H单元存有1个字节代码,要求将其分解成两个4位字段,高4位存入原单元的低4位,其低4位存入61H单元的低4位,且要求这两个单元的高4位均为0,试编制完整程序。

解: 字节分解:

核心指令 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≥0)

(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、构成分支程序,常用到哪些判断语句?

本文来源:https://www.bwwdw.com/article/rui1.html

Top