单片机教程3-MCS-51指令系统.ppt

上传人:本田雅阁 文档编号:2114760 上传时间:2019-02-17 格式:PPT 页数:64 大小:607.01KB
返回 下载 相关 举报
单片机教程3-MCS-51指令系统.ppt_第1页
第1页 / 共64页
单片机教程3-MCS-51指令系统.ppt_第2页
第2页 / 共64页
单片机教程3-MCS-51指令系统.ppt_第3页
第3页 / 共64页
亲,该文档总共64页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《单片机教程3-MCS-51指令系统.ppt》由会员分享,可在线阅读,更多相关《单片机教程3-MCS-51指令系统.ppt(64页珍藏版)》请在三一文库上搜索。

1、3.1 概述 7种寻址方式,111条指令 字节数 运算速度 单字节指令:49条 双字节指令:45条 三字节指令:17条 单周期指令:64条 双周期指令:45条 四周期指令: 2 条 第三章 MCS-51指令系统 DateDate 1 1 功能 数据传送类:29条 算术运算类:24条 逻辑运算类:24条 控制转移类:17条 位操作类: 17条 DateDate 2 2 常用符号 Rn:工作寄存器中的寄存器R0、R1R7之一, Ri:工作寄存器中的寄存器R0或R1 #data:8位立即数 #data16:16位立即数 direct:片内RAM或SFR的地址(8位) 间接寻址寄存器 Bit:片内RA

2、M或SFR的位地址 addr11:11位目的地址 addr16:16位目的地址 DateDate 3 3 rel: 补码形式的8位地址偏移量。 偏移范围为-128127 /:位操作指令中,该位求反后参与操作,不影响 该位 X:片内RAM的直接地址或寄存器 (X):相应地址单元中的内容 :箭头左边的内容送入箭头右边的单元内 DateDate 4 4 3.2 寻址方式 3.2.1 立即寻址 Immediate Addressing 操作数就包含在指令代码中,在操作码之后,称为 立即数,用“”表示。 MCS-51 如:MOV P1, #80H MOV R7, #0F5H MOV DPTR,#1245

3、H 操作数存在程 序存储器中 DateDate 5 5 3.2.2 直接寻址 Direct Addressing 直接使用数所在单元的地址找到了操作数,所以称 这种方法为直接寻址。 操作数在SFR、内部RAM、位地址空间。 如: MOV A,00H MOV C,60H MOV A,0F0H DateDate 6 6 3.2.3 寄存器寻址 Register Addressing 对选定的工作寄存器R0R7、累加器A、通用寄存器B 、地址寄存器DPTR中的数进行操作。 例:MOV A,R0;将R0工作寄存器中的数据送到累加器A中去 。 提一个问题:我们知道,工作寄存器就是内存单元 的一部分,如果

4、我们选择工作寄存器组0,则R0就 是RAM的00H单元,那么这样一来,MOV A,00H 和 MOV A,R0不就没什么区别了吗? DateDate 7 7 的确,这两条指令执行的结果是完全相同的, 都是将00H单元中的内容送到A中去,但是执行的过 程不同,执行第一条指令需要2个机器周期,而第二 条则只需要1个机器周期,第一条指令变成最终的目 标码要两个字节(E5H 00H),而第二条则只要一个 字节(E8H)就可以了。 DateDate 8 8 3.2.4 寄存器间接寻址 Register Indirect Addressing 把地址放在另外一个寄存器中,根据这个寄存器中的数值 决定该到哪

5、个单元中取数据。 R0,R1-8位地址,片内低128字节或片外 DPTR-16位,片外64KB v MCS-51 如: MOV A,R0 MOVX A,R0 MOVX A,DPTR 操作数在 片内RAM中 操作数在 片外RAM中 操作数在 片外RAM中 DateDate 9 9 以DPTR或PC为基址寄存器,累加器A为变址寄存器。把两 者内容相加,结果作为操作数的地址。 常用于查表操作。 v MCS-51 MOVC A, A+DPTR ;(A+DPTR) A MOVC A, A+PC; PC+1 PC,(A+PC)A 3.2.5 变址寻址(基址+变址) Base-Register-plus-I

