版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
电路转移指令
电路转移指令循环程序:一些有规可循而又反复处理的问题利用比较转移指令CJNE、减1不为“0”转移指令DJNZ等实现例4-13:在内部RAM30H~4FH
连续32个单元中存放了单字节无符号数,求32个无符号数之和,并存入内部RAM51H,50H中。编程思路:这是重复相加问题,要设置一些工作单元设:R0做加数地址指针,R7做循环次数计数器,R3做和数的高字节寄存器。A做和数的低字节寄存器程序的流程图如下:上页下页回目录地址指针循环次数计数器多重分支程序举例例4-7:设片内30H单元存放的是一元二次方程ax2+bx+c=0根的判别式△=b2–4ac的值。试根据30H单元的值,编写程序,判断方程根的三种情况,存入片内31H内。在31H中存放“0”代表无实根,存放“1”代表有相同的实根,存放“2”代表两个不同的实根。编程思路△为有符号数,有三种情况,即小于零,等于零、大于零。可以用两个条件转移指令来判断,首先判断符号位,用指令JNBACC.7,rel判断,若ACC.7=1,则一定为负数;此时
0
若ACC.7=0,则△≥0。此时再用指令JNZrel判断若△≠0,则△>0,否则△=0上页下页回目录0△=0△>0上页下页回目录流程图:A←△ACC.7=0?ENDSTARTNY(A)=0?31H←031H←2YN31H←1△0△=0△0程序:
ORG0000HSTART:MOVA,30HJNBACC.7,YESMOV31H,#0SJMPFINISHYES:JNZTOWMOV31H,#1SJMPFINISHTOW:MOV31H,#2FINISH:SJMP$END;△值送A;△≥0转YES;△<0无实根;△=0有相同实根;△>0转TOW;有两个不同实根上页下页回目录4.3.3N路分支程序根据前面程序运行结果,可以有N种选择,并转向其中任一处程序。例4-10128路分支程序:根据R3值转向128个目的地址。编程方法:顺序程序
MOVA,R3CJNEA,#00H,FZ1AJMPFZ00FZ1:CJNEA,#01H,FZ2AJMPFZ01FZ2:CJNEA,#02H,FZ3AJMPFZ02FZ3:….. 烦琐,程序太长。如作10000个分支程序…….使用JMP@A+DPTR指令实现:JMP128: MOVA,R3 CLRC SUBBA,#128 JNC ERROR MOV A,R3 MOVB,#3 MUL AB MOVDPTR,#PRGTAL
ADD A,DPL MOV DPL,A MOV A,DPH ADDCA,B MOV DPH,A CLR A JMP @A+DPTRPRGTAL: LJMP ROUT00 LJMP ROUT01 ……. LJMP ROUT127 ;入口条件检查;分支跳转;LJMP指令占3字节例4-10:128分支程序JMP256:MOVA,R3;取N值MOVDPTR,#PRGTBL;DPTR指向分支地址表首址CLRC;RLCA;(A)×2JNCLOW128;是前128个分支程序,则转移INCDPH;否基址加256LOW128:MOVTEMP,A;暂存AINCA;指向地址低8位MOVCA,@A+DPTR;查表,读分支地址低8位PUSHACC;地址低8位入栈MOVA,TEMP;恢复A,指向地址高8位MOVCA,@A+DPTR;查表,读分支地址高8位PUSHACC;地址高8位入栈RET;分支地址弹入PC实现转移PRGTBL:DWROUT00;256个分支程序首地址DWROUT01
…;占用512个单元DWROUTFF;例4-11:256分支程序分支程序应用场所:1、键盘按键处理程序根据所按功能键转到相应的功能子程序2、通信协议处理程序例:某键盘如下:通信编号设置采样时间设置+-确认MOV A,BCLR CSUBB A,#3JC FOUNRETFOUN:MOVA,BRL AADD A,B MOV DPTR,#KEYF JMP @A+DPTRKEYF:LJMPTONGXIN LJMPBIANHAOLJMPCAIYANG ;键编号流程图:31→R7#0→R3(30H)→A#31H→R0CY=0?ENDSTART
(R7)-1=0?51H←(R3)50H←(A)YN(A)+((R0))→A(R0+1)→R0(R3)+1→R3上页下页回目录NY
程序:;R7作循环次数计数器;R3作和数高字节寄存器;取被加数;R0作加数地址指针;CY=0,和<256,则转;作加法;CY=1,加到高字节;修改R0指针;未完,重复加;存和数初始化部分循环体部分结束部分
ORG0000HSTART:MOVR7,#31MOVR3,#0MOVA,30HMOVR0,#31HLOOP:ADDA,@R0JNCNEXTINCR3NEXT:INCR0DJNZR7,LOOPMOV51H,R3MOV50H,ASJMP$END上页下页回目录循环执行直到R7=0循环控制例4-14:从外部RAMBLOCK单元开始有一无符号数数据块,数据块长度存入LEN单元,求出其中最大数存入MAX单元。为了方便进行比较
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论