单片机原理与应用第3章.ppt_第1页
单片机原理与应用第3章.ppt_第2页
单片机原理与应用第3章.ppt_第3页
单片机原理与应用第3章.ppt_第4页
单片机原理与应用第3章.ppt_第5页
已阅读5页,还剩82页未读 继续免费阅读

下载本文档

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

文档简介

主讲:潘静,第3章 单片机汇编程序设计,3.1 单片机指令系统概述 3.2 80C51 单片机指令寻址方式 3.3 80C51 单片机指令分类介绍 3.4 汇编程序常用伪指令 3.5 单片机汇编程序设计,3.1 单片机指令系统概述,指令: 规定计算机基本操作的语句或命令。指 令通常有两个组成部分:操作码和操作 数。 指令系统:一个单片机所能执行的指令集合即 为它的指令系统。,4,1. 虽然各类单片机包括微机指令不大一样,没有可移植 性,但基本类型是一样的。只是具体操作和表达方式略 有差异,所以掌握一种汇编语言,其他就好学了。 2. 先通读指令,了解有哪些类型、基本操作情况、使用场 合。个人可做些归纳和总结。 3. 阅读书中或别人的有关程序,其中的应用技巧,必要时 再回来查有关内容。 4. 自己编写程序,上机实验,体会指令的作用和编程技巧。 5. 参与实际项目,在实战过程中使用和提高。,掌握熟悉指令的一些方法,80C51指令中使用的符号的意义作简要说明:,Rn: 表示当前工作寄存器R0R7中的任一寄存器 n=07。 Ri: 可用作间接寻址的寄存器,只能是R0, R1 两个 寄存器,i=0,1。 direct: 8位直接地址,在指令中表示直接寻址方 式,寻址范围256个单元。 #data: 8位立即数。 #data16:16位立即数。,addr16:表示16位目的地址,主要用于LCALL和 LJMP指令中。 addr11:表示11位目的地址,主要用于ACALL和 AJMP指令中。 rel: 相对转移指令中的偏移量,为8位带符号补码。 DPTR: 数据指针。 bit: 内部RAM(包括专用寄存器)中的直接寻址位。 A: 累加器。 ACC: 直接寻址方式的累加器。,B:寄存器B。 C :进位标志位,也称为累加位。 / :加在位地址的前面,表示对该位状态取反。 :间接寻址寄存器的前缀标志。 (X):某寄存器或某单元中的内容。 (X):由“X”间接寻址单元中的内容。 :箭头左边的内容被箭头右边的内容所取代。,所谓寻址方式, 就是寻找操作数地址的方式, 在用汇编语言编程时, 数据的存放、传送、 运算都要通过指令来完成。 编程者必须自始至终都要十分清楚操作数的位置, 以及如何将它们传送到适当的寄存器去参与运算。每一种计算机都具有多种寻址方式。寻址方式的多少是反映指令系统优劣的主要指标之一。,3.2 80C51 单片机指令寻址方式,在 MCS -51单片机指令系统中, 有以下7种寻址方式: (1) 立即寻址; (2) 直接寻址; (3) 寄存器寻址; (4) 寄存器间接寻址; (5) 变址寻址; (6)位寻址; (7) 指令寻址 绝对寻址 相对寻址,1. 直接寻址方式,定义:指令中操作数直接以存储单元地址的形式 给出。 例如:MOV A , 3AH 特点:指令中含有操作数的地址。该地址指出了 参与操作的数据所在的字节单元地址或位 地址。计算机执行它们时便可根据直接地 址找到所需要的操作数。 寻址范围:片内RAM(低128字节)、专用寄存器。,2. 立即寻址方式,定义:将立即参与操作的数据直接写在指令中,这种寻 址方式称为立即寻址。 例如 MOV A , #3AH MOV DPTR, #data16 特点:指令中直接含有所需的操作数。该操作数可以是 8位的,也可以是16位的,常常处在指令的第二 字节和第三字节的位置上。立即数通常使用 #data或#data16表示,在立即数前面加“#”标志, 用以和直接寻址中的直接地址(direct或bit)相区别。,定义:操作数在寄存器中,只要指定了寄存器就能得到 操作数。 例如: MOV A,R0 特点:由指令指出某一个寄存器的内容作为操作数。存 放操作数的寄存器在指令代码中不占据单独的一 个字节,而是嵌入(隐含)到操作码字节中。 寻址范围:四组通用寄存器Rn(R0R7)、部分专用寄 存器( A, B, DPTR, CY)。,3. 寄存器寻址方式,4. 寄存器间接寻址方式,定义:指令给出的寄存器中存放的是操作数据的单元地址, 这种寻址方式称为寄存器间接寻址。 例如: MOV A, R0 特点:指令给出的寄存器中存放的是操作数地址。寄存器间 接寻址是一种二次寻找操作数地址的寻址方式,寄存 器前边必须加前缀符号“”。不能用于寻址特殊功能 寄存器SFR。,寻址范围: 1、对于内部RAM低128单元访问(只能使用R0或R1作间 址寄存器) 2、对于外部RAM访问(使用DPTR作间址寄存器)。 3、对于外部低256单元RAM的访问,除可以使用DPTR外, 还可以使用R0或R1作间址寄存器(先确定高8位地址给 P2)。,4. 寄存器间接寻址方式,为区分以上四种寻址方式,现在列出四种语句,1 . MOV A, #30H ;A30H ;最后A中的数据为 30H 如果30H单元存入的数据为 0FFH 2 . MOV A, 30H ;A(30H) ;最后A中的数据为 0FFH 3 . MOV R1, #30H ;R130H MOV A, R1 ;A(R1) ;A30H ;最后A中的数据为 30H 4 . MOV R1, #30H ;R130H MOV A, R1 ;A(R1) ;A(30H) ;最后A中的数据为 0FFH,5. 变址寻址方式,定义:操作数存放在变址寄存器(累加器A)和基址寄存 器(DPTR或PC)相加形成的16位地址单元中。这 种寻址方式称为基址加变址寄存器间接寻址,简称 为变址寻址。 例如:MOVC A, A+DPTR ;A(A)+(DPTR) MOVC A, A+PC ; A(A)+(PC) JMP A+DPTR ; PC(A)+(DPTR),特点:指令操作码中隐含作为基址寄存器用的DPTR(或 PC )和作为变址用的累加器A。在执行变址寻址指 令时,80C51单片机先把基地址( DPTR或PC 的内 容)和地址偏移量(A的内容)相加,以形成操作数 地址,再由操作数地址找到操作数,并完成相应的 操作。变址寻址方式是单字节指令。 寻址范围:只能对程序存储器ROM进行寻址,主要用于查 表性质的访问。,5. 变址寻址方式,6. 位寻址方式,定义:指令中给出的操作数是一个可单独寻址的位地址,这 种寻址方式称为位寻址方式。 例如: MOV C,3AH 特点:是对8位二进制数中的某一位的地址进行操作。 寻址范围: 位寻址区 20H2FH共16个单元里128位地址(00H7FH) 21个特殊功能寄存器中的11个可位寻址的寄存器里共82位,寻址形式: (1) 用直接位地址: MOV C, 0D4H (2) 用单元地址加位序 MOV C, 0D0H.4 ;D0H+4H=D4H (3) 用位名称: SET RS1 (4) 用寄存器名加位序: MOV C, PSW.4 ;,6. 位寻址方式,1)绝对寻址,7. 指令寻址,绝对寻址是在指令的操作数中直接提供目的位置的地址或地址的一部份。 在MCS-51系统中: 长转移和长调用提供目的位置的16位地址, 绝对转移和绝对调用提供目的位置的16位地 址的低11位,它们都为绝对寻址。,2) 相对寻址方式,定义:将程序计数器PC的当前值(取出本条指令后的PC 值)与指令第二个字节给出的偏移量(rel)相加, 形成新的转移目标地址。称为相对寻址方式。 例如: SJMP rel ; PC(PC) + 2 + rel 特点:相对寻址方式是为实现程序的相对转移而设计的, 为相对转移指令所使用,其指令码中含有相对地址 偏移量,能生成浮动代码。 目的地址=指令地址(PC)指令字节数偏移量(rel),寻址范围:只能对程序存储器ROM进行寻址。相对地址 偏移量(rel )是一个带符号的8位二进制补 码,其取值范围为128127(以PC为中 间的256个字节范围)。,总结: 7 种寻址方式及使用空间,3.3 80C51 单片机指令分类(共有111条),按指令的功能, 80C 51 指令系统可分为下列 5 类: 数据传送类(29条) 算术运算类(24条) 逻辑运算及移位类(24条) 位操作类(17条) 控制转移类(17条),1. 单字节指令 单字节指令格式由8位二进制编码表示, 例如: CLR AE4H 2. 双字节指令 双字节指令格式由两个字节组成, 操作码和操作数, 例如: MOV A, 10H74H 10H 3. 三字节指令 三字节指令格式中, 第一个字节为操作码, 后两个字节为 操作数, 例如: MOV 40H, 30H75H 40H 30H,一条汇编语言指令中最多包含 4 个区段, 如下所示: 标号: 操作码 操作数 ;注释 4 个区段之间要用分隔符分开,标号与操作码之间用“:”隔开, 操作码与操作数之间用空格隔开, 操作数与注释之间用“;”隔开, 如果操作数有两个以上, 则在操作数之间要用逗号“,”隔开 (乘法指令和除法指令除外 )。,3.3.1 数据传送类指令(29条),MCS -51传送指令示意图,数据传送指令以助记符MOV为基础。 分成: 片内数据存储器传送指令 片外数据存储器传送指令 程序存储器传送指令,1. 内部RAM数据传送指令组,指令格式:MOV 目的操作数,源操作数 其中:源操作数可以为: A、Rn、Ri、direct、#data, 目的操作数可以为: A、Rn、Ri、direct, 组合起来总共16条,按目的操作数的寻址方式划分为五组:,(1)以A为目的操作数 MOV A,Rn ;A( Rn) MOV A,direct ;A(direct) MOV A,Ri ;A(Ri) MOV A,#data ;A #data (2)以Rn为目的操作数 MOV Rn,A ;Rn (A) MOV Rn,direct ;Rn (direct) MOV Rn,#data ;Rn #data,(3)以直接地址direct为目的操作数 MOV direct,A ;direct (A) MOV direct,Rn ;direct (Rn) MOV direct,direct ;direct(direct) MOV direct,Ri ;direct (Ri) MOV direct,#data ;direct #data,(4)以间接地址Ri为目的操作数 MOV Ri,A ;(Ri) (A) MOV Ri,direct ;(Ri) (direct) MOV Ri,#data ;(Ri) #data (5)以DPTR为目的操作数 MOV DPTR,#data16 ;DPTR #data16,注意: 源操作数和目的操作数中的Rn和Ri不能相互配对。 如不允许有 “MOV Rn,Rn”, “MOV Ri,Rn”这样的指令。 即:在MOV指令中,不允许在一条指令中同时出现工 作寄存器,无论它是寄存器寻址还是寄存器间接 寻址。,例3-1 设内部RAM中30H的内容为40H,40H单元的内容 为10H,P1口作为输入口,其输入数据为0CAH, 分析下面程序段的执行结果。,MOV R0, #30H ;单元地址以立即数形式送入R0 MOV A, R0 ;以R0间接寻址将30H单元内容送A,所送内容为40H,MOV R1, A ;A的内容送R1 MOV B, R1 ;以R1间接寻址将40H单元内容送B,所送内容为10H,MOV R1, P1 ;将P1内容送入R1 MOV P2, R1 ;将R1内容送入P2,所送内容为0CAH,执行结果:(R0)=30H, (R1)=0CAH, (A)=40H, (B)=10H, (P1)=0CAH, (40H)=10H, (P2)=0CAH,例3-2 将片内RAM中的16H的内容0B9H送P1口。,解法1:MOV P1, 16H,解法2:MOV A, 16H MOV P1, A,解法3:MOV R0, #16H MOV P1, R0,解法4:SETB RS1 CLR RS0 MOV P1, R6,通用寄存器3区R6的地址为16H,2. 外部数据存储器读/写指令,(1)DPTR作间址寄存器的外部RAM单元读/写指令 MOVX A, DPTR ( DPTR间接寻址的外部RAM单元读) MOVX DPTR , A ( DPTR间接寻址的外部RAM单元写) (2)Ri作间址寄存器的外部RAM单元读/写指令 MOVX A, Ri ( Ri间接寻址的外部RAM单元读) MOVX Ri , A ( Ri间接寻址的外部RAM单元写),注:P2内存有高8位地址,Ri内的地址不能超过0FFH(255D),例3-3 已知片外RAM中的70H的一个数X,送到片外RAM 的1010H单元,编写程序。,解:程序如下: ORG 1000H ;指定程序地址 MOV P2, #00H ;高8位地址为00H MOV R0, #70H ;低8位地址为70H MOVX A, R0 ;取数据X到A MOV DPTR, #1010H ;设片外目的地址 MOVX DPTR, A ;将数据X送目的地址 SJMP $ ;程序执行到此停止 END ;程序语句结束标志,MOVC A, A+PC (程序存储器读) MOVC A, A+DPTR(程序存储器读) 第一条指令是以PC作为基址寄存器, 缺点是表格只能放在该条查表指令后面的 256 个单元之中, 表格的大小受到限制, 而且表格只能被一段程序所利用。,3. 程序存储器读指令组,第二条指令是以DPTR作为基址寄存器, 表格的大小和位置可以在 64 KB程序存储器中任意安排, 并且一个表格可以为各个程序块所共用。,例3-4 已知片内20H 单元中有一个09范围内的数,用以上查 表指令获得该数的平方值,并将其送至21H单元。设 平方表头地址为2000H,(20H)=02H。编写程序。,解:采用PC作为基址寄存器,程序如下: ORG 1FF7H 1FF7H MOV A, 20H ;A(20H), (A)=02H 1FF9H ADD A, #data ;加修正量 1FFBH MOVC A, A+PC ;查表 1FFCH MOV 21H, A ;21H(A) 1FFEH SJMP $ ;停止执行 2000H DB 0 2001H DB 1 2002H DB 4 : 2009H DB 81 END,采用DPTR作为基址寄存器,程序如下: ORG 1000H MOV A, 20H ;A(20H), (A)=02H MOV DPTR, #2000H ;地址指针定在2000H MOVC A, A+DPTR ;查表 MOV 21H, A ;21H(A) SJMP $ ;停止执行 ORG 2000H ;平方表从2000H开始 DB 0 DB 1 DB 4 : DB 81 END,4. 堆栈操作指令组,PUSH direct(进栈) POP direct(出栈),例3-5 (40H)=01H,(30H)02H,分析下列程序执行 后的结果。,堆栈区是片内RAM的一个数据区,进出栈是“后进先出” MOV SP, 50H ;设栈顶 PUSH 40H ;51H (40H) PUSH 30H ;52H (30H) POP 40H ;40H (52H) POP 30H ;30H (51H),执行结果: (SP)=50H,(40H)=02H,(30H)=01H,正确指令 错误指令 PUSH ACC PUSH A POP ACC POP A PUSH 00H PUSH R0 POP 00H POP R0,(1)整字节交换指令 XCH A,Rn (寄存器寻址字节交换) XCH A, direct(直接寻址字节交换) XCH A, Ri ( Ri间接寻址字节交换),5. 数据交换指令组,例3-6 已知外部RAM 2020H单元中有一个数X,内部RAM 20H单元中有一个数Y,编写使它们互换的程序。,解:程序如下: MOV P2, #20H ;设外部RAM高8位地址 MOV R1, #20H ;设RAM低8位地址 MOVX A, R1 ;取外部RAM2020H中数X到A XCH A, R1 ;内部RAM 20H中数Y和A中数X交换 MOVX R1, A ;交换后将Y送到外部RAM,(2)低半字节交换指令 XCHD A, Ri (A和 Ri间接寻址低4位交换,高4位不变) (3)累加器高4位、低4位交换指令 SWAP A (累加器内容高低半字节交换),例3-7 已知片内50H 单元中有一个09的数,编写使它们变为 相应的ASCII码的程序。,解:09的ASCII码为30H39H。程序如下: MOV R0, #50H MOV A, #30H XCHD A, R0 MOV R0, A 与下面程序相当: MOV R0, #50H MOV A, #30H ADD A, R0 MOV R0, A,数据传送指令使用方法和技巧,例3-8 将01H 单元内容送02H单元,有几种方法可以实现。,解: (1) MOV 02H, 01H ;直接寻址 3字节2周期 (2) MOV A, 01H ; 4字节2周期 MOV 02H, A (3) MOV A, R1 ;寄存器寻址 2字节2周期 MOV R2, A (4) MOV R0, #01H ;间接寻址 4字节3周期 MOV 02H, R0 (5) PUSH 01H ;栈操作 4字节4周期 POP 02H,数据传送指令使用方法和技巧,例3-9 将片内40H 单元内容送至片外50H单元,将片外2350H 单元内容送片内40H单元。,解: MOV P2, #00H ;设置外存地址高字节 MOV R0, #50H ;设置外存地址低字节 MOV A, 40H ;通过累加器读写外存储器 MOVX R0, A ;存入外存储器 MOV P2, #23H ;设置外存地址高字节 MOVX A, R0 ; 外存地址低字节仍是50H MOV 40H, A ; 外存2350H单元内容 送内存40H单元 R0内的地址50H既是内部单元地址,又是外部RAM低8位,3.3.2 算术运算类指令(24条),影响标志位的指令,1. 加法指令组 ADD A,#data (立即数加法) ADD A, direct(直接寻址加法) ADD A, Ri ( 间接寻址加法) ADD A, Rn (寄存器寻址加法),例3-10 分析 执行如下指令后累加器A和PSW中各标志位的 变化。 MOV A, #9EH ;9EH=158 ADD A, #71H ;71H=113 解: 9EH (A) = 1 0 0 1 1 1 1 0 +) 71 H data = 0 1 1 1 0 0 0 1 10FH 1 0 0 0 0 1 1 1 1 CY AC,2. 带进位加法指令组 ADDC A,#data (立即数带进位加法) ADDC A, direct(直接寻址带进位加法) ADDC A, Ri ( 间接寻址带进位加法) ADDC A, Rn (寄存器寻址带进位加法),例3-11 设(A)=0AAH,(R0)=55H,CY=1,执行如下指令 ADDC A, R0 后, 求A、CY、AC、OV、P、PSW之值。 解: 0AAH (A) = 1 0 1 0 1 0 1 0 05 5H data = 0 1 0 1 0 1 0 1 +) 1 (CY) 1 10 0 H 1 0 0 0 0 0 0 0 0 最后得 (A)=00H,(CY)=1,(AC)=1,(OV)=0,(P)=0, (PSW)=11000000B=0C0H,3. 加1指令组 INC A (累加器加1) INC direct (直接寻址单元加1) INC Ri ( 间接寻址单元加1) INC Rn (寄存器寻址单元加1) INC DPTR(16位数据指针加1),若A0FFH,执行INC A 不同于执行ADD A, #1。 执行INC A后, (A)=00H,不改变CY 执行ADD A, #1后,( A)=00H,(CY)=1,4. 带借位减法指令组 SUBB A,#data(立即数带借位减法) SUBB A, direct(直接寻址带借位减法) SUBB A, Ri ( 间接寻址带借位减法) SUBB A, Rn(寄存器寻址带借位减法) 没有不带借位的减法指令,例3-12 设(A)=0A9H,(R0)=20H,(20H)=98H ,执行如下程 序,说明结果。 CLR C ; CY清0 SUBB A, R0 解: 0A9H (A) = 1 0 1 0 1 0 0 1 98H (20H) = 1 0 0 1 1 0 0 0 ) (CY) 0 11H 0 0 0 1 0 0 0 1 按无符号数运算0A9H98H=11H,(PSW)=00H 按带符号数运算10101001为1010111 (57H)的补码, 10011000为1101000(68H)的补码。 (57H) (68H)=11H,无借位,无溢出,例3-13 设(A)=76H,立即数为0C5H,(CY)=0 ,执行如下程 序,说明结果。 SUBB A, #0C5H 解:竖式 76H (A) = 0 1 1 1 0 1 1 0 0C5H data= 1 1 0 0 0 1 0 1 ) (CY) 0B1H (CY) 1 0 1 1 0 0 0 1 异符号数相减运算相当于得数超过范围, 产生溢出,(OV)=1,结果是错的。 76H(3BH)= 0B1H 超范围 0B1H7FH 177(+127),5. 减1指令组 DEC A (累加器减1) DEC direct (直接寻址单元减1) DEC Ri ( 间接寻址单元减1) DEC Rn (寄存器减1),例3-14 分析执行以下程序结果 ,程序如下: MOV R1, #7FH MOV 7EH, #00H MOV 7FH, #40H DEC R1 ;间址R1 指向7FH单元减1,40H减1 DEC R1 ; 7FH减1, (R1)=7EH DEC R1 ;间址R1 指向7EH单元减1,00H减1,解:结果 (7FH)=3FH, (R1)=7EH, (7EH)=0FFH,6. 乘除法指令组 (1)乘法指令 乘法指令完成单字节的乘法, 只有一条指令: MUL AB 这条指令的功能是: 将累加器A的内容与寄存器B的内容相乘, 乘积的低 8 位存放在累加器A中, 高 8 位存放于寄存器B中。如果乘积超过0FFH, 则溢出标志OV置“1”, 否则清“0”。 进位标志CY总是被清“0”。,例3-15 (A)=90H(144D),(B)=62H(98D),分析执行以下程 序结果 ,程序如下: MUL AB,解:结果 为 乘积 3720H(14112D), (A)=20H, (B)=37H (OV)=1(B不为0),(CY)=0(总是0), ( P)=1(A内为奇数个1),(2)除法指令 除法指令完成单字节的除法, 只有一条指令: DIV AB 这条指令的功能是: 将累加器 A中的内容除以寄存器 B中的8位无符号整数, 所得商的整数部分存放在累加器A中, 余数部分存放在寄存器 B中。若原来 B中的内容为 0, 则执行该指令后,A与B中的内容不定, 并将溢出标志OV置“1”, 在任何情况下, 进位标志CY总是被清“0”。,例3-16 设 (A)=65H(101D),(B)=14H(20D),分析执行以下 程序结果 ,程序如下: DIV AB,解:结果 为 乘积 (A)=05H (商), (B)=01H(余数) (OV)=0(除数为0则=1) ,(CY)=0(总是0), (P)=0 (A内为2个1),7. 十进制调整指令 DA A 若AC=1,即ACC.3在操作过程中有进位, 或者A中低4位9, 则A中低4位+06H; 若CY=1,即ACC.7在操作过程中有进位, 或者A中高4位9, 则A中高4位+60H。 这条指令对累加器A参与的BCD码加法运算所获得的 8 位结果进行十进制调整, 使累加器A中的内容调整为二位压缩型 BCD码的数。使用时必须注意, 它只能跟在加法指令之后, 不能对减法指令的结果进行调整, 且其结果不影响溢出标志位。,例3-17 编写78+93的BCD加法 程序,并分析调整过程。 解:ORG 3000H MOV A, #78H ADD A, #93H DA A SJMP $ END 结果得(A)=71, (CY)=1, (OV)=0,78H (A) = 0 1 1 1 1 0 0 0 +) 93H data= 1 0 0 1 0 0 1 1 171H 1 0 0 0 0 1 0 1 1 +) 0 1 1 0 1 0 0 0 1 0 0 0 1 +) 0 1 1 0 0 0 0 0 1 0 1 1 1 0 0 0 1 最后得数应为171H,3.3.3 逻辑运算及移位类指令(24条),1. 逻辑 “与”(“或” 、“异或”) 运算指令组 两个操作数都是8位,各个对应位进行运算。 ANL(ORL、XRL) A, Rn (寄存器与累加器逻辑 ) ANL(ORL、XRL) A, Ri ( 间接寻址单元与累加器) ANL(ORL、XRL) A,direct (直接寻址单元与累加器) ANL(ORL、XRL) A,#data (立即数与累加器) ANL(ORL、XRL) direct,A (累加器与直接寻址) ANL(ORL、XRL) direct,#data(立即数与直接寻址),1、用和0“与”法屏蔽某些位 (和1“与”则不改变 ) ANL A, #0FH ;将A中的高4 位都清0 ,低4位不变,逻辑运算的常用功能算法,2、用和1“或”法置某些位为1 (和0“或”则不改变 ) ORL A, #0FH ;将A中的低4 位都置1 ,高4位不变,3、用和1“异或”法将某些位取反(和0“异或”则不改变 ) XRL A, #0FH ;将A中的低4 位都取反 ,高4位不变,RRC A (通过CY循环右移),2. 移位指令组,RL A(累加器内容循环左移) Ring Left 相当于乘以2,RR A(累加器内容循环右移) Ring Right 相当于除以2,RLC A (通过CY循环左移),以下两个指令不影响标志位 CLR A(累加器清0 ) CPL A (累加器按位取反),3. 累加器清0和取反指令组,3.3.4 位操作类指令(17条),位操作概述 以位(bit)为单位进行的运算和操作。 位变量也称为布尔变量或开关变量。 供用户使用的位处理硬件资源有: 位累加器CY; 内部RAM的128个可寻址位; 专用寄存器中可寻址位(包括I/O口的可寻址位)。,2. 位传送指令组 MOV C,bit (指定位内容送CY) MOV bit , C (CY内容送指定位) 3. 位置位复位指令组 SETB C( CY置1) SETB bit (指定位置1) CLR C( CY 清0) CLR bit (指定位清0),4. 位逻辑运算指令组 ANL C,bit(指定位与CY逻辑“与”) ANL C,/bit (指定位的反与CY 逻辑“与”) ORL C,bit(指定位与CY 逻辑“或”) ORL C, /bit (指定位的反与CY 逻辑“或”) CPL C( CY 取反) CPL bit(指定位取反),5. 位控制转移指令组 (1)以C状态为条件的转移指令 JC rel ((CY)=1转移) JNC rel ((CY)=0转移) (2)以直接寻址位状态为条件的转移指令 JB bit,rel (指定位状态为1转移) JNB bit,rel (指定位状态为0转移) JBC bit,rel (指定位状态为1转移,并使该位清0) rel为根据程序中标号计算的 相对地址(补码),3.3.5 控制转移类指令(17条),无条件转移指令组 (1)长转移指令 LJMP addr16 (无条件长转移,16位目的地址,范围64kB ) (2)绝对转移指令 AJMP addr11 (无条件绝对转移,目的地址低11位,高5位 地址取自PC的高5位,寻址范围2kB),(3)短转移指令 SJMP rel (无条件短转移,目的地址低8位,高8位地 址取自PC的高8位,寻址范围256B) (4)变址寻址转移指令 JMP A+DPTR(无条件间接转移,范围64KB ),例3-

温馨提示

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

评论

0/150

提交评论