6、ndex-Register-Indirect Addressing 操作数在程 序存储器中 DateDate1010 E0 A 程序存储区 2040H 93 20E0H 47 2041H DPH 20 DPL 00 ALU 如:MOVC A,A+DPTR 设DPTR=2000H,A=E0H 20E0H 47 指令代码 DateDate1111 3.2.6 相对寻址 将PC中的当前内容与指令第二字节给出的数相加,结 果作为跳转指令的转移地址(转移目的地址)。 PC中的当前内容称为基地址(本指令后的字节地址) 指令第二字节给出的数据称为偏移量,1字节带符号数 . 常用于跳转指令。 如: JC 23

7、H 若C=0,不跳转; C=1,跳转. Relative Addressing 改变PC DateDate1212 程序存储区 ALU 如:JC 23 1025H 1000H 40 1025H 45 1001H 23 1024H 47 1002H 30 23H1002H 指令代码 当前PC DateDate1313 对片内RAM的位寻址区和某些可位寻址的特殊功 能寄存器进行位操作时的寻址方式。 如: SETB 3DH; 将27H.5位置1 CLR C ;Cy位清0 3.2.7 位寻址 Bit Addressing 操作数在片内 RAM位地址区或 SFR某些位中 DateDate1414 寻址方

8、式涉及的存储器空间 寻址方式寻址空间(操作数存放空间) 立即寻址 程序存储器 直接寻址 片内RAM低128字节、SFR 寄存器寻址 工作寄存器R0R7,A,B,DPTR 寄存器间接寻址 片内RAM:R0,R1,SP 片外RAM:R0 ,R1,DPTR 变址寻址 程序存储器:A+PC,A+DPTR 相对寻址 程序存储器256字节范围内:PC+偏移量 位寻址 片内RAM的位寻址区(20H2FH字节地址) 某些可位寻址的SFR DateDate1515 3.3 数据传送类指令(29条) Data Transfer Instruction MCS-51 助记符: 助记符: MOV、MOVX、MOVC

9、XCH、XCHD、SWAP PUSH、POP v 源操作数寻址方式(5种): 立即寻址、直接寻址、寄存器寻址、 寄存器间接寻址、变址寻址。 v 目的操作数寻址方式(3种): 直接寻址、寄存器寻址、寄存器间接寻址 除了目的操作数为ACC的指令影响奇偶标志P外,一般不影响 标志位。 DateDate1616 3.3.1 十六位数的传递指令(1条) MOV DPTR,#data16 8051是一种8位机,这是唯一的一条16位立即数传递指 令。功能:将一个16位的立即数送入DPTR中去。其中 高8位送入DPH,低8位送入DPL。 例:MOV DPTR,#1234H 执行完了之后DPH中的值为12H,D

10、PL中的值为34H。 如果我们分别向DPH,DPL送数,则结果也一样。 如下面两条指令: MOV DPH,#35H MOV DPL,#12H。 则就相当于执行了 MOV DPTR,#3512H。 DateDate1717 3.3.2 累加器A与片外RAM之间的数据传递类指令(4条 ) MOVX A,Ri MOVX Ri,A MOVX A,DPTR MOVX DPTR,A 说明: 1.在51中,与外部存储器RAM打交道的只可以是A累加器。所有 需要送入外部RAM的数据必需要通过A送去,而所有要读入的外部 RAM中的数据也必需通过A读入。 在此我们可以看出内外部RAM的区别了,内部RAM间可以直接

