9.1.1 基本结构汇编语言程序设计

9.1.1 基本结构汇编语言程序设计

顺序结构、分支结构和循环结构是单片机的基本程序结构。顺序结构程序是指无分支、无循环结构的程序。顺序结构程序执行时是按照指令在程序中排列的先后顺序依次执行的。

【例9-1】 设片内RAM的21H单元存放了某十进制数的BCD码,编写程序将这个十进制数的十位和个位转换为ASCII码,分别存放到片内RAM的22 H单元和23 H单元中。

程序流程图如图9-1所示。

图9-1 程序流程图1

程序如下:

通常情况下,程序的执行是按照指令在程序存储器中存放的顺序进行的,但有些实际情况也可能需要改变程序的执行顺序,若程序执行时可以实现跳转,这种程序结构就属于分支结构。分支结构可以分成单分支、双分支和多分支几种情况。

【例9-2】 设片内RAM的20H单元存放一变量。编写程序读出变量值,并根据变量值是否为0,设置片内RAM的21H单元数据。要求:若该变量为0,则片内RAM的21 H单元存放立即数00H;若该变量不为0,则片内RAM的21H单元存放立即数FFH。

程序流程图如图9-2所示。

图9-2 流程图2

程序如下:

【例9-3】 设变量x以补码的形式存放在片内RAM的28H单元中,变量y与x的关系为:当x>0时,y=x;当x=0时,y=10 H;当x<0时,y=x+05 H。编制程序,根据变量x的值求变量y的值并送回原来的存储单元。

程序流程图如图9-3所示。

图9-3 流程图3

程序如下:

【例9-4】 根据R7的内容转向相应的处理程序。设R7的内容为0~4,对应的处理程序的入口地址分别为PG0~PG4。

程序流程图如图9-4所示。

图9-4 流程图4

程序如下:

在程序设计中,经常需要控制一部分指令重复执行若干次,以便用简短的程序完成大量的处理任务。这种按某种控制规律重复执行的程序称为循环结构程序。

循环结构程序有“先执行,后判断”和“先判断,后执行”两种基本结构。

“先执行,后判断”循环结构程序的特点是当进入循环时,先执行一次循环处理部分,然后根据循环控制条件判断是否结束循环。若不满足循环结束条件,则继续执行循环操作;若满足循环结束条件,则进行结束处理并退出循环。图9-5为“先执行,后判断”的循环结构程序流程图。

图9-5 “先执行,后判断”循环结构程序流程图

【例9-5】 编写程序,实现片内RAM存储单元40H至4FH单元的内容依次传送到片内RAM存储单元50 H至5FH。

程序如下:

“先判断,后执行”循环结构程序的特点是将循环的控制部分放在循环的入口处,当进入循环时,先根据循环控制条件判断是否结束循环。若不满足循环结束条件,则继续执行循环操作;若满足循环结束条件,则进行结束处理并退出循环。图9-6为“先判断,后执行”的循环结构程序流程图。

图9-6 “先判断,后执行”循环结构程序流程图

“先判断,后执行”的循环结构程序通常用于事先不知道循环次数的情况。如果循环次数事先不知道,但循环条件可以测试到,则可以采用“先判断,后执行”的循环结构。

【例9-6】 将内部RAM中80 H存储单元起始的数据串传送到外部RAM中起始地址为2000 H的存储区域内,数据串以‘$’字符作为结束标志。

程序如下: