实用程序及其设计方法.ppt
,第四章 实用程序及其设计方法 4.1 N种分支的转移程序NJMP 功能:根据入口条件转向N个程序段 入口:(R3)=入口条件(0,1,2,3)出口:(R0)=RAM的低8位地址(R1)=RAM的高8位地址 出口:执行不同的子程序后,累加器中为读取到 的数,N-JMP:MOV A,R3 MOV DPTR,#JMPTBL MOVC A,A+DPTR JMP A+DPTR JMPTBL:DB MEM0-JMPTBL DB MEM1-JMPTBL DB MEM2-JMPTBL DB MEM3-JMPTBL MEM0:MOV A,R0;从内部RAM读数 RET MEM1:MOVX A,R0;从外部256B的RAM读数 RET MEM2:MOV DPL,R0;从外部64KB的RAM读数 MOV DPH,R1 MOVX A,DPTR RET,MEM3:MOV A,R1;从外部4KB的RAM读数 ANL A,#0FH ANL P2,#11110000B ORL P2,A MOVX A,R0 RET 应用实例:在有的计算机系统中采用了不同类型的打印机,它 们使用不同大小的RAM空间作数据缓冲区,同时可 能各自的速度及其它条件也不尽相同。,4.2 128种分支转移程序JMP-128 功能:根据入口条件转移到128个目的地址 入口:(R3)=转移目的地址的序号00H7FH 出口:转移到相应子程序入口 JMP-128:MOV A,R3 RL A MOV DPTR,#JMPTAB JMP A+DPTR JMPTAB:AJMP ROUT00 AJMP ROUT01.128个子程序首址 AJMP ROUT7F,4.3 256种分支转移程序JMP-256功能:根据入口条件转移到256个目的地址入口:(R3)转移目的地址的程序(00HFFH)出口:(SP)当前栈顶内容为转移子程序的入口地址(高位)JMP256:MOV A,R3 MOV DPTR,#TBL CLR C RLC A JNC LOW128 INC DPH LOW128:MOV SAVE,A MOVC A,A+DPTR PUSH ACC MOV A,SAVE INC A MOVC A,A+DPTR PUSH ACC RET TBL:DW ROUT0,4.4 大于256的 分支转移程序JMP-N功能:根据入口条件转向N个分之程序,N(最大的存贮容量散转表首址)/3入口:(R7R6)子程序序号(0N)JMP_N:MOV DPTR,#TAB MOV A,R7 MOV B,#3 MUL AB ADD A,DPH MOV DPH,A MOV A,R6 MOV B,#3 MUL AB XCH A,B ADD A,DPH XCH A,B JMP A+DPTR TAB:LJMP ROUT0,4.25 通过堆栈传递参数的方法之一,常用传递参数的方法:1)把参数装载到指定的工作寄存器(R0R7)或累加器 A中;2)把参数放在存储器中,通过地址寄存器R0、R1或 DPTR传递参数;3)通过堆栈传递参数。,利用通过寄存器或片内RAM传递参数这种方法编出调用SUBRT子程序的主程序。解:应该是:MAIN:MOV R0,#30H;传送RAM数据区的起始地址 MOV R7,#0AH;传送RAM数据区的长度 ACALL SUBRT;调用清零子程序 SJMP$;结束 SUBRT:MOV A,#00H;清零子程序 LOOP:MOV R0,A INC R0 DJNZ R7,LOOP RET,通过寄存器或片内RAM传递参数,子程序:MATRIX3:DEC SP DEC SP;跳过PC POP A MOV B,#N MUL AB POP 02H ADD A,R2 ADD A,#4 MOVC A,A+PC PUSH A INC SP INC SP RETTAB:,调用程序:PUSH I PUSH J ACALL MATRIX3 POP A,4个字节,本章到此结束,谢谢您的光临!,