分支程序.doc_第1页
分支程序.doc_第2页
分支程序.doc_第3页
分支程序.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验二 分支程序,查表程序编写实验一、实验目的1掌握跳转指令2掌握子程序调用指令3掌握查表程序运用二、实验设备单片机IDE集成开发软件三、实验要求验证“实验原理”一节中给出的实例程序,熟悉各种跳转指令、子程序调用指令,以及查表程序编写方法。四、实验原理作为软件实验,可以在没有硬件及仿真仪的情况下,利用集成开发环境进行。1跳转指令控制转移的指令包括无条件转移指令和有条件跳转指令。(1)长跳转指令LJMP addr16长跳转,把16位(2个字节)的地址送入PC中。2绝对转移指令AJMP addr11在存储空间2kB内转移。与PC当前值高5位共同组成16位目标地址。(3)短跳转指令SJMP rel8位补码表示的地址。可以在-128到127之间跳转。(4)间接跳转指令JMP A+DPTR这是一条很有用的散转指令。跳转地址在程序运行时动态决定。(5)累加器判零转移指令JZ rel,JNZ rel,JZ rel,累加器为0转移,JNZ rel,累加器不为0转移。(6)比较转移指令,CJNE ,rel。CJNE A,#data,relCJNE A,direct,relCJNE Ri,#data,relCJNE Rn,#data,rel(8)循环转移指令DJNZ Rn,rel。首先Rn减1,然后判断是否是零,不是则跳转。DJNZ direct , rel。首先直接地址中的数据减1,然后判断是否是零,不是则跳转。(9)位控制转移指令JC rel,若Cy=1,则(PC)-(PC)+2+rel 若Cy=0,则(PC)-(PC)+2JNC rel若Cy=0,则(PC)-(PC)+2+rel 若Cy=1,则(PC)-(PC)+2JB bit,rel; 若(bit)=1,则(PC)-(PC)+3+rel 若(bit)=0,则(PC)-(PC)+3JNB bit,rel若(bit)=0,则(PC)-(PC)+3+rel 若(bit)=1,则(PC)-(PC)+3JBC bit,rel; 若(bit)=1,则(PC)-(PC)+3 若(bit)=0,则(PC)0 y = 0 X=0 -1 X(A) CJNE A,#0,L1 ;(A)与0比较,不等则转移 MOV R3,#0 ;若相等,0(R1) SJMP L3 L1: JB ACC.7,L2 ;自变量0,1+(R1) SJMP L3 L2; MOV R3,#0FFH ;自变量0,1(R1) L3; SJMP $ END 先赋值后分支。先把X调入累加器A,并判断它是否为零。若X=0,则A中内容送R3;若X0,则先给R0赋值(=-1)。然后判断A0。若A0,则把R0修改为1后送R3,程序流程如图27-1(b)所示。程序如下: ORG 0000H MOV A,R2 ;取X到A JZ L2 ;X=0则转移 MOV R0,#0FFH JB ACC.7,L1 ;若X0,(R0)=1 L1: MOV A,R0 L2: MOV R3,A ; 存结果 SJMP $ END 开始(A)X(A)=0?(A)0?(A)=-1存结果(A)=1结果YYNN开始(A)X(A)=0?(A)0?(R0)=-1存结果(R0)=-1结果(a)NN(b)Y 图2-1 流程图2)查表程序设计查表程序是根据查表算法设计的。该方法把事先计算或实验数据按一定顺序编成表格,存于程序存储器内,然后根据输入参数值,从表中取得结果。查表程序可完成数据补偿、计算和转换等功能。采用MCS-51汇编语言查表非常方便。它有两条专门的查表指令:MOVC A,A+DPTR,MOVC A,A+PC第一条查表指令采用DPTR存放数据表格的地址,查表过程比较简单。查表前需要把数据表格表头地址存人DPTR,然后把所要查得的数在表中相对表头地址的偏移量送入累加器A,最后使用“MOVC A,A+DPTR”完成查表。采用“MOV A,A+PC”指令查表,所需操作有所不同,可分为三步:用传送指令把所查数据的项数送人累加器A;使用“ADD A,#data指令对累加器A进行修正,data值由PC当前值+data=数据表头地址。确定,实际上data值等于查表指令和数据表格之间的字节数;用指令“MOVC A,A十PC”完成查表。查表程序主要用于代码转换、代码显示、实时值查表计算和按命令号实现转移等。范例:求函数y=X!(X=0,7)的值。设自变量存放在ABC单元,表头的地址为TABL,y值为双字节存放在寄存器R2R3中,R3存放y值低字节,写出查表程序。 程序如下: ORG 0000H ABC EQU 30H L1: MOV A,ABC ;取X ADD A,ABC ;X乘2与双字节Y相对应 MOV R3,A ;保存指针 ADD A,#07H ;计算偏移量 MOVC A,A+PC ;查低字节 XCH A,R3 ADD A,#04H ;计算偏移量 MOVC A,A+PC ;查高字节 MOV R2,A SJMP $ TABLE: DB 01,00,01,00,02,00,06,00 DB 24H,00,20H,01,20H,07,40H,50H END五、实验步骤1、分别编写简单分支程序,及子程序调用程序,然后在开发环境中编译运行。2、编写查表程序。然后在开发环境中编译运行。六、实验报告1、给出各个程序的清单,要

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论