例4-3把外部RAM5000H~50FFH单元的内容清零 ORG 2000H STARTI: MOV DPTR, #5000H ;循环初始化 MOV RO, #OOH MOV A, #OOH LOoPl: MOVX @DPTR, A ;循环体 INC DPTR INC RO CUNE R0,#00H,LOOP1;循环控制 END
例4-3 把外部RAM 5000H~50FFH单元的内容清零。 ORG 2000H START1: MOV DPTR,#5000H ;循环初始化 MOV R0,#00H MOV A,#00H LOOP1: MOVX @DPTR, A ;循环体 INC DPTR INC R0 CJNE R0,#00H,LOOP1;循环控制 END
例4-4将内部RAM从40H开始连续单元的数据传送到外部RAM从2000H 开始的连续单元中,当所传送的数据为0FFH时,传送停止。 解 ORG 2000H MOV RO,#40H 循环初始化 MOV DPTR,#2000H LOOP: MOV A, aRO CUNE A,#FFH,LOOP1;循环控制 SJMP NEXT LOOP1: MOVX CaDPTR, A 循环体 INC RO INC DPTR SJMP LOOP NEXT: SJMP END
例4-4 将内部RAM从40H开始连续单元的数据传送到外部RAM从2000H 开始的连续单元中,当所传送的数据为0FFH时,传送停止。 解: ORG 2000H MOV R0,#40H ;循环初始化 MOV DPTR,#2000H LOOP:MOV A,@R0 CJNE A,#0FFH,LOOP1 ;循环控制 SJMP NEXT LOOP1:MOVX @DPTR,A ;循环体 INC R0 INC DPTR SJMP LOOP NEXT:SJMP $ END
例45从P口重复256次读数并取平均值,平均值的整数和小数部分分别保存于内 部RAM的30H和31H单元中。 解:假设将R2R3作为16位寄存器以保存连续256次读数的累加和 ORG 4000H INTEGER EOU 30H DECIMAL EQU 31H AVR MOV R2,#O ;循环初始化 MOV R3, #O MOV R4.#0 ;累加次数为256 AVRI MOV A, Pl 循环体 ADD A, R3 ;累加至低8位 INC AVR2 ;无进位则暂存结果 INC R2 ;有进位则高8位加增1 AVR2 MOV R3, A ;暂存低8位 DNZ R4, AVRI 循环控制 MOV INTEGER, R2 MOV DECIMAL, R3 END
例4-5 从P1口重复256次读数并取平均值,平均值的整数和小数部分分别保存于内 部RAM的30H和31H单元中。 解:假设将R2 R3作为16位寄存器以保存连续256次读数的累加和 ORG 4000H INTEGER EQU 30H DECIMAL EQU 31H AVR: MOV R2,#0 ;循环初始化 MOV R3,#0 MOV R4, #0 ;累加次数为256 AVR1: MOV A,P1 ;循环体 ADD A,R3 ;累加至低8位 JNC AVR2 ;无进位则暂存结果 INC R2 ;有进位则高8位加增1 AVR2: MOV R3,A ;暂存低 8位 DJNZ R4,AVR1 ;循环控制 MOV INTEGER,R2 MOV DECIMAL,R3 END
例设单片机外部数据存储器起始地址为3000H的数据块中有 100个补码,要求逐一检查,若为负数则求补后放回,正数则不 变。ORG1000 STARTI: MOV R7, #64H ;设置循环初始值 MOV DPTR,#3000H LOOP1 MOVX A, aDPTR JNB ACC. 7, LOOP2 CPL A INC A MOVX DPTR, A LOOP2: INC DPTR ;外部RAM单元加1 DJNZ R7.LOOP1 END
例 设单片机外部数据存储器起始地址为3000H的数据块中有 100个补码,要求逐一检查,若为负数则求补后放回,正数则不 变。 ORG 1000H START1: MOV R7, #64H ;设置循环初始值 MOV DPTR, #3000H LOOP1: MOVX A , @DPTR JNB ACC.7,LOOP2 CPL A INC A MOVX @DPTR,A LOOP2: INC DPTR ;外部RAM单元加1 DJNZ R7,LOOP1 END
例有10个无符号数依次存放在内部RAM30H开始的单元中,求其和,并将结果 放在R2和R3中。 ORG 2000H MOV RO#30H MOV R2,#00H MOV R3.#OOH MOV R7.#OAH NEXT: MOV A, RO ;设置循环初始值 ADD A R3 MOV R3.A MOV A R2 ADDC A #OOH MOV R2, A INC RO DJNZ R7, NEXT SJMP S END
例 有10个无符号数依次存放在内部RAM 30H开始的单元中,求其和,并将结果 放在R2和R3中。 ORG 2000H MOV R0,#30H MOV R2,#00H MOV R3,#00H MOV R7,#0AH NEXT: MOV A, @R0 ;设置循环初始值 ADD A,R3 MOV R3,A MOV A,R2 ADDC A,#00H MOV R2,A INC R0 DJNZ R7,NEXT SJMP $ END