第二章单片机优秀文档.ppt
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第二 单片机 优秀 文档
- 资源描述:
-
,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第二章 指令系统,内容提要,寻址方式,传送与交换指令,算术运算、逻辑运算指令,控制转移指令,位操作指令,计算机通过执行程序完成人们指定的任务,程序由一条一条指令构成,能为,CPU,识别并执行的指令的集合就是该,CPU,的,指令系统,。,MCS-51,单片机汇编语言指令,基本,格式,:,操作符,目的操作数,源操作数,操作符指明该指令完成什么操作;,操作数是指明该指令的操作对象。,目的操作数是存放结果的。,指令中操作数提供的方式称为,寻址方式,。,指令中的常用符号,Rn,:n=(0,7,),表示当前工作寄存器,R0,R7,中的一个。,Ri,:i=(0,、,1,),代表,R0,和,R1,寄存器中的一个,用作间接寻址寄存器。,dir,:8,位直接字节地址(片内,RAM,和,SFR,),#data,:8,位立即数,即,8,位常数。可以为,2,进制(,B,)、,10,进制、,16,进制(,H,)、字符(),#data16,:,表示,16,位立即数,即,16,位常数,取值范围为,#0000H,#0FFFFH,addr16,:,表示,16,位地址,addr11,:,表示,11,位地址,rel,:,相对偏移量(为一字节补码)用于相对转移指令中,bit,:,位地址,在位地址空间中。,$,:,表示当前指令的地址。,2.1,寻址方式,1,、,立即寻址,指令中直接给出操作数的寻址方式。在,51,系列单片机的指令系统中,立即数用一个前面加“,#“,号的,8,位数,(#data,,如,#30H),或,16,位数,(#data16,,如,#2052H),表示。,立即寻址中的数,称为立即数。,例如指令:,MOV A,,,#30H,2,、直接寻址,:操作数的地址直接出现在指令中。,寻址对象:,内部数据存贮器:使用它的地址。,特殊功能寄存器:既可使用它的地址,也可以直接 使用寄存器名。,41,H 78H,40,H 56H,41,H 78H,40,H 78H,例:,MOV A,,,40H ;A=56H,机器码,E540,MOV P0,,,#45H,;,45HP0,,,P0,为直接寻址的,SFR,,其地址为,80H,,,机器码为,758045,MOV 40H,,,41H;,机器码为,854140,内部,RAM,(,41H,),(,40H,),(,40H,),=,(,41H,),=78H,3,、寄存器寻址,:操作数存放在寄存器中。,寻址对象:,A,,,B,,,DPTR,,,R0,R7,。,B,仅在乘除法指令中为寄存器寻址,在其他指 令中为直接寻址。,A,可以寄存器寻址又可以直接寻址,直接寻址 时写作,ACC,例:,MOV A,,,R0,;,R0A,,,A,、,R0,均为寄,存器寻址,机器码,E8,MUL AB,;,A*BBA,,,A,、,B,为寄,存器寻址,机器码,A4,MOV B,,,R0,;,R0B,,,R0,为寄存器寻,址,,B,为直接寻址,机器码,88F0,,其中,F0,为,B,的,字节地址(见表,1-2,),PUSH ACC,;,A,的内容压入堆栈,A,为直接寻址,机器码,C0E0,4,、,寄存器间址:,R0,、,R1,、,DPTR,操作数在以寄存器内容为地址的单元中。,例:,MOV R0,#20H,MOV R0,,,A,;,A(20H),地址的内部,RAM,MOVX A,,,R1,;外部,RAM,(地址为,P2 R1,),的内容,A,MOVX DPTR,,,A,;,A,以,DPTR,内容为地,址的外部,RAM,5,、变址寻址,以,DPTR,或,PC,寄存器内容为基地址,与,A,的内容相加形成操作数的地址。其中,累加器,A,内容是可变的,。,例:,MOVC A,A+DPTR,6,、相对寻址,相对寻址是将程序计数器,PC,的当前值与指令第二字节给出的偏移量相加,从而形成转移的目标地址。,指令中用标号,。,例:,JZ 61H,7,、位寻址,对片内,RAM,中,20H,2FH,中的,128,个位地址及,SFR,中的可位寻址的位地址寻址。,例:,MOV C,,,20H,;,20H,位的内容送,CY,标志,位,,C,称为位累加器。,MOV A,,,20H,;字节寻址,将内部,RAM,中,20H,单元中的,内容送给累加器,A,。,以上两条指令位寻址还是字节寻址,由另一个操作数决定。,dir,Ri,Rn,#,data,A,MOV A,Rn,#,data dir,Ri,MOV dir,A Rn,Ri,#,data,dir,MOV,Rn,MOV,Ri,A,dir,#,data,1,、内部,RAM、SFR,之间的传送,MOV,指令,A,dir,#,data,例:,R1=20H,,(,20H,),=55H,,,MOV A,,,R1,执行后,,A=55H,。,例:(,40H,),=30H,,,MOV R7,,,40H,执行后,,R7=30H,。,例,MOV R7,,,40H,执行后,,R7=40H,。,例 判断下列指令的正误:,MOV 29H,R7 MOV 25H,P1,MOV 56H,#70H MOV 34H,28H,MOV R3,R7 MOV R3,R7,MOV R3,#D2H MOV#34H,28H,MOV A,#280H MOV P3,P1,编程将,R3,的内容送,R1,。,MOV A,R3,MOV R1,A,A,外部数据,存储器,程序,存储器,Ri,A DPTR,A,A,Ri A,DPTR,MOVX,MOVC,A,A+PC,A,A+DPTR,2、外部数据存储器和,A,累加器之间的传送,程序存储器和,A,累加器之间的传送,MOVX,MOVC,MOVX,指令举例例,:,实现片外数据存储器数据传送(2000,H)(2100H)。,MOV DPTR,#2000H,MOVX A,DPTR,MOV DPTR,#2100H,MOVX DPTR,A,;,DPTR=2000H,;,DPTR=2100H,;,A X,;(2100,H)X,x,片外数据存储器不能直接寻址。下列为,非法,指令:,MOVX A,2000H ,MOVX 2100H,2000H,使用,P2,口和8位寄存器,Ri,间址:,MOV P2,#,20,H;,高位地址,MOV R0,#,00,;,低位地址,MOVX A,R0;,读片外,RAM,MOV P2,#21H;,改变高位地址,MOVX R0,A;,写片外,RAM,查表指令,MOVC,注:,只能从程序存储器读取数据到,A,累加器。,只能使用变址间接寻址方式 多用于查常数表程序,直接求取常数表中的函数值,1),DPTR,为基址寄存器,MOVC A,A+DPTR;A(A+DPTR),查表范围为,64,KB,程序存储器任意空间。,2),PC,为基址寄存器,MOVC A,A+PC;A(A+PC),(整个),常数表只能在查表指令后 256,B,范围内。,例:,查表法求,Y=X,2,。,设,X(0X15),在片内,RAM,20,H,单元,,Y,存入片内,RAM,21,H,单元,1)用,DPTR,作基址寄存器,ORG 0100H,SQU:MOV DPTR,#TAB,;确定表首地址,MOV A,20H ;,取,X,MOVC A,A+DPTR;,查表求,Y=X,2,MOV 21H,A ;,保存,Y,RET ;,子程序结束,;其它程序段,ORG 0200H ;,常数表格首地址,TAB:DB 00,01,04,09,225;,平方表,指令地址,源程序,ORG 0100H;,程序起始地址,0100,HSQU:MOV A,20H;,取,X,0102H ADD A,#3;,修正偏移量,0104,H,MOVC A,A+PC;,查表求,Y=X,2,0105H MOV 21H,A;,存结果,0107,HRET ;,子程序结束,0108,HTAB:DB 00,01,04;,平方表,010,BHDB 09,225,思考题:,当0,X255,时,如何用查表法编程求,Y=X,2,2)用,PC,作基址寄存器,3,、堆栈操作指令,入栈指令:,PUSH dir,;SPSP+1,(SP)(dir),例:设,A=02,B=56H,,执行下列指令序列后,,SP=?A=?,B=?,SBR:MOV SP,#30H,PUSH A,PUSH B,MOV A,#0,MOV B,#01,POP B,POP A,RET,;设栈底,;保护现场,;恢复现场,出栈指令:,POP,dir,;(,dir,)(SP),SPSP-1,堆栈操作示意:,SP 02,SP 56,02,56,SP 02,56,02,SP ,SP ,4,、交换指令,实现片内,RAM,区的数据双向传送,字节交换指令,XCH A,Rn,;ARn,XCH A,Ri,;A(Ri),XCH A,dir,;A(dir),习题 将片内,RAM,60,H,单元与 61,H,单元的数据交换,例设,A=29H,,(,2AH),38H,执行指令,XCH A,2AH,后,,A=?,(2AH)=?,38,H,29,H,XCH 60H,61H ,对吗?,半字节交换指令,XCHD A,Ri,;A,03,(Ri),03,SWAP A,;A,47,A,03,例3-4-3:将片内,RAM,2,AH,和 2,BH,单元中的,ASCII,码转换成压缩式,BCD,码存入 20,H,单元,数字 09的,ASCII,码30,H39H,85H,压缩的,BCD,码和非压缩的,BCD,码见图,如,1823,压缩的,BCD,码为,1823H,非压缩的,BCD,码为,01080203H,非压缩,BCD,A,A,08,例3-4-3,将片内,RAM,2,AH,和 2,BH,单元中的,ASCII,码转换成压缩式,BCD,码存入 20,H,单元,MOV A,#00H;A=00,MOV R0,#2AH,85,H,R1,R0,习题:,交换片内,RAM,40,H,单元和 41,H,单元的低半字节,0,0,MOVR1,#2BH,XCHD A,R0,SWAP A,XCHD A,R1,XCHA,20H,;,低4位交换,A=08,;,A=80H,;,低4位交换,;(20,H)=85H,3 8,0 0,A,3 5,8 0,8 5,R1,R0,3 0,3 0,dir,Ri,Rn,#,data,A,dir,Ri,Rn,#,data,A,ADD,ADDC,SUBB,ANL,ORL,XRL,A,Rn,Ri,#,data dir,加,进位加,借位减,与,或,异或,以,A,为目的操作数的加减、逻辑运算指令(24条),以,dir,为目的操作数的逻辑运算指令(6条),A,#,data,dir,与,ANL,或,ORL,异或,XRL,dir,#,data,A,算术类指令的操作意义非常明确,不一一赘述,,注意减指令只有带借位减,,因此在多字节减法中,,最低字节作减法时,注意先清,CY,。,逻辑运算是按位进行的,两数运算的运算法则是:,与:有“,0”,则“,0”,;,或:有“,1”,则“,1”,异或:同为“,0”,,异为“,1”,;,与“,0”,异或值不变:与“,1”,异或值变反。,逻辑指令常用于对数据位进行加工。,00001111,10000110,10001111,00001111,10000110,10001001,例:,A=0FH,执行,ANL A,#86H,后,A,06H,例:,A=0FH,执行,ORL A,#86H,后,A,8FH,例:,A=0FH,执行,XRL A,#86H,后,A,89H,+,A,Rn,Ri,dir,DPTR,INC,减,1,指令,:,DEC,A,Rn,Ri,dir,加,1,指令,:,提问:没有,DEC DPTR,指令,怎么解决,DPTR,的减,1,?,2.3.5,十进制调整指令,ADD,指令的结果为二进制,若想进行十进制加,就必须进行十进制调整(即,BCD,码调整)。,调整指令:,DA A,;将,A,中二进制,相加和,调整成,BCD,码,调整方法:,和低,4,位大于,9,或有半进位则低,4,位加,6,;,和的高,4,位大于,9,或有进位,则高,4,位加,6,。,指令根据相加和及标志自动进行判断,因此该指令应紧跟在加指令之后,至少在加指令和该指令之间不能有影响标志的指令。,DA A,指令只对一个字节和调整,如为多字节相加必须进行多次调整。此指令不能对减法结果进行调整。,MCS-51,只有,DA A,一条,BCD,调整指令!,例,2-13,完成,56+17,的编程。,MOV A,,,#56H,;,A,存放,BCD,码,56H,MOV B,,,#17H,;,B,存放,BCD,码,17H,ADD A,,,B,;,A=6dH,DA A,;,A=73H,SJMP$,56H,17H,6dH,6,73H,+,+,指令对标志位的影响有如下规律:,1,)凡是对,A,操作指令(包括传送指令)都影响,PSW,的,P,标志位。,2,)传送指令、加,1,、减,1,指令、逻辑运算指令不影响,Cy,、,OV,、,AC,标志位。,3,)加减运算指令影响标志位,乘除指令使,Cy=0,,当乘积大于,255,,或除数为,0,时,,OV,置,1,。,4,)对进位位,Cy,(指令中用,C,表示)进行操作的指令和大循环指令,显然会影响,Cy,。,具体指令对标志位的影响可参阅,附录,A,。,标志位的状态是控制转移指令的条件,因此指令对标志位的影响应该,熟记,。,例2:,A=9AH,R2=E3H,PSW=0,,执行指令,ADDC A,R2,后求:,A=,Cy=,OV=,AC=,P=,PSW=?,1001 1010,1110 0011,+,0,1,0111 1101,7,DH 1 1 0 0,10000100=84,H,CY,AC,F0,RS1,RS0,OV,-,P,1,0,0,0,0,1,0,0,CY,CY,RR A,RL A,RLC A,RRC A,移位指令(仅对,A),教材中无,10010110,00101101,A,A,设,01001011,A,1,CY,11001011,A,0,00101101,A,1,CY,CY,CPL A,CLR A,累加器,A,取反:,累加器,A,清零:,乘法指令:,MUL AB,;,ABBA,除法指令:,DIV AB,;,AB,,商,A,,,余数,B,2.4,控制转移指令,改变指令的执行顺序,转到指令指示的新的,PC,地址执行。,MCS-51,的控制转移指令有以下类型:,无条件转移:,无需判断,执行该指令就转移到目的地址。,条件转移:,需判断标志位是否满足条件,满足条件转移到目的地址,否则顺序执行。,绝对转移:,转移的目的地址用绝对地址指示,通常为无条件转移。,相对转移:,转移的目的地址用相对于当前,PC,的偏差(偏移量)指示,通常为条件转移。,长转移或长调用:,目的地址距当前,PC 64KB,地址范围内。,短转移或短调用,:目的地址距当前,PC 2KB,地址范围。,1.,长调用,LCALL addrl16,;,addr16PC0,15,(,1,),该指令功能是,保护断点,即当前,PC,(本指令的下一条指令的首地址)压入堆栈。,子程序的入口地址,addr16,送,PC,,转子程序执行。,(,2,),本指令为,64KB,地址范围内的调用子程序指令,子程序可在,64KB,地址空间的任一处。,(,3,),本指令的机器码为三字节,12 addr16,。,2.,短调用,(绝对调用),ACALL addr11,;addr11PC0,10,(,1,),该指令的功能是,保护断点,即当前,PC,压入堆栈。,addrl11PC0,10,而,PC11,15,保持原值不变。,(,2,),本指令为,2KB,地址范围的调用子程序指令,,子程序入口距当前,PC,不得超过,2KB,地址范围,。,正确:同一个2,K,范围内,(,3,),本指令的机器码为二字节,设,addr11,的各位是,a10a9a8a2a1a0,,则,ACALL,指令机,器码,a10a9a8,10001,a7a6a5a4a3a2a1a0,,其中,10001,是,ACALL,指令的操作码。,例,2-18,子程序调用指令,ACALL,在 程序存储器中的首地址为,0100H,,子程序入口地址为,0205H,。试确定能否使用,ACALL,指令实现调用?如果能使用,确定该指令的机器码。,解,:,因为,ACALL,指令首地址在,0100H,,而,ACALL,是,2,字节指令,所以下一条指令的首地址在,0102H,。,0102H,和,0250H,在同一,2KB,地址范围内,,故可用,ACALL,调用。调用入口地址为,0250H,,,ACALL,指令的机器码形式为:。,一般在开发系统中都可用,CALL,代替,LCALL,或,ACALL,是否在2,K,范围内由汇编程序判断。,3.,子程序返回指令,RET,;从子程序返回主程序。,功能:从栈顶弹出,返回地址,到,PC,。,RETI,;从中断服务程序返回。,功能:从栈顶弹出断点到,PC,,并恢 复中断优先级状态触发器。,2.4.2,转移指令,1.,无条件转移指令,(,1,)短转移,(绝对转移),AJMP addr11,;,addr11PC0,10,转移范围:本指令为,2KB,地址范围内的转移指令。对转移目的地址的要求与,ACALL,指令对子程序入口地址的要求相同。,机器码形式:本指令为,2,字节指令。设,addr11,的各位是,a10a9a8a2a1a0,则指令的机器码为,a10a9a800001a7a6a5a4a3a2a1a0,。,(,2,)长转移,LJMP addr16,;,addr16PC0,15,本指令为,64KB,程序存储空间的全范围转移指令。转移地址可为,16,位地址中的任意值。,本指令为,3,字节指令,02 addr16,。,(,3,)间接转移,JMP A+DPTR,;,A+DPTRPC,例,2-20,A=02H,,,DPTR=2000H,,,指令,JMP A+DPTR,执行后,,PC=2002H,。也就是说,程序转移到,2002H,地址单元去执行。,ORG 0200H ;,位与 ANL C,bit ;,(1)短转移(绝对转移),4、寄存器间址:R0、R1、DPTR,MOV R0,#00;,逻辑运算是按位进行的,两数运算的运算法则是:,绝对转移:转移的目的地址用绝对地址指示,通常为无条件转移。,例 MOV R7,40H 执行后,R7=40H。,根据JMP A+DPTR指令的操作可知,,MOV 20H,C ;暂存于20H 单元,SP 56,绝对转移:转移的目的地址用绝对地址指示,通常为无条件转移。,在实际编程中,转移的目的地址不管是addr11、addr16、还是rel,均是一符号地址表示的(如SJMP ABC,AJMP LOOP),转移的类型是通过指令的操作符来决定的。,MOV bit,C ;,例 MOV R7,40H 执行后,R7=40H。,内部RAM(41H)(40H),$:表示当前指令的地址。,AJMP PROC2,(1)短转移(绝对转移),字节地址(见表1-2),习题 将片内RAM 60H单元与 61H单元的数据交换,不同的存储空间寻址方式不同,适用的指令不同,必须进行区分。,例:JZ 61H,查表指令MOVC 注:只能从程序存储器读取数据到A累加器。,TABLE:AJMP PROC0,ORL C,20H ;,异或:同为“0”,异为“1”;,试说明以下一段程序运行后A中的结果。,例,2-21,现有一段程序如下:,MOV DPTR,,,#TABLE,JMP A+DPTR,TABLE,:,AJMP PROC0,AJMP PROC1,AJMP PROC2,AJMP PROC2,根据,JMP A+DPTR,指令的操作可知,,当,A=00H,时,程序转入到地址,PROC0,处执行;,当,A=02H,时,转到,PROC1,处执行,可见这是一段多路转移程序,进入的路数由,A,确定。因为,AJMP,指令是,2,字节指令,所以,A,必须为偶数。,以上均为绝对转移指令,下面介绍相对转移指令。,(,4,)无条件相对转移,SJMP rel,;,PC+relPC,,,即,As,2,relPC,,机器码为,80 rel,As,为源地址(本指令的首地址),该指令为,2,字节指令,执行本指令时,当前,PC,As,+2,,,rel,为转移的偏移量,转移可以向前转(目的地址小于源地址),也可以向后转(目的地址大于源地址),因此偏移量,rel,是,1,字节有符号数,用补码表示(,128,127,),所以指令转移范围在离源地址,As,的,126,129,字节之间。,2.,条件转移指令,(,1,)累加器为零(非零)转移,JZ rel,;,A=0,则转移(,As+2+relPC,),JNZ rel,;,A0,程序顺序执行,机器码为7,0rel,dir,Ri,Rn,#,data,A,DJNZ,DJNZ,(,2,)减 1 不等于零转移,DJNZ Rn,rel,;,Rn-1,DJNZ dir,.rel,本指令有自动减,1,功能。,(,3,)比较转移指令,CJNE A,dir,rel,CJNE A,#data,rel,CJNE Rn,#data,rel,CJNE Ri,#data,rel,说明:,CJNE,指令都是,3,字节指令,作减操作,不回送结果,,影响,CY,标志,。,若第一操作数大于或等于第二 操作数,则标志,CY=0,。若第一操作数小于第二操作数,则,CY=1,。,这几条指令除实现两操作数相等与否的判断外,利用对,CY,的判断,还可完成两数大小,(无符号数),的比较。,试说明以下一段程序运行后,A,中的结果。,MOV 23H,,,#0AH,CLR A,LOOP,:,ADD A,,,23H,DJNZ 23H,,,LOOP,SJMP$,根据程序可知,A=10+9+8+7+6+5+4+3+2+1=55=37H,例,2-24,编写程序,要求读,P1,端口上的信息,若不为,55H,,则程序等待,直到,P1,端口为,55H,时,程序才往下顺序执行。,程序:,MOV A,,,#55H,;,A,55H,CJNE A,,,P1,,,$,;,P155H,,则程序循环执行,本指令,在实际编程中,转移的目的地址不管是,addr11,、,addr16,、还是,rel,均是一,符号地址,表示的(如,SJMP ABC,,,AJMP LOOP,),转移的类型是通过指令的操作符来决定的。,3.,相对偏移量,rel,的求法,在相对转移中,用偏移量,rel,和转移指令所处的地址值来计算转移的目的地址,,rel,是,1,字节补码,.,在填机器码时,需计算,rel,下面介绍计算,rel,的方法。,设 本条转移指令的首地址为,As,源地址,,指令字节数为,Bn,2,字节或,3,字节,,要转移的目标地址为,Ad,目的地址,,当前,PC=,As+Bn,因为在执行本条指令时,,PC,已经指向了下一条指令,见下图:,Ad,0100,MN:.,.,As,0125,BF 05 rel,CJNE R7,#06,MN,当前,PC 0128,当前,PC=,As+Bn=0125+3=0128,Bn=3,rel,=,Ad,当前,PC,=0100,H,0128,H,=,28,H,28,求补得,D,8H,于是,rel=Ad-,当前,PC,=Ad,(As+Bn),=,Ad-As-Bn,在上例中,于是,rel=(Ad-As-Bn),补,这就是在已知源地址,目的地址和指令的长度时,计算,rel,大小的公式。,例,2-25 MCS-51,单片机指令系统中,没有停机指令,通常用短转移指令,SJMP$($,为本条指令的首地址,),来实现动态停机的操作,试写出这条指令中机器码。,解:查附录,A,,,SJMP rel,的指令码为,80rel,据题意本条指令的首地址,As=$,,转移的目的地址是本条指令地址,即,Ad=$,该指令为两字节,即,Bn=2,,,rel=(Ad-As-Bn),补,=($-$-2),补,=(-2),补,=FEH,所以,SJMP$,指令的机器码是,80FEH,。,例,2-26,计算下面程序中,CJNE,指令的偏移量。,LOOP,:,MOV A,,,P1,CJNE A,,,#55H,,,LOOP,解 由于,MOV A,P1,是,2,字节指令,故,CJNE,指令的首,地址是,LOOP+2,。又因为,CJNE,是,3,字节指令,于是,有:,Ad=LOOP,As=LOOP+2,Bn=3,rel=LOOP-(LOOP+2)-3,补,=-5,补,=FBH,所以,CJNE A,#55H,LOOP,的指令码为,B455FBH,。,2.4.3,空操作指令,NOP,机器码,00,该指令经取指,译码后不进行任何操作(空操作)而转到下一条指令,常用于,产生,一个机器周期的延时,或上机修改程序时作填充指令,以方便增减指令。,例,2-27,将,A,累加器的低四为取反四次、高四位不变。每变换一次,从,P1,输出。,方法一 加,1,计数,:,MOV R0,,,#0,;计数初值送,0,LL,:,XRL A,,,#0FH,;高,4,位不变,低四位取反,INC R0,;次数加,1,MOV P1,,,A,;从,P1,输出,CJNE R0,,,#04,,,LL,;不满四次循环,RET,方法二 减,1,计数,:,MOV R0,#04H ;,计数初值送,4,LL:XRL A,,,#0FH,MOV P1,,,A,DJNZ R0,,,LL,;次数减,1,不等于,0,循环,RET,思考题:当0X255时,如何用查表法编程求Y=X2,例 2-25 MCS-51单片机指令系统中,没有停机指令,通常用短转移指令SJMP$($为本条指令的首地址)来实现动态停机的操作,试写出这条指令中机器码。,与“1”异或,该数值变反,编程如下:,有:Ad=LOOP,As=LOOP+2,Bn=3,JZ rel,ANL C,/X0 ;C=X0X1,否则顺序执行,相对偏移量rel的求法,A=,Cy=,OV=,AC=,P=,DA A指令只对一个字节和调整,如为多字节相加必须进行多次调整。,(1)短转移(绝对转移),addr11PC010,A=10+9+8+7+6+5+4+3+2+1=55=37H,SJMP rel ;,例:MOV C,20H;,MOVX A,DPTR,例:MOV C,20H;,例,2-29,在内部,RAM,的,40H,地址单元中,有,1,字节符号数,编写求其绝对值后放回原单元的程序。,程序如下:,MOV A,,,40H,ANL A,,,#80H,JNZ NEG,;为负数转移,SJMP$,;为正数,绝对值,=,原数,不,改变原单元内容,NEG,:,MOV A,,,40H,;为负数求补,得其绝对值,CPL A,INC A,MOV 40H,,,A,SJMP$,有符号数在计算机中以补码形式存放,例如,5,,存放在内部,RAM,中为,FBH,,求补后得,5,,即,|,5|=5,。,2.5,位操作指令,特色,,进位标志,CY,为位累加器,C,,用于开关量控制。,的,RS1,位的多种表示方式:,1,)用直接位地址表示,如,D4H,。,2,)用“,”,操作符号表示,如,或,3,)用位名称表示,如,RS1,。,4,)用用户自定义名表示。如,ABC BIT D4H,,其中,ABC,定义为,D4H,位的位名,,BIT,为位定义伪指令。,位操作类指令的对象是,C,和直接位地址,,位逻辑运算指令目的操作数只能是,C,。位操作指令共,17,条。,1,位清零,CLR C,;,0CY,CLR bit,;,0bit,2,位置,1,SETB C,;,1CY,SETB bit,;,1bit,3,位取反,CPL C,;,CY CY,CPL bit,;,bit bit,4.,位与,ANL C,,,bit,;,CY,(,bit,),CY,ANL C,,,/bit,;,CY,(/,bit,),CY,5.,位或,ORL C,,,bit,;,CY,(,bit,),CY,ORL C,,,/bit,;,CY,(/,bit,),CY,6.,位传送,MOV C,,,bit,;,(,bit,),CY,MOV bit,C,;CYbit,7.,位转移,位转移根据位的值决定转移,均为相对转移指令,设,As,为下面各指令的首地址。,JC rel,;CY=1,则转移(,As+2+relPC),否则顺序执行,JNC rel,;CY=0,则转移(,As+2+relPC),否则顺序执行,JB bit,,,rel,;(bit)=1,则转移(,As+3+relPC,),,否则顺序执行,JNB bit,rel,;(bit)=0,则转移(,As+3+relPC,),,否则顺序执行,JBC bit,rel,;(bit)=1,则转移(,As+3+relPC,),,且该位清零;,否则程序顺序执行,例,2-30,用位操作指令实现,X,X0X1,,设,X0,为,,X1,为,,X,为。,解,(1),:因位操作指令中无异或指令,依据,X,X0X1,X0X1,X0X1,用与、或指令完成,编程如下:,X BIT ACC.0,X1 BIT P1.1 ;,位定义,MOV C,,,X0,ANL C,,,/X1 ;C=X0X1,MOV 20H,,,C ;,暂存于,20H,单元,MOV C,,,X1,ANL C,,,/X0 ;C=X0X1,ORL C,,,20H,;,C,X0X1,X0X1,MOV X,,,C,SJMP$,解(,2,):根据异或规则,一个数与“,0”,异或,该数值不变;与“,1”,异或,该数值变反,编程如下:,MOV C,,,X0,JNB X1,,,NCEX ;X1=0,,,X=C=X0,CPL C,NCEX,:,MOV X,,,C ;X1=1,,,X=C=X0,SJMP$,小 结,(,1,),51,系列单片机指令系统的特点:,不同的存储空间寻址方式不同,,适用的指令不同,必须进行区分。,(,2,)指令是程序设计的基础,应重点掌握传送指令、算术运算指令、逻辑运算指令、控制转移指令和位操作指令,掌握指令的功能,操作的对象和结果,对标志位的影响,要求熟记。,展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




第二章单片机优秀文档.ppt



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/12596975.html