文档详情

循环程序设计.pptx

发布:2024-04-06约3.71千字共15页下载文档
文本预览下载声明

单片机原理与接口技术建设线上线下混合金课、系统打造一流课堂

汇编语言程序设计北京石油化工学院曹建树jianshu@QQ:2245682503北京石油化工学院

循环程序设计PAFTPAFT当型循环结构直到型循环结构

初始化部分循环体结束部分循环准备工作。如:清结果单元、设指针、设循环控制变量初值等。循环工作部分:需多次重复处理的工作。循环控制部分:修改指针和循环控制变量。检测循环条件:满足循环条件,继续循环,否则退出循环。处理和保存循环结果。1)已知循环次数2)循环次数未知允许0次循环的循环结构:在循环工作之前检测循环条件。包含多次重复执行的程序段,循环结构使程序紧凑。循环控制?循环工作循环结束循环初始化YNNY循环程序设计

单重循环:循环体中不套循环SUM:MOVR0,#42H ;设指针 MOVA,@R0 MOVR2,A ;循环计数器R2←n CLR A ;结果单元清0 MOVR3,AADD1:INC R0 ;修改指针 ADD A,@R0 ;累加 JNCNEXT ;处理进位 INC R3 ;有进位,高字节加1NEXT:DJNZR2,ADD1;循环控制:数据是否加完? MOV 40H,A ;循环结束,保存结果 MOV 41H,R3 RET例12:单求n个单字节数据的累加和。设数据在43H起始单元,数据串长度n在42H单元,累加和不超过2个字节。字节数据的累加,设数据串已在43H起始单元,数据串长度在42H单元,累加和2个字节。片内RAM……Xn……43HX142Hn41HSUMH40HSUML循环程序设计

计数控制循环例13:为一串7位ASCII码数据的D7位加上奇校验,设数据存放在片外RAM的2101H起始单元,数据长度在2100H单元。 MOVDPTR,#2100H MOVXA,@DPTR MOVR2,ANEXT:INCDPTR MOVXA,@DPTR ORLA,#80H JNBP,PASS ;判断是否加校验 MOVX@DPTR,A ;是,则加奇校验PASS:DJNZR2,NEXTDONE:SJMPDONE片外RAM……2102H2101H2100Hn循环程序设计

特征控制循环例14:找正数表最小值。正数表存在片外RAM中以LIST为起始单元,用-1(补码为0FFH)作为结束标志。START:MOV DPTR,#LIST ;数表首地址 MOV B,#127 ;预置最小值NEXT:MOVXA,@DPTR ;取数INC DPTR ;修改指针 CJNEA,#0FFH,NEXT1 ;是否为数表结尾? SJMPDONE ;循环结束NEXT1:CJNEA,B,NEXT2 ;比较NEXT2:JNC NEXT ;Cy=1,则AB;Cy=0,则AB MOV B,A ;保存较小值 SJMPNEXTDONE:SJMPDONE循环程序设计

多重循环程序设计循环体中套循环结构,以双重循环使用较多。例15:将内存一串单字节无符号数升序排序。步骤:每次取相邻单元的两个数比较,决定是否需要交换数据位置。第一次循环,比较N-1次,取数据表中最大值。第二次循环,比较N-2次,取到次大值。…第N-1次循环:比较一次,排序结束。片内RAMMAX…5241TAB→3内循环控制?循环工作循环结束外循环控制?内循环初始化开始外循环初始化NNYY循环程序设计

SORT:MOV A,#N-1 ;N个数据排序 MOV R4,A ;外循环次数LOOP1:MOV A,R4 MOV R3,A ;内循环次数 MOV R0,#TAB ;设数据指针LOOP2:MOV A,@R0 ;取二数 MOV B,A INC R0 MOV A,@R0 CJNEA,B,L1 ;比较L1: JNC UNEX ;A≥B,不交换 DEC R0

显示全部
相似文档