11、进 行数据的传递,而外部则不行。 比如,要将外部RAM中某一单元(设为0100H单元的数据)送入 另一个单元(设为0200H单元),也必须先将0100H单元中的内容读 入A,然后再送到0200H单元中去。 DateDate1818 2.要读或写外部的RAM,当然也必须要知道RAM的地址, 在后两条指令中,地址是被直接放在DPTR中的。而前两条 指令,由于Ri(即R0或R1)只是8位的寄存器,所以只提 供低8位地址。高8位地址由P2口来提供。 3.使用时应先将要读或写的地址送入DPTR或Ri中,然后 再用读写命令。 例:将外部RAM中100H单元中的内容送入外部RAM中200H 单元中。 MOV

12、 DPTR,#0100H MOVX A,DPTR MOV DPTR,#0200H MOVX DPTR,A DateDate1919 3.3.3 读程序存储器指令(2条) MOVC A,A+DPTR MOVC A,A+PC 本组指令是将ROM中的数送入A中。本组指令也被称为查表指令 ,常用此指令来查一个已做好在ROM中的表格 说明:查找到的结果被放在A中,因此,本条指令执行前后,A 中的值不一定相同。 例:有一个数在R0中,要求用查表的方法确定它的平方值(此 数的取值范围是0-5) MOV DPTR,#100H MOV A,R0 MOVC A,A+DPTR . ORG 0100H DB 0,1,

13、4,9,16,25 如果R0中的值为2, 则最终地址为 100H+2为102H, 到102H单元中找到 的是4。 DateDate2020 3.3.4 堆栈操作(2条) PUSH direct ;SPSP+1,(SP)(direct) POP direct ; (direct) (SP), SPSP-1 第一条为压入指令,就是将direct中的内容送入堆栈中, 第二条为弹出指令,就是将堆栈中的内容送回到direct中 。例: MOV SP,#5FH MOV A,#100 MOV B,#20 PUSH ACC PUSH B 则执行第一条PUSH ACC指令是这样的:将SP中的值加1,即变 为60

14、H,然后将A中的值送到60H单元中,因此执行完本条指令后, 内存60H单元的值就是100,同样,执行PUSH B时,是将SP+1,即变 为61H,然后将B中的值送入到61H单元中,即执行完本条指令后, 61H单元中的值变为20。DateDate2121 1.给出每条指令执行后的结果 MOV 23H,#30H MOV 12H,#34H MOV R0,#23H MOV R7,12H MOV R1,#12H MOV A,R0 MOV 34H,R1 MOV 45H,34H MOV DPTR,#6712H MOV 12H,DPH MOV R0,DPL MOV A,R0 ;(23H)=30H ;(12H)

15、=34H ;R0=23H XX XX XX XX XX XX XX XX XX DPH DPL 45H 34H 23H 12H R7 R1 R0 XX XX XX XX 30 34 XX XX 23 XX XX XX XX 30 34 34 12 23 67 12 34 34 30 34 34 12 23 67 12 34 34 30 67 34 12 12 ;R7=34H ;R1=12H ;A=30H ;(34H)=34H ;(45H)=34H ;DPTR=6712H ;(12H)=67H ;R0=12H ;A=67H 内部RAM DateDate2222 3.4 算术运算类指令(24条)

16、Arithmetic Operations 主要对8位无符号数;也可用于带符号数运算。 包括:加、减、乘、除、加1、减1运算指令 影响PSW有关位。 DateDate2323 3.4.1 加法指令 ADD A,#data ; AdataA ADD A,direct ; A(direct )A ADD A,Rn ; ARnA ADD A,Ri ; A(Ri)A 用途:将A中的值与源操作数所指内容相加,最终结果 存在A中。 1.不带进位位的加法指令(4条) DateDate2424 2.带进位位的加法指令(4条) ADDC A,Rn; ARnCYA ADDC A,direct ; A(direct

