单片机基础(第3版)——第4章.pptVIP

  • 3
  • 0
  • 约1.39万字
  • 约 82页
  • 2017-06-05 发布于四川
  • 举报
AJMP指令的转移范围不超出所在的2KB字节区间,如各小段程序较长,在2KB字节内无法全部容纳,上面的程序应该怎样修改? 例16:按下面公式编写程序,x为无符号数,存在20h单元 y存放在21h单元。 ORG 0030H MOV A, 20H CJNE A, #21H, LOOP1 LOOP1: JC NEXT1 CJNE A, #40H, LOOP2 LOOP2: JNC NEXT2 MOV B, #2 MUL AB AJMP NEXT2 NEXT1: CPL A NEXT2: MOV 21H, A END 最终结果存在 21h中 POSI: INC 70H ;正数个数加1 MOV @R1,A ;存正数 INC R1 ;调整正数地址指针 SJMP LOOP1 ZERO: INC 72H ;零的个数加1 LOOP1:INC R0 ;调整源数地址指针 DJNZ R3,LOOP ;未送完,则继续 SJMP $ ;等待 END ;结束 查表指令有: MOVC A,@A+DPTR MOVC A,@A+PC 查表就是把事先计算或测得的数据按照一定的顺序编制成表格存放在存储器中,然后根据输入的数据,从表格中查出所需的结果。 4.2.4 查表程序设计 片内RAM的EGA单元中有一个大写的英文字母,要求将此字母在英文字母表中的位置送入片内的COUNT单元中,如EGA单元中字母为I时,则COUNT单元中需送入数字9。 例 4.6 第一条查表指令采用DPTR存放数据表格的地址, 查表过程简单。查表前先把数据表格起始地址存入 DPTR,然后把所查表的索引值送入累加器A中,最 后使用“MOVC A,@A+DPTR”完成查表。 第二条查表指令要复杂,其步骤分如下三步: 1、使用传送指令把所查数据的索引值送入累加器A 2、用“ADD A,#data”指令对累加器A进行修正。 data值由 PC+data=数据表首地址 确定。 PC是“MOVC A,@A+PC”的下一条指令的地址。 data值实际等于查表指令和数据表格之间的字节数 3、采用查表指令“MOVC A,@A+PC”完成查表。 如果将26个英文字母按照顺序编成一个表,通过查表法得到一个字母与EGA单元中的字母比较,若不相等再查,同时记录查表的次数。查完后,将记录次数送COUNT单元。 分析 参考程序 ORG 1000H EGA EQU 50H COUNT EQU 60H MOV COUNT,#00H MOV A, #16 ;调整地址 LOOP: PUSH A MOVC A, @A+PC ;查表 CJNE A, EGA, NF ;所查字母与EGA中字母比较*3 SJMP LAST ;相等转LAST*2 NF: POP A ; *2 INC A ;调整地址 *1 INC COUNT ;记数值加1 *2 SJMP LOOP ;继续查 *2 LAST: INC COUNT

文档评论(0)

1亿VIP精品文档

相关文档