片微机原理第三章A3逻辑运算指令_第1页
片微机原理第三章A3逻辑运算指令_第2页
片微机原理第三章A3逻辑运算指令_第3页
片微机原理第三章A3逻辑运算指令_第4页
片微机原理第三章A3逻辑运算指令_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

3.2.3逻辑运算指令(24条),一、逻辑与、或、非、异或指令1ANL类指令(6条)其功能:将源操作数内容和目的操作数内容按位相“与”,结果存入目的操作数指定单元,源操作数不变。ANLA,Rn;ARnAANLA,direct;A(direct)AANLA,Ri;A(Ri)AANLA,#data;AdataAANLdirect,A;(direct)A(direct)ANLdirect,#data;(direct)data(direct),举例,例设AF6H,(30H)0FH执行ANLA,30H;A(30H)A操作如下:11110110(F6H)00001111(0FH)注意:按位“与”00000110(06H)结果:A06H,30H地址内容不变即(30H)=0FH若执行ANL30H,A;(30H)A(30H)操作同上,结果放在30H地址中,A中内容不变即(30H)=06H,AF6H。,2ORL类指令(6条)功能:将源操作数内容与目的操作数内容按位逻辑“或”,结果存入目的操作数指定单元中,源操作数不变。ORLA,Rn;ARnAORLA,direct;A(direct)AORLA,Ri;A(Ri)AORLA,#data;AdataAORLdirect,A;(direct)A(direct)ORLdirect,#data;(direct)data(direct),3XRL类指令(6条)功能:将两个操作数指定内容按位“异或”,结果存于目的操作数指定单元中。“异或”原则是相同为“0”,相异为“1”。XRLA,Rn;ARnAXRLA,direct;A(direct)AXRLA,Ri;A(Ri)AXRLA,#data;AdataAXRLdirect,A;(direct)A(direct)XRLdirect,#data;(direct)data(direct),例(50H)15H执行XRL50H,#06H;(50H)06H(50H)操作如下:00010101(05H)00000110(06H)00010011(13H)结果:(50H)13H,4取反、清零指令CPLA;AA累加器内容按位取反CLRA;00HA累加器A清0,二、循环移位指令(4条),功能:将累加器A中内容循环移位或者和进位位一起移位RLA;A中内容循环左移,执行指令一次左移一位RRA;A中内容循环右移,每执行指令一次右移一位RLCA;A与CY内容一起循环左移一位RRCA;A与Cy内容一起循环右移一位,例MOVA,#80HRLA;A01H例MOVA,#80HRRA;A40H例MOVA,#80HRLCA;CY=0,A00H;CY=1,A=01H例MOVA,#80HRRCA;CY=0,A01000000B(40H);CY=1,A11000000B(C0H),问题:将P1口的灯移动,可用什么指令?,MOVA,#01HLP:MOVP1,ALCALLDELAYRLASJMPLP,3.2.4控制转移类指令(17条),功能:根据要求修改程序计数器PC内容,以改变程序运行方向,实现转移。转移类指令又可分为:无条件转移、条件转移、绝对转移、相对转移和调用、返回指令。,一、无条件转移类指令(4条),LJMPaddl6;addl6PC无条件跳转到addl6;地址,可在64KB范围内转移,;称为长转移指令AJMPadd11;add11PC,无条件转向add11;地址,只能在2KB范围内转移SJMPrel;PC+2+relPC相对转移,rel是偏移量,;它是8位有符号数,范围-128+127;即向后跳转128B,向前可跳转127BJMPA十DPTR;A+DPTRPC,属散转指令,;无条件转向A与DPTR内容相加后;形成的新地址,例1请看如下程序PC2000HLJMP4000H;4000HPC4000HMOVA,#11H程序执行完第一条无条件转移指令后,马上跳转到4000H地址,执行该地址程序。,例2程序2000H:MOVR0,#1BH;1BHR02002H:SJMP03H;PC+2+rel=2002H+2+03H;2007HPC2006H:2007H:执行SJMP03H指令后,跳转到2007H地址执行程序。说明:实际编写程序时最好把偏移量和转移地址都用符号表示,机器汇编时自动计算出偏移字节数,不容易出错,同时也便于修改程序。,例3ORG4000HLJMPMAINORG400BHSJMPINTIMAIN:INTI:MAIN、INTI称为符号地址。,二、条件转移类指令(8条),功能:根据条件判断是否转移,条件满足则转移,条件不满足则顺序执行。1.判A转JZrel;A0,PC+2+relPC;A0顺序执行JNZrel;A0,PC+2+relPC;A0顺序执行,2.比较指令,功能:源操作数与目的操作数比较,相等顺序执行CJNEA,direct,rel;A(direct)转向PC+3+relPC;且A(direct),0CY;A(direct),lCY;A(direct),PC+3PC即顺序执行CJNEA,#data,rel;Adata转向PC+3+relPC;且Adata,0CY;Adata,1CY;Adata,PC+3PC即顺序执行,CJNERn,#data,rel;Rndata转向PC+3+relPC;且Rndata,0CY,Rndata,1CY;Rndata,PC+3PC即顺序执行CJNERi,#data,rel;(Ri)data转向PC+3+relPC;且(Ri)data,0CY,(Ri)data,1CY;(Ri)data,PC+3PC即顺序执行注意:CJNE类指令中借用进位标志位CY作为比较结果的标志位,目的操作数内容小于源操作数内容CY置“1”,反之CY清“0”。该类指令多用于分支程序,3.减“1”转移指令DJNZRn,rel;Rn-1Rn,;Rn0,PC+2+relPC;Rn0,PC+2PC顺序执行DJNZdirect,rel;(direct)-1(direct),;(direct)0转向PC+2+relPC;(direct)0,PC+2PC顺序执行注意:DJNZ指令执行时Rn或direct先减l,然后再判断Rn或direct内是否等于0。不为0则转,为0顺序执行。DJNZ指令在循环程序中,控制循环次数很方便。,延时程序,DELAY:MOVR0,#10LP:NOPDJNZR0,LPRET注意:编程时不要写绝对字节数,用符号地址,三、调用、返回、空操作指令,1调用指令(2条)调用指令用于调用子程序。LCALLaddr16;长调用指令功能:该指令可调用64KB范围内的任意子程序,故称长调用指令。ACALLaddr11;短调用指令。功能:只能调用2KB范围内的子程序,故称短调用指令。2程序返回指令(2条)RET;子程序返回指令功能:放在子程序最后,使程序准确返回到主程序断点处。,三、调用、返回、空操作指令,RETI;中断返回指令功能:用于中断服务程序,使中断程序结束后准确返回到主程序断点处,执行过程同RET,它还能清除优先级状态。3空操作指令(1条)NOP;只进行取指令、译码,不进行任何操作,故为空操作,常用于产生一个机器周期延时。,例编程控制累加器A中数从0逐次加1,当A中为100时停止加l,把结果存入片内RAM50H单元中。程序CLRA;清AMOVR0,#100;循环常数送R0LP:INCA;A+1ADJNZR0,LP;R0-1R0,R00转LPMOV50H,A;R00(够100次,A50H);(50H)=100=64H,3.2.5位操作指令(布尔指令),功能:对内部RAM中可进行位操作的区域进行位操作。主要位操作有变量传送、逻辑运算、控制转移等。位操作与字节操作的主要区别:用进位标志位CY(记为C)作位累加器。C的功能类似累加器A,只是A中可存放8位二进制数,C中只能存放一位二进制数,或为“1”或为“0”。MOVC,bit;(bit)C,寻址位的状态送入CMOVbit,C;C(bit),C的状态送位地址中CLRC;0C,清0C累加器CLRbit;0(bit),清0寻址位,3.2.5位操作指令(布尔指令),CPLC;CC,C取反CPLbit;(bit)(bit),寻址位取反SETBC;1C,C置“1”SETBbit;1(bit),寻址位置“1”,ANLC,bit;C(bit)C,寻址位和C“与”,;结果在CANLC,/bit;C(bit)C,寻址位的非;和C“与”,结果在CORLC,bit;C(bit)C,寻址位与C“或”,;结果在CORLC,/bit;C(bit)C,寻址位的非;和C“或”,结果在CJCrel;C=1转向PC+2+relPC;C0顺序执行PC+2PCJNCrel;C=0转向PC+2+relPC;C1顺序执行PC+2PC,JBbit,rel;(bit)l转向PC+3+relPC;(bit)0顺序执行PC+3PCJNBbit,rel;(bit)0转向PC+3+relPC;(bit)l顺序执行PC+3PCJBCbit,rel;(bit)1转向PC+3+relPC;同时0(bit);(bit)0顺序执行PC+3PC注意:JBC与JB指令区别,前者转移后并把寻址位清0,后者只转移不清0寻址位。,例用位操作指令编程计算逻辑方程P1.7ACC.0(B.0+P2.1)+P3.2式中“+”表示逻辑“或”;“”表示逻辑“与”。程序MOVC,B.0;B.0CORLC,P2.1;CP2.1C即B.0+P2.1CANLC,ACC.0;CACC.0C;即ACC.0(B.0+P2.1)CORLC,/P3.2;CP3.2C;即ACC.0(B.0+P2.1)+P3.2CMOVP1.7,C;CP1.7,3.2.6伪指令,伪指令或汇编指令:有一些控制汇编的特殊指令,它们不属于指令系统也不产生机器码,故称为伪指令或汇编指令。用助记符指令编写的程序叫源程序,汇编后的程序叫目的程序。下面介绍几条常用伪指令。一、地址定位伪指令格式:ORGaddrl6操作码16位地址例1ORG2000H表示某段程序的起始地址是2000H单元。,注意:在一个源程序中可以多次使用0RG指令以规定不同的程序段地址,但各段地址必须由小到大排列,地址不能交叉、重叠。例2ORG2000HORG2500HORG3000H这种顺序是正确的。若按下面顺序排列则是错误的。ORG2500HORG2000HORG3000H,二、汇编结束伪指令格式:END操作码END放在整块汇编程序之后,表示汇编到此结束。注意:END千万不能放在程序中间,这样就把END之后的程序丢掉,不予汇编。三、字节定义伪指令格式:DB字节常数或ASCII码操作码操作数,例如ORG2000HDB30H,40H,24,“C”,“B”汇编后(2000H)30H(200lH)40H(2002H)18H(24)(2003H)43H(C的ASCII码),(2004H)42H(B的ASCII码),四、定义字伪指令格式:DW字常数或ASCII码操作码操作数例如:ORG2000HDW1246H,7BH,10汇编后:(2000H)12H(2001H)46H第1个字(2002H)00H(2003H)7BH第2个字(2004H)00H(2005H)=0AH第3个字DW伪指令的功能:从指定单元开始定义(存储)若干个字,一个字2个字节。上例定义了3个字:1

温馨提示

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

评论

0/150

提交评论