17、 )CYA ADDC A,Ri; A(Ri)CYA ADDC A,#data; AdataCYA 用途:将A中的值和其后面的值以及进位位C中的值相加, 最终结果存在A,常用于多字节数运算中。 说明:由于51单片机是一种8位机,所以只能做8位的数学 运算,但8位运算的范围只有0255,这在实际工作中是不 够的,因此就要进行扩展,一般是将2个8位(两字节)的数 学运算合起来,成为一个16位的运算,这样,可以表达的 数的范围就可以达到065535。 DateDate2525 例: 先做67H+A0H=107H,而107H显然超过了0FFH ,因此最终保存在A中的是07H,而1则到了PSW中 的CY位

18、了。换言之,CY就相当于是100H。 然后再做10H + 30H + CY,结果是41H,所以 最终的结果是4107H。 1067H+30A0H 0001 0000 0110 0111 0011 0000 1010 0000 0100 0001 0000 0111 1067H 30A0H 4107H DateDate2626 设:1067H存在R1R0中, 30A0H存在R3R2中,计算 R1R0+R3R2,结果存在R5R4中。 MOV A,R0 ADD A,R2 ;R0+R2A和CY MOV R4,A MOV A,R1 ADDC A,R3 ;R1+R3+CYA和CY MOV R5,A Dat

19、eDate2727 又例: 先做67H+20H=87H,没有超过0FFH,因此最终 保存在A中的是87H,而PSW中的CY=0。 然后再做10H + 30H + CY,结果是40H,所以 最终的结果是4087H。 1067H+3020H 0001 0000 0110 0111 0011 0000 0010 0000 0100 0000 1000 0111 1067H 3020H 4087H DateDate2828 DA A 在进行BCD码加法运算时,跟在ADD和ADDC指令 之后,用于对累加器A中刚进行的两个BCD码的加法 的结果进行十进制调整。 例:A=0001 0101BCD(代表十进制

20、数15) ADD A,#8 3. 十进制调整指令(1条) ; A=1DH,按二进制规律加 ; A=23H,按十进制规律加DA A DateDate2929 调整要完成的任务是: (1)当累加器A中的低4位数出现了非 BCD码(10101111)或低4位产生进 位(AC=1),则应在低4位加6调整,以 产生低4位正确的BCD结果。 (2)当累加器A中的高4位数出现了非BCD 码(10101111)或高4位产生进位( CY=1),则应在高4位加6调整,以产生高 4位正确的BCD结果。 十进制调整指令执行后,PSW中的CY表 示结果的百位值。 DateDate3030 例 若(A)0101 0110

21、B,表示的BCD码为56 ,(R3)0110 0111B,表示的BCD码为67,(CY )0。执行以下指令: ADD A,R2 DA A 由于(A)0010 0011B,即,且(CY)1,即 结果为BCD数123。 应该注意,DA指令不能对减法进行十进制调整。 DateDate3131 3.4.2 减法指令(8条) SUBB A,Rn ; ARnCYA SUBB A,direct ; A(direct )CYA SUBB A,Ri ; A(Ri)CYA SUBB A,#data; AdataCYA 将A中的值减去源操作数所指内容以及进位位C中的 值,最终结果存在A中。 如: SUBB A,R2

22、 设: A=C9H,R2=55H,CY=1, 执行指令之后,A中的值为73H。 1. 带借位的减法指令(4条) DateDate3232 说明:没有不带借位的减法指令,如果需要做 不带位的减法指令(在做第一次相减时),只要将 CY清零即可。 对带符号数,要注意OV标志。OV=1,出错。 DateDate3333 3.5 逻辑运算类指令(24条) 主要用于对2个操作数按位进行逻辑操作,结果送到 A或直接寻址单元。 v 主要操作 与、或、异或、移位、取反、清零等。 v 对标志位的影响 除了目的操作数为ACC的指令影响奇偶标志P外 ,一般不影响标志位。 Logic Operations DateDa

23、te3434 3.5.1 逻辑或指令(6条) ORL A,Rn ;ARnA ORL A,direct ;A(direct)A ORL A,Ri ;A(Ri)A ORL A,#data;AdataA ORL direct,A;(direct)A(direct) ORL direct,#data ;(direct)data(direct) 影响P标志 例:71H和56H相或: 01110001 (71H) ) 01010110 (56H) 01110111 即77H 后两条指令,若直接地址为I/O端口,则为“读改 写”操作。 OR Logic Instruction DateDate3535 3.

