资源描述:
《实用程序及其设计方法.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第四章实用程序及其设计方法4.1N种分支的转移程序N—JMP功能:根据入口条件转向N个程序段入口:(R3)=入口条件(0,1,2,3)出口:(R0)=RAM的低8位地址(R1)=RAM的高8位地址出口:执行不同的子程序后,累加器中为读取到的数N-JMP:MOVA,R3MOVDPTR,#JMPTBLMOVCA,@A+DPTRJMP@A+DPTRJMPTBL:DBMEM0-JMPTBLDBMEM1-JMPTBLDBMEM2-JMPTBLDBMEM3-JMPTBLMEM0:MOVA,@R0;从内部RAM读数RETMEM1:MOVXA,@R0;从外部256B的
2、RAM读数RETMEM2:MOVDPL,R0;从外部64KB的RAM读数MOVDPH,R1MOVXA,@DPTRRETMEM3:MOVA,R1;从外部4KB的RAM读数ANLA,#0FHANLP2,#11110000BORLP2,AMOVXA,@R0RET应用实例:在有的计算机系统中采用了不同类型的打印机,它们使用不同大小的RAM空间作数据缓冲区,同时可能各自的速度及其它条件也不尽相同。4.2128种分支转移程序JMP-128功能:根据入口条件转移到128个目的地址入口:(R3)=转移目的地址的序号00H~7FH出口:转移到相应子程序入口JMP-128
3、:MOVA,R3RLAMOVDPTR,#JMPTABJMP@A+DPTRJMPTAB:AJMPROUT00AJMPROUT01…...128个子程序首址……AJMPROUT7F4.3256种分支转移程序JMP-256功能:根据入口条件转移到256个目的地址入口:(R3)=转移目的地址的程序(00H~FFH)出口:(SP)=当前栈顶内容为转移子程序的入口地址(高位)JMP256:MOVA,R3MOVDPTR,#TBLCLRCRLCAJNCLOW128INCDPHLOW128:MOVSAVE,AMOVCA,@A+DPTRPUSHACCMOVA,SAVEIN
4、CAMOVCA,@A+DPTRPUSHACCRETTBL:DWROUT04.4大于256的分支转移程序JMP-N功能:根据入口条件转向N个分之程序,N≤(最大的存贮容量-散转表首址)/3入口:(R7R6)=子程序序号(0~N)JMP_N:MOVDPTR,#TABMOVA,R7MOVB,#3MULABADDA,DPHMOVDPH,AMOVA,R6MOVB,#3MULABXCHA,BADDA,DPHXCHA,BJMP@A+DPTRTAB:LJMPROUT04.25通过堆栈传递参数的方法之一常用传递参数的方法:1)把参数装载到指定的工作寄存器(R0~R7)或
5、累加器A中;2)把参数放在存储器中,通过地址寄存器R0、R1或DPTR传递参数;3)通过堆栈传递参数。利用通过寄存器或片内RAM传递参数这种方法编出调用SUBRT子程序的主程序。解:应该是:MAIN:MOVR0,#30H;传送RAM数据区的起始地址MOVR7,#0AH;传送RAM数据区的长度ACALLSUBRT;调用清零子程序SJMP$;结束SUBRT:MOVA,#00H;清零子程序LOOP:MOV@R0,AINCR0DJNZR7,LOOPRET通过寄存器或片内RAM传递参数子程序:MATRIX3:DECSPDECSP;跳过PCPOPAMOVB,#NM
6、ULABPOP02HADDA,R2ADDA,#4MOVCA,@A+PCPUSHAINCSPINCSPRETTAB:调用程序:PUSHIPUSHJACALLMATRIX3POPA4个字节本章到此结束,谢谢您的光临!