文档详情

河北工业大学单片机课第4章 汇编语言程序设计.ppt

发布:2017-06-01约1.28万字共79页下载文档
文本预览下载声明
(A)=? 语句组1 语句组2 语句组3 语句组4 0AH 0BH 0CH 0DH 入口 AAA BBB CCC DDD 4.2.3 循环程序设计 循环程序结构 循环程序通常有两种编制方法 循环问题的类型 循环程序设计举例 循环程序结构 循环初始化: 循环控制变量的初始化、 数据变量的初始化 循环工作部分:循环主体,重复执行的部分 循环控制部分:循环变量的修改、终止控制 循环结束:这部分程序用于存放执行循环程序所得结果以及恢复各单元的初值。 1、先循环处理后循环控制,称为直到型循环; 2、 先循环控制后循环处理,称为当型循环。 ????? 循环程序通常有两种编制方法 1、计数型— 举例 循环次数已知,用计数方法控制循环的终止。 2、条件型— 循环次数未知,根据某种条件判断是否终止循环。 [例4-7] 内部RAM块传,遇到“#”字符结束 3、计数型+条件型 [例4-8] 8031外部RAM块传及冒泡排序 ?循环问题的类型 单循环程序 例1:多个单字节数求累加和 计数型 例2:内部数据区清零 计数型 [例4-7] 内部RAM块传 改为条件型 多重循环程序 例3:50ms延时程序 计数型 [例4-7] 内部RAM块传 计数型+条件型 [例4-8] 外部RAM块冒泡排序 计数型+条件型 循环程序设计举例 例1:多个单字节数求累加和 ORG 0000H SUM: mov R3,#0 mov R4,#0 mov R0,#50H mov R2,#5 Loop: mov A,R4 add A,@R0 mov R4,A inc R0 clr A addc A,R3 mov R3,A djnz R2,Loop sjmp $ END 内部RAM 50H R0 R4 R3 R4 R3 @R0 CY + ADDC ADD 23H 98H 0A8H 0FDH 6DH 累加和单元要先请零 ∑ 例2:内部数据区清零 ORG 0000H Zero: mov R0,#30H mov R7,#10 mov A,#00H Loop: mov @R0,A inc R0 djnz R7,Loop sjmp $ END 内部RAM 30H R0 23H 98H 0A8H 0FDH … 0 0 0 0 0 0 10个 例3:50ms延时程序 Delay: mov R7,#200 Del1: mov R6,#123 nop Del2: djnz R6,Del2 djnz R7,Del1 sjmp $ ; (不计入) ;1us ;1us ;1us ;2us ;2us T =[200×(1+1+123×2+2)+1]×1us =50001us=50ms [例4-7]把内部RAM中起始地址为BLK1的数据块传送到外部RAM以BLK2为 起始地址的区域,直到遇到“#”字符的ASCⅡ码为止。去掉块长度。 参考程序如下: ORG 2000H BLK1 EQU 30H BLK2 EQU 1000H MOV SP,#6FH MOV R0 ,#BLK1 ;BLK1数据块起始地址 MOV DPTR ,#BLK2 ;BLK2数据块起始地址 XH: CLR C MOV A ,@R0 ;取数据 PUSH ACC SUBB A ,#23H ;判是否为“#”字符 JZ STOP POP ACC MOVX @DPTR ,A ;数据传送 INC R0 INC DPTR AJMP XH ;循环控制 STOP: SJMP $ END 原题为 计数型+条件型 改为条件型 [例4-7]把内部RAM中起始地址为B
显示全部
相似文档