24、5.2 逻辑与指令 (6条) ANL A,Rn ;ARnA ANL A,direct ;A(direct)A ANL A,Ri ;A(Ri)A ANL A,#data ;AdataA ANL direct,A ;(direct)A(direct) ANL direct,#data ;(direct)data(direct) 影响P标志 例:71H和56H相与: 01110001 (71H) )01010110 (56H) 01010000 即50H 后两条指令,若直接地址为I/O端口,则为“读改 写”操作。 ANd Logic Instruction DateDate3636 例:71H和56

25、H相异或: 01110001 (71H) ) 01010110 (56H) 3.5.2 逻辑异或指令(6条) XRL A,Rn ;A RnA XRL A,direct ;A (direct)A XRL A,Ri ;A (Ri)A XRL A,#data ;A dataA XRL direct,A ;(direct) A(direct) XRL direct,#data ;(direct) data(direct) 影响P标志 00100111 即27H 后两条指令,若直接地址为I/O端口,则为“读改 写”操作。 eXclusive-oR Logic Instruction DateDate37

26、37 3.5.3 清0与取反指令(2条) 取反:CPL A ;/AA 例:若A=5CH,执行CPL A 结果:A=A3H 清0:CLR A ;0A ComPlement Logic Operation DateDate3838 3.5.4 循环移位指令(4条) RL A RR A RLC A RRC A A.7 A.0 A.7 A.0 A.7 A.0CY CYA.7 A.0 后两条指令,影响P标志和CY。 Rotate Logic instruction DateDate3939 例: 若A=5CH,CY=1,执行RLC A后, v 对RLC、RRC指令,在CY=0时 RLC相当于乘以2 RR

27、C相当于除以2 结果:A=B9H,CY=0,P=1 0101 110011011 10010 DateDate4040 3.6 控制转移类指令( 17条) Branching Instruction 共有控制程序转移类指令(不包括位操作类的转移 指令)。此类指令一般不影响PSW。 包括以下类型: 无条件转移和条件转移 相对转移和绝对转移 长转移和短转移 调用与返回指令 DateDate4141 3.6.1 无条件转移类指令(4条) 短转移类指令:AJMP addr11 长转移类指令:LJMP addr16 相对转移指令:SJMP rel 间接转移指令:JMP A+DPTR (1)上面的前三条指

28、令,统统理解成:PC值改变,即 跳转到一个标号处。 那么他们的区别何在呢? DateDate4242 v跳转的范围不同。 短转移类指令:AJMP addr11 长转移类指令:LJMP addr16 相对转移指令:SJMP rel 转移范围: 2KB 64KB -128+127 v指令构成不同。 AJMP、LJMP后跟的是绝对地址, 而SJMP后跟的是相对地址。 v指令长度不同 v 原则上,所有用SJMP或AJMP的地方都可以用 LJMP来替代。 DateDate4343 间接转移指令:JMP A+DPTR 这条指令的用途也是跳转,转到什么地方去呢 ?这可不能由标号简单地决定了。 转移地址由A+

29、DPTR形成,并直接送入PC。 指令对A、DPTR和标志位均无影响。 本指令可代替众多的判别跳转指令,又称为散 转指令,多用于多分支程序结构中。 (2)第四条指令与前三条指令相比有所不同 DateDate4444 例: MOV DPTR,#TAB ;将TAB代表的地址送入DPTR JMP A+DPTR ;跳转 TAB: AJMP ROUT0 ;跳转ROUT0开始的程序段 TAB+2: AJMP ROUT1 ;跳转ROUT1开始的程序段 TAB+4: AJMP ROUT2 ;跳转ROUT2开始的程序段 TAB+6: AJMP ROUT3 ;跳转ROUT3开始的程序段 . ROUT0: . ROU

