第4章 80c51是单片机汇编语言程序的设计课件.pptVIP

  • 8
  • 0
  • 约1.03万字
  • 约 71页
  • 2021-12-06 发布于福建
  • 举报

第4章 80c51是单片机汇编语言程序的设计课件.ppt

MOV DPTR,#BRTAB; BRTAB为转移指令表名称标号, JMP A+DPTR; 也为转移指令表首地址 BRTAB:LJMP ROUT0; 分支程序0的转移指令 LJMP ROUT1; 分支程序1的转移指令 LJMP ROUT2; ┇ LJMP ROUT85; 分支程序85的转移指令 ROUT0: ………; 分支程序0 ROUT1: ………; ┇ ROUT85:………; 分支程序85 返回 4.2.3 循环程序结构 MCS-51汇编语言指令系统没有专用的循环指令,但可以使用条件转移指令通过条件判断来控制循环是继续还是结束。 循环程序一般由四个主要部分组成:  (1)初始化部分:为循环程序做准备,如规定循环次数、给各变量和地址指针预置初值。  (2)处理部分: 为反复执行的程序段,是循环程序的实体, 也是循环程序的主体。  (3)循环控制部分: 其作用是修改循环变量和控制变量,并判断循环是否结束,直到符合结束条件时,跳出循环为止。 (4)结束部分: 这部分主要是对循环程序的结果进行分析、处理和存放。 单循环程序一般有以下两种典型结构: 双重循环程序的结构: 在应用系统程序设计时,有时经常需要将数据存储器中各部分地址单元作为工作单元,以存放程序执行的中间值或执行结果, 因此,在使用这些工作单元之前,必须将工作单元清零。工作单元清零可用循环程序完成。 例:假设在内部RAM区,开辟96个工作单元,工作单元首地址为20H,则工作单元清零程序子程序如下: ORG 1000H CLR0:MOV R0, #20H;循环初始化部分 MOV R7, #96; CLR A LOOP:MOV R0, A; 循环体部分 INC R0; 修改变量 DJNZ R7, LOOP;循环控制部分 RET END 思考题(补充作业题):如采用CJNE指令,应如何修改程序? 例:两个三字节二进制无符号数相加,被加数放在内部RAM 20H~22H单元(低字节存放在低地址单元,高字节存放在高地址单元,即低位在前,高位在后),加数放在2AH~2CH单元,和放在20H~22H单元,最高位如有进位,则放在23H单元中。 解:数据类型(二、十进制数,有、无符号数);数据结构(升、降序排列) 被加数(N1) 高字节(8位) 中字节(8位) 低字节(8位) 加数(N2) 高字节(8位) 中字节(8位) 低字节(8位) 被加数(N1) 加数(N2) 和(N3) 20H单元 低字节(8位) 2AH单元 低字节(8位) 20H单元 低字节(8位) 21H单元 中字节(8位) 2BH单元 中字节(8位) 21H单元 中字节(8位) 22H单元 高字节(8位) 2CH单元 高字节(8位) 22H单元 高字节(8位) 23H单元 进位位 被加数 N1 高字节(8位) 中字节(8位) 低字节(8位) 加数 N2 高字节(8位) 中字节(8位) 低字节(8位) +)进位位(CY) 进位位(CY) 进位位(CY) 和 N3 进位 高字节(8位) 中字节(8位) 低字节(8位) 程序流程框图 程序清单 思考题:统计正数、负数、零的个数。 ORG 0030H ADDDUO:MOV R0, #20H; 循环初始化部分 MOV R1, #2AH; MOV R7, #03H; 循环次数 CLR C; LOOP:MOV A, R0; 循环体部分 ADDC A, R1; MOV R0, A; INC R0; 修改指针变量 INC R1; DJNZ R7, LOOP; 循环控制部分 CLR A; 循环结束处理部分 ADDC A, #00H;

文档评论(0)

1亿VIP精品文档

相关文档