30、T1: . ROUT2: . ROUT3: 执行该段程序后,程序将根 据A中的内容转移到不同的 程序段去执行-散转。 A=0,转ROUT0 A=2,转ROUT1 A=4,转ROUT2 A=6,转ROUT3 DateDate4545 3.6.2 条件转移指令(8条) 条件转移指令是指在满足一定条件时进行相对转 移,否则程序继续执行本指令的下一条指令。 一、判A内容是否为0转移指令(2条) JZ rel ;如果A=0,则转移,否则顺序执行。 JNZ rel ;如果A0,就转移。 转移到相对于当前PC值的8位移量的地址去。即: 新的PC值=当前PC+偏移量rel 我们在编写汇编语言源程序时,可以直接

31、写成: JZ 标号 ;即转移到标号处。 DateDate4646 例: MOV A,R0 JZ L1 MOV R1,#00H AJMP L2 L1: MOV R1,#0FFH L2: SJMP L2 END 在执行上面这段程序前:如果R0=0,结果R1=0FFH。 而如果R00,则结果是R1=00H。 把上面的那个例子中的JZ改成JNZ,看看程序执行的 结果是什么? 如果R0=0,结果R1=00H。如果R0 0,结果是R1中的 值为0FFH。 DateDate4747 二、比较不等转移指令(4条) CJNE A,#data,rel CJNE A,direct,rel CJNE Rn,#data

32、,rel CJNE Ri,#data,rel 此类指令的功能是将两个操作数比较,如果两者相等,就 顺序执行,如果不相等,就转移。 同样地,使用时,我们可以将rel理解成标号,即: CJNE A,#data,标号 CJNE A,direct,标号 CJNE Rn,#data,标号 CJNE Ri,#data,标号 DateDate4848 利用这些指令,可以判断两数是否相等。 但有时还想得知两数比较之后哪个大,哪个小 ,本条指令也具有这样的功能: 如果两数不相等,则CPU还会用CY(进位位) 来反映哪个数大,哪个数小。 如果前面的数大,则CY=0,否则CY=1。 因此在程序转移后再次利用CY就可

33、判断出哪个 数大,哪个数小了。 DateDate4949 举例: MOV A,R0 CJNE A,#10H,L1 MOV R1,#0 ;如R0=10H,则不转移R1=00H; AJMP L3 L1:JC L2 ;如CY=1即 R010H,则转移 AJMP L3 L2:MOV R1,#0FFH L3:SJMP L3 因此最终结果是:本程序执行前, 如果R0=10H,则R1=00H; 如果R010H,则R1=0AAH; 如果R010H,则R1=0FFH。 DateDate5050 三、减1不为0转移指令(2条) DJNZ Rn,rel DJNZ direct,rel DJNZ指令的执行过程是这样的

34、: 它将第一个参数中的值减1,然后看这个值是否等于 0,如果等于0,就往下执行,如果不等于0,就转移 到第二个参数所指定的地方去。 例: DJNZ 10H,LOOP . LOOP: . DateDate5151 例: MOV 23H,#0AH CLR A LOOP: ADD A,23H DJNZ 23H,LOOP SJMP $ 上述程序段的执行过程是: 将23H单元中的数连续相加,存至A中,每加一次, 23H单元中的数值减1,直至减到0,共加(23H)次 。 DateDate5252 3.6.3 调用与返回指令(4条) 一、调用指令(2条) LCALL addr16 ;长调用指令(3字节) A

35、CALL addr11 ;短调用指令(2字节) 上面两条指令都是在主程序中调用子程序,两者的区别: 对短调用指令,被调用子程序入口地址必须与调用指令的 下一条指令的第一字节在相同的2KB存储区之内。 使用时可以用: LCALL 标号 ;标号表示子程序首地址 ACALL 标号 来调用子程序。 DateDate5353 指令的执行过程是:当前PC压栈,子程 序首地址送 PC,实现转移。 二、返回指令 (2条) 子程序执行完后必须回到主程序,如何返 回呢?只要执行一条返回指令就可以了。 RET;子程序返回指令 RETI;中断子程序返回指令 两者不能互换使用。 DateDate5454 3.6.4 空

36、操作指令(1条) NOP 空操作,就是什么事也不干,停一个周期,一般用 作短时间的延时。 RET指令的执行过程是:堆栈栈顶内容(2字 节,调用时保存的当前PC值)弹出给PC,实 现返回。 RETI指令除了具有RET指令的功能实现程序 返回外,还有对中断优先级状态触发器的清 零。 DateDate5555 3.7 位操作指令( 17条) Boolean Operations MCS-51单片机的硬件结构中,有一个位处理器( 又称布尔处理器),它有一套位变量处理的指令集, 包括位变量传送、逻辑运算、控制程序转移等。 在MCS-51 中,有一部份RAM和一部份SFR是具有位 寻址功能的。 v 位操作

37、区:内部RAM的20H-2FH这16个字节单 元,即128个位单元(位地址空间位007FH) ; v 可以位寻址的特殊功能寄存器:8031中有一 DateDate5656 些SFR是可以进行位寻址的,这些SFR的特点是 其字节地址均可被8整除, 如A累加器,B寄存 器、PSW、IP(中断优先级控制寄存器)、 IE (中断允许控制寄存器)、SCON(串行口控制 寄存器)、TCON(定时器/计数器控制寄存器 )、P0-P3(I/O端口锁存器)。 在进行位处理时, CY用作“位累加器” 。 DateDate5757 以PSW中位4( RS1 )为例。 直接(位)地址方式:如 D4H; 点操作符号方式

38、:如 PSW.4,D0H.4; 位名称方式:如 RS1; 用户定义名方式:如用伪指令 bit SUB.REG bit RS1 定义后,可用SUB.REG代替RS1。 位地址表达方式 DateDate5858 3.7.1 位传送指令(2条) MOV C,bit;bit C MOV bit,C;C bit 这组指令的功能是实现位累加器(CY)和其它 位地址之间的数据传递。 例:MOV C,P1.0;将P1.0的状态送给C。 MOV P1.0,C ;将C中的状态送到P1.0 ;引脚上去。 DateDate5959 3.7.2 位清0和置位(4条) 位清0指令 CLR C ;使CY=0 CLR bit

39、 ;使指令的位地址等于0。 例:CLR P1.0 ;即使P1.0变为0 位置1指令 SETB C ;使CY=1 SETB bit ;使指定的位地址等于1。 例:SETB P1.0 ;使P.0变为1 DateDate6060 3.7.3 位逻辑运算指令 (6条) 位与指令 ANL C,bit ;Cy与指定位的值相与,结果送Cy ANL C,/bit ;先将指定的位地址中的值取出后 取反,再和Cy相与,结果送回Cy。但注意:指定的 位地址中的值本身并不发生变化。 例:ANL C,/P1.0 DateDate6161 位取反指令 CPL C ;使Cy值取反。 CPL bit ;使指定的位的值取反。

40、例:CPL P1.0 位或指令 ORL C,bit ORL C,/bit DateDate6262 3.7.4 位条件转移指令(5条) 判Cy转移指令 JC rel JNC rel 第一条指令的功能是如果Cy=1就转移,否则 就顺序执行。 第二条指令则和第一条指令相反,即如果 Cy=0就转移,否则就顺序执行。 同样理解: JNC 标号 DateDate6363 判位变量转移指令 JB bit,rel JNB bit,rel JBC bit,rel 第一条指令:如果指定的(bit)=1,则转移,否 则顺序执行,第二条指令功能相反。 同样理解:JB bit,标号 第三条指令是如果指定的(bit)=1,则转移, 并把该位清0,否则顺序执行。 DateDate6464

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1