C8051F指令集_第1页
C8051F指令集_第2页
C8051F指令集_第3页
C8051F指令集_第4页
C8051F指令集_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

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

文档简介

1、第三讲第三讲 指令集指令集河海大学计算机与信息学院河海大学计算机与信息学院基于机器人项目驱动的嵌入式教学讲义基于机器人项目驱动的嵌入式教学讲义 目录本讲重点:本讲重点: 寻址方式;寻址方式; CIP-51 CIP-51指令集;指令集;CIP-51指令系统o 简介 CIP-51 系统控制器的指令集与标准 MCS-51TM指令集完全兼容,可以使用标准 8051的开发工具开发CIP-51的软件。所有的CIP-51指令在二进制码和功能上与同类的 MCS-51TM产品完全等价,包括操作码、寻址方式和对 PSW 标志的影响,但是指令时序与标准 8051 不同。ASM-51指令的格式方括符方括符 表示可选项

2、表示可选项标号代表指令所在地址,标号代表指令所在地址,1-81-8个字母个字母/ /数字,以字数字,以字母开始,母开始,“: :”结尾结尾操作码就是指令功能助记符,指令实体操作码就是指令功能助记符,指令实体目的操作数目的操作数源操作数源操作数注释,以注释,以“; ;”开头开头 标号标号:操作码操作码 目的操作数目的操作数,源操作数源操作数;注释注释 31 汇编语言 o3.1.1 指令和程序设计语言指令和程序设计语言o 指令:是CPU根据人的意图来执行某种操作的命令;o 指令系统:一台计算机所能执行的全部指令的集合;o 程序:按人的要求编写的指令操作序列;o 程序设计:编写程序的过程。o 机器语

3、言:用二进制编码表示每条指令,是计算机能直接识别和执行的语言。o 汇编语言:用助记符、符号和数字来表示指令的程序语言。o 机器语言程序:用机器语言编写的程序;也叫指令程序,目标程序。o 汇编语言程序:用汇编语言编写的程序。o 例如: 1020 汇编语言程序 机器语言程序o MOV A,#0AH ; 74H 0AHo ADD A,#14H ; 24H 14H例如:例如: LOOP: MOV A, R0 ;将将R0的内容送的内容送A 标号 操作码操作码 第一操作数第一操作数 第二操作数第二操作数 注释 (目的操作数)(目的操作数) (源操作数)(源操作数)3.1.2 3.1.2 指令格式指令格式

4、操作码部分:规定指令所实现的操作功能,由25个字母组成;操作数部分:指出了参与操作的数据来源和操作结果存放的目的 单元。 操作数可以直接是一个数(立即数),或是一个数据所在的 空间地址; 指令类型:按字节长度分为:单字节指令、双字节指令和三字节指令。1、单字节指令 49条 指令中的8位二进制代码既包含操作码的信息,也包含操作数的信息。 (1)指令码中隐含着对某一个寄存器的操作 例如: INC DPTR(2)由指令码中的rrr三位的不同编码指定某一个寄存器 例如: MOV A,Rn rrr:07 R0R71 0 1 0 0 0 1 11 1 1 0 1 r r r2、双字节指令 45条 用一个字

5、节表示操作码,另一个字节表示操作数或操作数所在的地址。 例如: MOV A,#30H MOV A,30H 3、三字节指令 17条 一个字节表示操作码,两个字节表示操作数或操作数所在的地址。 例如: MOV 30H,#40H 3.2 3.2 寻址方式寻址方式寄存器寻址寄存器寻址立即寻址立即寻址直接寻址直接寻址寄存器间接寻址寄存器间接寻址变址寻址变址寻址( (基址寄存器基址寄存器+ +变址寄存器间接寻址变址寄存器间接寻址) )相对寻址相对寻址位寻址位寻址 寻址方式:寻址方式:寻找(或确定)操作数所在单元地址的方式。寻找(或确定)操作数所在单元地址的方式。寻址方式越多,计算机寻址能力越强,但指令寻址

6、方式越多,计算机寻址能力越强,但指令 系统也越复杂。系统也越复杂。3.2.1 3.2.1 七种寻址方式七种寻址方式, ,一条指令可能含多种寻址方式一条指令可能含多种寻址方式1 1、寄存器寻址、寄存器寻址 寄存器寻址寄存器寻址: :由指令指出寄存器组由指令指出寄存器组R0R0R7R7的的某一个或其他寄存器(某一个或其他寄存器(A A,B B,DPTRDPTR等)的内容等)的内容作为操作数。而寄存器组则由作为操作数。而寄存器组则由PSWPSW中寄存器组选中寄存器组选择控制位(择控制位(RS1RS1、RS0RS0)来确定。)来确定。 操作数在寄存器中,如操作数在寄存器中,如R0-R7R0-R7,A

7、A、B B、CyCy(位)、(位)、DPTRDPTR等等例:例:MOV AMOV A,B B ; (A A) (B B) MOV 30H MOV 30H,R0 R0 ;(;(30H30H)(R0R0) MOV A MOV A,R1 R1 ; (A A) (R1R1)2 2、立即数寻址、立即数寻址 在立即数寻址方式中,跟在操作码后面的在立即数寻址方式中,跟在操作码后面的是一字节或两字节的操作数,用号表示,以是一字节或两字节的操作数,用号表示,以区别直接地址。因此,操作数就是放在程序存区别直接地址。因此,操作数就是放在程序存储器中的常数。储器中的常数。 操作数在指令中直接给出操作数在指令中直接给出

8、例:例:MOV AMOV A,#64H #64H ;(A) (A) 立即数立即数 64H64H ADD A ADD A,#05H #05H ;(A)(A)+(A)(A)+立即数立即数 05H05H MOV DPTR MOV DPTR,#2000H #2000H ;DPTR 2000HDPTR 2000H 注意:符号注意:符号“# #”表明其后跟的是立即数表明其后跟的是立即数, , 立即数立即数就是数字量本身。就是数字量本身。 3 3、 直接寻址直接寻址 直接寻址方式:在指令直接给出操作数所在存储单元的地址。此时,指令中操作数的部分是操作数所在的地址。采用直接寻址方式的指令是双字节指令。只有内部

9、的RAM的低128字节和特殊功能寄存器(SFR)才能采用直接寻址方式。由于RAM高128字节的地址与专用寄存器的地址是重叠的,故直接寻址方式就不能用于内部RAM的高128字节。直接寻址直接寻址指令中直接给出了操作数所在单元的地址或名称指令中直接给出了操作数所在单元的地址或名称 例:例:MOV R1MOV R1,1FH 1FH ;(R1) (R1) (1FH1FH) MOV 30H MOV 30H,4AH 4AH ;(30H)(30H)(4AH4AH)在本单片机中规定:访问特殊功能寄存器在本单片机中规定:访问特殊功能寄存器SFRSFR只能采用直接寻址方式。例如:只能采用直接寻址方式。例如:MOV

10、 A, SP MOV A, SP ; (A) (SP) (A) (SP) MOV A, 81H MOV A, 81H ; (A) (SP) (A) (SP) MOV P1, #5AH MOV P1, #5AH ; (P1)#5AH(P1)#5AHMOV 90H,#5AH MOV 90H,#5AH ; (P1)#5AH (P1)#5AH MOV B, 30H MOV B, 30H ; (B) (30H) (B) (30H) 相同相同相同相同4 4、寄存器间接寻址、寄存器间接寻址 在间接寻址方式中,指令指定某个寄存器在间接寻址方式中,指令指定某个寄存器来存放操作数的地址,由该地址所指定的单元来存放

11、操作数的地址,由该地址所指定的单元内容作为操作数。内部和外部内容作为操作数。内部和外部RAMRAM都可采用这都可采用这种寻址方式,但不能用这种寻址方式对专用寄种寻址方式,但不能用这种寻址方式对专用寄存器进行访问。存器进行访问。 可采用工作寄存器可采用工作寄存器R0R0或或R1R1作为间址寄存器,作为间址寄存器,可对可对256256字节的字节的RAMRAM单元进行寻址。采用工作寄单元进行寻址。采用工作寄存器存器R0R0或或R1R1、1616位的数据指针寄存器(位的数据指针寄存器(DPTRDPTR)作为间址寄存器,这时可对作为间址寄存器,这时可对64KB64KB的外部数据存的外部数据存储器空间(包

12、括储器空间(包括I/OI/O)寻址。)寻址。 寄存器间接寻址寄存器间接寻址 寄存器中的内容是一个地址,该地址单元的内寄存器中的内容是一个地址,该地址单元的内容是所需的操作数。操作数是通过寄存器间接得到的容是所需的操作数。操作数是通过寄存器间接得到的注意注意:1 1)“间接间接”表示某寄存器中的表示某寄存器中的“内容内容”只是一个只是一个“单元地址单元地址”,这个地址单元中存放的数据才,这个地址单元中存放的数据才是要找的是要找的“操作数操作数”。2 2)符号)符号“ ”表示表示“间接,其含义与读音皆同间接,其含义与读音皆同“atat”。 “”-“”-指针指针例:例: MOV R1 MOV R1,

13、#30H ;(R1) #30H ;(R1) 立即数立即数30H 30H MOV R1 MOV R1,#0FH ;(30H)#0FH ;(30H)立即数立即数0FH0FH MOV A MOV A,R1 ;(A)(30H)=#0FHR1 ;(A)(30H)=#0FH MOV A,R0 MOV A,R1 MOVX A,DPTR MOV A,R0; (R0) = 65H,(65H) = 47H47H65H47HR0R0A A65H65H在本单片机中访问特殊功能寄存器在本单片机中访问特殊功能寄存器SFRSFR只能采用直只能采用直接寻址方式的原因:接寻址方式的原因:SFRSFR分布在分布在80H80H0F

14、FH0FFH范围内,范围内,而而5252系列单片机有系列单片机有256256字节的片内字节的片内RAM,RAM,其中的其中的80H80H0FFH0FFH的的RAMRAM与与SFRSFR所占地址重叠。所占地址重叠。MOV A, 90H MOV A, 90H 等效于等效于 MOV A, P1 MOV A, P1 属直接寻址属直接寻址 MOV A, MOV A, R0 R0 ; 事先已知事先已知 (R0) = #90H (R0) = #90H 执行的操作:执行的操作:A (90H) A (90H) 属寄存器间接寻址属寄存器间接寻址, , 随意写的指令如:随意写的指令如:MOV A, 85H MOV

15、A, 85H 则是非法的!则是非法的! 于是规定:于是规定: 80H80H0FFH0FFH范围内的范围内的RAMRAM只能用寄存器只能用寄存器间接寻址方式,而间接寻址方式,而SFRSFR只能用直接寻址方式。从而只能用直接寻址方式。从而解决了地址冲突的问题。例如:解决了地址冲突的问题。例如:存储器配置(片内RAM)o 89C5189C51片内片内RAM 128RAM 128字节(字节(00H00H7FH7FH)o 89C5289C52片内片内RAM 256RAM 256字节(字节(00H00H0FFH0FFH)00H00H20H20H2FH2FH7FH7FH1FH1FH30H30H80H80HF

16、FHFFH52子系列才有子系列才有的的RAM区区普通普通RAM区区位寻址区位寻址区工作寄存器区工作寄存器区SFR分布在分布在80H-FFH其中其中92个位个位可位寻址可位寻址80H80HFFHFFH89C51 128128字节字节89C52 256256字节字节只能直接寻址只能直接寻址只能寄存器间接寻址只能寄存器间接寻址5 5、变址寻址、变址寻址 也称为也称为: : 基址寄存器基址寄存器+ +变址寄存器变址寄存器间接寻址间接寻址 变址寻址是以某个寄存器的内容为基地址,变址寻址是以某个寄存器的内容为基地址,然后在基地址的基础上加上地址偏移量,形成然后在基地址的基础上加上地址偏移量,形成真正的操作

17、数地址。这种寻址方式用于访问程真正的操作数地址。这种寻址方式用于访问程序存储器,尤其适用于查表访问。序存储器,尤其适用于查表访问。 用数据指针用数据指针DPTRDPTR或程序计数器或程序计数器PCPC作为变址作为变址寄存器,以累加器寄存器,以累加器A A作为基址寄存器,以作为基址寄存器,以DPTRDPTR或或PCPC的内容与加累加器的内容与加累加器A A的内容之和,作为操的内容之和,作为操作数的作数的1616位程序存储器地址。位程序存储器地址。MOVC AMOVC A,A+DPTR A+DPTR ; A (A)+(DPTR)A (A)+(DPTR)MOVC AMOVC A,A+PC A+PC

18、; A (A)+(PC)A (A)+(PC)1EH02F111HDPTRDPTRA A+ +0302H0302H1EHA A 变址寻址方式的另一种情况是用在条件转移指令中。在这种情况下,转移指令的目标地址就是基址寄存器加上变址寄存器的和。例如: JMP A+DPTR ; 跳转到地址(A)+(DPTR)6 6、相对寻址、相对寻址 相对寻址只用在相对转移指令中。相对转移指令执行时,是以当前的PC值加上指令中规定的偏移量rel而形成实际的转移地址。PC的当前值:执行完相对转移指令后的PC值;源地址:相对转移指令操作码所在的地址;目的地址:转移后的地址;目的地址源地址2(相对转移指令字节数)rel r

19、el范围:128127例如: JC rel 设CY=1,rel=75H 实际使用时,用标号: JC LABLE LABLE: MOV A,#30H 6 6、位寻址、位寻址 采用位寻址方式指令的操作数是8位二进制数中的某一位。指令中给出的是位地址,即片内RAM(包括SFR)某一单元中的一位,用bit表示。用两种方式表示: 直接使用地址:20H2FH的16个单元的位地 址:00H7FH; 如: CLR 00H SETB 7FH 使用 “.”运运算符。对于特殊功能寄存器,可以直 接用寄存器名加位数表示。 如: CLR PSW.1 SETB P1.0o 片内片内RAMRAM中有中有128128个位可个

20、位可按位寻址的位,位地址:按位寻址的位,位地址:00H00H7FH7FH分布在:分布在:20H20H2FH2FH单元;单元;o 另外,在另外,在SFRSFR中还有中还有9292个位可按位寻址个位可按位寻址00H00H20H20H2FH2FH7FH7FH1FH1FH30H30H80H80HFFHFFH52子系列才有子系列才有的的RAM区区普通普通RAM区区位寻址区位寻址区工作寄存器区工作寄存器区27H22H21H20H26H24H25H23H28H07 06 05 04 03 02 01 000F 0E 0D 0C 0B 0A 09 0817 16 15 14 13 12 11 101F 1E

21、1D 1C 1B 1A 19 1827 26 25 24 23 22 21 202F 2E 2D 2C 2B 2A 29 2837 36 35 34 33 32 31 303F 3E 3D 3C 3B 3A 39 3847 46 45 44 43 42 41 402FH7F 7E 7D 7C 7B 7A 79 78位地址位地址总共总共128个可个可按位按位寻址寻址的位的位单元地址单元地址17D7 D6 D5 D4 D3 D2 D1 D03.2.2 3.2.2 寻址空间及符号注释寻址空间及符号注释1、寻址空间、寻址空间 寻 址 方 式寻 址 空 间立即数寻址程序存储器直接寻址片内低128BRAM

22、,特殊功能寄存器寄存器寻址工作寄存器R0R7, A,B,DPTR寄存器间接寻址片内256RAM, 片外RAM或I/O端口变址寻址程序存储器(A+PC,A+DPTR)相对寻址程序存储器256B范围(PC+偏移)位寻址片内RAM的20H2FH字节地址部分特殊功能寄存器2、寻址方式中常用符号注释、寻址方式中常用符号注释 (1) Rn (n=07) 工作寄存器组R0R7 (2) Ri (i=0,1 ) 寄存器组R0,R1 (3) #data (4) #data16 (5) direct (6) addr11 (7) addr16 (8) rel 偏移量128 +127 (9) bit (10) 间址符

23、号 (11) / (12) () (13) () (14) 3.3 MCS-51指令系统功能分五类,共111条指令5151系列单片机指令集含有系列单片机指令集含有111111条指令条指令 每条指令在执行时要花去一定的每条指令在执行时要花去一定的时间时间,以机器,以机器周期为单位。按指令周期为单位。按指令执行时间执行时间分类:分类:单周期单周期(64(64条条););双周期双周期(45(45条条);4);4周期周期(2(2条条) )按指令的按指令的功能功能分类,可分为分类,可分为5 5大类:大类:数据传送类(数据传送类(2929条);算术运算类(条);算术运算类(2424条)条)逻辑运算及移位类

24、(逻辑运算及移位类(2424);控制转移类();控制转移类(1717条)条)位操作类(位操作类(1717条)条)每条指令在程序存储器每条指令在程序存储器ROMROM中占据一定的中占据一定的空间空间,以字节为单位。按指令以字节为单位。按指令所占字节数所占字节数分类:分类:单字节单字节(49(49条条););双字节双字节(46(46条条);3);3字节字节(16(16条条) )内部存储器间传送:内部存储器间传送: (MOVMOV1616条)条)外部数据存储器与累加器间传送外部数据存储器与累加器间传送: : (MOVXMOVX4 4条)条)程序存储器向累加器传送:程序存储器向累加器传送: (MOVC

25、MOVC2 2条)条)数据交换:(数据交换:(XCHXCH,XCHDXCHD,SWAPSWAP5 5条)条)堆栈操作:堆栈操作: (PUSHPUSH,POPPOP2 2条)条)3.3.1 数据传送类指令(5种/29条)1. 1. 以累加器以累加器A A为目的操作数的指令为目的操作数的指令 MOV A, Rn ;n=07, A (Rn) MOV A, direct ;A (Rn) direct为内部RAM或SFR地址 MOV A, Ri ; i=0,1 , A (Ri) MOV A, data ; A data 注:注: MOV A, Ri ;以Ri的内容为地址 ,把该地址中 ;的内容送到A中去

26、。A (Ri) MOV A, R0 0 ;将R0的内容送到A去。 A (R0) MOV A, #20H ;(A) = 20H A的内容为20H MOV A, 20H ;(A) = (20H) A的内容为20H中的内容 注意以上两组指令的不同点 2. 2. 以以R Rn n为目的操作数的指令为目的操作数的指令MOV Rn, A ;Rn (A) , n=07MOV Rn , direct ;Rn (direct) MOV Rn ,data ;Rn data 3.3.以直接地址为目的操作数的指令以直接地址为目的操作数的指令 MOV direct, A ;direct (A) MOV direct,

27、Rn ; direct (Rn) , n=07MOV direct, Ri ; direct ( Ri ) ) , i=0,1MOV direct, direct ;direct (direct) MOV direct, #data ;direct data 4. 4. 以寄存器间接地址为目的操作数指令以寄存器间接地址为目的操作数指令MOV Ri, A ; (Ri) ) (A) ,i=0,1MOV Ri , direct ; (Ri) ) (direct) MOV Ri ,data ; (Ri) ) dataAcc 累加器累加器Direct 直接寻址直接寻址Ri 间接寻址间接寻址Rn 寄存器寄

28、存器#data 立即数立即数RnRn: R0R7R0R7RiRi: R0R0,R1R1#data#data:8 8位立即数位立即数#data16#data16:1616位立即数位立即数directdirect:直接地址:直接地址relrel: 8 8位带符号偏移量位带符号偏移量5 5、十六位数据传送指令(、十六位数据传送指令(1 1条)条)MOV DPTR,#data16 ; 16位立即数寻址 例如: MOV DPTR,#2000H ; DPH dataH, ; DPL dataL 也可以写成: MOV DPH,#20H MOV DPL,#00H MOVC A MOVC A, A+DPTRA+

29、DPTR MOVC A MOVC A, A+PC A+PC 寻址方式属寻址方式属: : “基址寄存器基址寄存器 + + 变址寄存器变址寄存器间接寻址间接寻址”6 6、查表指令、查表指令 A+DPTRA+DPTR或或 A+PCA+PC指向程序存储器中的某单元。拟指向程序存储器中的某单元。拟传送给累加器传送给累加器ACC ACC 的数据就是程序中事先写进去的数据就是程序中事先写进去的表格数据。这些表格数据往往用伪指令的表格数据。这些表格数据往往用伪指令 DB,DW DB,DW 等定义在程序中。等定义在程序中。1000H: : MOV A,#0DH ; A 0DH1002H: : MOVC A,A+

30、PC ; A (0DH+1000H)1003H: : MOV R0,A ; R0 (A) 1010H: : 02H1011H: : 04H1012H: : 06H1013H: : 08H (A)= 02H,(R0) = 02H,(PC) = 1004H。 尽量用DPTR1000H: : MOV A,#00H ;A 00H1002H: : MOV DPTR,#1010H ;DPTR 1010H1005H: : MOVC A,A+DPTR ;A (00H+1010H)1006H: : MOV R0,A ; R0 (A) 1010H: : 02H1011H: : 04H1012H: : 06H101

31、3H: : 08H7 7、累加器、累加器A A与片外与片外RAMRAM数据传送指令数据传送指令 (4(4条条):): MOVX MOVX类指令可在累加器与以类指令可在累加器与以 DPTRDPTR或或 RiRi所代所代表的外部表的外部 RAM RAM 之间进行数据传送。之间进行数据传送。 用寄存器间接寻址的方式访问片外用寄存器间接寻址的方式访问片外RAMRAM或或I/OI/O端口。端口。 例如例如: : MOVX AMOVX A, DPTR DPTR (A)(A) (DPTR (DPTR)MOVX AMOVX A, Ri Ri (A)(A) (Ri) (Ri) MOVX MOVX DPTR, A

32、 DPTR, A (DPTR(DPTR) ) (A) (A) MOVX MOVX Ri, A Ri, A (Ri) (Ri) (A)(A)8 8、堆栈操作指令、堆栈操作指令(2(2条条):):PUSH directPUSH direct压栈指令压栈指令POP directPOP direct弹栈指令弹栈指令堆栈区由特殊功能寄存器堆栈区由特殊功能寄存器堆栈指针堆栈指针SPSP 管理管理堆栈区可以安排在堆栈区可以安排在 RAMRAM区任意位置,一般不安区任意位置,一般不安排在工作寄存器区和可按位寻址的排在工作寄存器区和可按位寻址的RAMRAM区区, ,而是放而是放在在RAMRAM区的靠后的位置区的

33、靠后的位置堆栈总是指向栈顶堆栈总是指向栈顶通常通常PUSHPUSH与与POPPOP两条指令成对使用两条指令成对使用8 8、堆栈操作指令、堆栈操作指令退栈指令退栈指令 POP direct如如: (SP)=62H, (62H)=70H ,(61H)=30H 时,执行时,执行 进栈指令进栈指令 PUSH direct如如: (SP)=60H, (A)=30H ,(B)=70H 时,执行时,执行堆栈的存储原则:先进后出堆栈的存储原则:先进后出61H62H(SP)60H30H70HPUSH Acc ;(SP)+1=61HSP, (A) 61HPUSH B ;(SP)+1=62HSP, (B) 62H结

34、果结果: (61H)=30H, (62H)=70H, (SP)=62HPOP DPH ;(SP) DPH, (SP)1=61HSPPOP DPHL ;(SP) DPL, (SP)1=60HSP结果结果: (DPTR)=7030H, (SP)=60H注意:注意:(61H)=30H, (62H)=70H例如:设例如:设(A)=7BH; (35H)=11H(A)=7BH; (35H)=11H 并且知道(并且知道(SPSP)60H60H PUSH ACC ;(61H) PUSH ACC ;(61H) #7BH #7BH PUSH 35H ;(62H) PUSH 35H ;(62H) (35H) (35

35、H) 即:即:(62H) (62H) #11H #11H POP ACC ;(A) POP ACC ;(A) (62H) (62H) 即:即:(A)(A) #11H #11H POP 5AH ;(5AH) POP 5AH ;(5AH) (61H) (61H) 即:即:(5AH) (5AH) #7BH #7BH9 9、数据交换指令、数据交换指令(5(5条条): ): (1 1)字节交换指令)字节交换指令 XCH A XCH A,directdirect XCH A XCH A,Ri Ri XCH A XCH A,Rn Rn (A A) (directdirect) 或或(Ri)(Ri),或,或(

36、Rn)(Rn)(2 2)字节交换指令)字节交换指令 XCHD AXCHD A, RiRi 累加器累加器 AccAcc的低的低4 4位与位与(Ri)(Ri)的低的低4 4位互换,位互换,各自的高各自的高4 4位不变位不变SWAP ASWAP A 累加器累加器 AccAcc的低的低4 4位与自身的高位与自身的高4 4位互换位互换3.3.2 算术运算类指令(6种/24条) 加法运算:加法运算: (ADD(ADD4 4条条) )带进位加法运算带进位加法运算: (ADDC: (ADDC4 4条条) )带借位减法运算带借位减法运算: (SUBB: (SUBB4 4条条) )加加1/1/减减1 1操作:操作

37、: (INC(INC,DECDEC9 9条条) )单字节乘单字节乘/ /除法运算除法运算: (: (MULMUL,DIVDIV2 2条条) )十进制调整:十进制调整: (DA A(DA A1 1条条) ) 算术运算类指令加法运算:加法运算: (ADDADD4 4条)条)带进位加法运算带进位加法运算: : (ADDCADDC4 4条)条)带借位减法运算:带借位减法运算: (SUBBSUBB4 4条)条)所有的加法所有的加法(ADD)(ADD)、带进位加法、带进位加法(ADDC)(ADDC)、带借位减、带借位减法法(SUBB)(SUBB)运算都是以运算都是以 A A为一个加数或被减数为一个加数或被

38、减数, ,最终最终结果也存进结果也存进 A A 。加法加法(ADD)(ADD)、带进位加法、带进位加法(ADDC) (ADDC) 以及带借位减法以及带借位减法(SUBB)(SUBB)运算中运算中, ,如果产生了进位或借位如果产生了进位或借位, ,将自动对将自动对PSWPSW中的中的CyCy标志位置标志位置“1 1” 。带进位加法带进位加法(ADDC):(A)(ADDC):(A)(A)+(Cy)+(A)+(Cy)+(第二操作数第二操作数) )带借位减法带借位减法(SUBB):(A)(SUBB):(A)(A)-(Cy)-(A)-(Cy)-(第二操作数第二操作数) )1、不带进位加法指令(Addti

39、on)ADD A, Rn ; A(A)+(Rn)ADD A, Ri ;A(A)+((Ri))ADD A, direct ;A(A)+(direct)ADD A, data ;A(A)+#data对标志位的影响对标志位的影响Cy - 进位位进位位AC - 半进位位半进位位OV - 溢出位溢出位2. 带进位加法指令ADDC A, Rn ; A(A)+(Rn)+(Cy)ADDC A, Ri ;A(A)+(Ri ) +(Cy)ADDC A, direct ;A(A)+(direct) +(Cy)ADDC A, data ;A(A)+#data +(Cy)对标志位的影响与对标志位的影响与ADD相同相同3

40、、带借位减法指令(Subtraction)SUBB A, Rn ; A(A)-(Rn)-(Cy)SUBB A, Ri ;A(A)-(Ri) ) -(Cy)SUBB A, direct ;A(A)-(direct) -(Cy)SUBB A, data ;A(A)-#data -(Cy)对标志位的影响对标志位的影响Cy - 进位位进位位AC - 半进位位半进位位OV - 溢出位溢出位4、乘法指令(Multiplication) MUL AB ; (A)(B) 低8位A 高8位BA、B中都是无符号整数如果积大于255,OV1,否则OV0;进位标志总是清零 Cy05、 除法指令(Division)DI

41、V AB ; (A)(B) 商 A 余数BA、B中都是无符号整数如果除数B为“0”,OV1,否则OV0;进位标志总是清零 Cy06、 加1指令INC A ;A(A)+1INC Rn ;Rn(Rn)+1INC direct ;direct(direct)+1INC Ri ;(Ri)(Ri)+1INC DPTR ;DPTR(DPTR)+1对标志位不产生影响若: (A)0FFH , (Cy)=0执行: INC A结果:(A)00H , (Cy)=0 7、 减1指令(Decrease)DEC A ;A(A)1DEC Rn ;Rn(Rn)1DEC direct ;direct(direct)1DEC R

42、i ;(Ri)(Ri)1对标志位不产生影响对标志位不产生影响若:若: (A)00H , (Cy)=0执行:执行: DEC A结果:(结果:(A)0FFH , (Cy)=0无无 DEC DPTR 指令指令BCDBCD码是指码是指“用二进制表达的十进制数用二进制表达的十进制数”。如:。如: 十进制数十进制数2020可以用二进制数可以用二进制数00010100B00010100B表示表示; ; 也可以用十六进制数也可以用十六进制数14H14H表示;表示; 还可以用还可以用BCDBCD码码 00100000B 00100000B 或或 20H 20H 表示。表示。4 4个二进制位就可以表示一位个二进制

43、位就可以表示一位BCDBCD码:码: 000000001001 1001 可表示十进制数可表示十进制数(BCD(BCD数数) 0) 09; 9; 8 8个二进制位就可以表示两位压缩的个二进制位就可以表示两位压缩的BCDBCD码:码:000000000000000010011001 10011001 表示表示 00009999。8 8、十进制调整、十进制调整 (1 1条)条) DA A DA A用于两个用于两个BCDBCD码之间的相加,这条指令只能跟在码之间的相加,这条指令只能跟在 ADD ADD 或或 ADDC ADDC 之后之后若若(A)(A)3 30 0 9 9或或(AC)=1(AC)=1

44、则则(A)(A)3 30 0(A)(A)3 30 06 6; 若若(A)(A)7 74 4 9 9或或(CY)=1(CY)=1则则(A)(A)7 74 4(A)(A)7 74 46 6;例例5 5:两个十进制数:两个十进制数“6565”与与“5858”相加,根据相加,根据常识,显然其和应当为常识,显然其和应当为“123123”。MOV A,#65H MOV A,#65H ADD A,#58H ADD A,#58H DA ADA A结果结果:(A)= 23H:(A)= 23H (CY)= 1 (CY)= 1指令指令 “DA ADA A” 完成的操作完成的操作: 6 5 0110 0101 6 5

45、 0110 0101 5 8 0101 1000 5 8 0101 1000 +13 31818 19192 26 6 0110 01106 6 0110 0110B9 D9B9 D9若若(A)(A)3 30 0 9 9或或(AC)=1(AC)=1则则(A)(A)3 30 0(A)(A)3 30 06 6; 若若(A)(A)7 74 4 9 9或或(CY)=1(CY)=1则则(A)(A)7 74 4(A)(A)7 74 46 6;又如:两个十进制数又如:两个十进制数“3939”与与“5858”相加,根据相加,根据常识,显然其和应当为常识,显然其和应当为“9797”。MOV A,#39H MOV

46、 A,#39H ADD A,#58H ADD A,#58H DA ADA A结果结果:(A)= 97H:(A)= 97H (CY)= 0 (CY)= 0 3 9 0011 1001 3 9 0011 1001 5 8 0101 1000 5 8 0101 1000 +07 723239 9 6 0110 6 0110指令指令 “DA ADA A” 完成的操作完成的操作: 9 1 9 1 AC=1 AC=13.3.3 3.3.3 逻辑运算及移位类指令(逻辑运算及移位类指令(5 5种种/24/24条)条)逻辑与运算:逻辑与运算: (ANLANL6 6条)条)逻辑或运算:逻辑或运算: (ORLORL

47、6 6条)条)逻辑异或运算:逻辑异或运算: (XRLXRL6 6条)条)累加器清零累加器清零/ /取反:取反: (CLRCLR,CPLCPL2 2条)条)累加器移位操作累加器移位操作: : (RL,RLC,RR,RRCRL,RLC,RR,RRC4 4条)条)1 1、简单操作指令、简单操作指令 (1 1)累加器)累加器A A清清0 0指令指令 只影响只影响P P CLR A ; A “0” (2 2)累加器)累加器A A取反指令取反指令 不影响不影响PSWPSW CPL A ; A0- A 例例: (A)=3AH, CPL A, (A)=0C5H 0011 1010B 1100 0101B 2

48、2、累加器移位操作、累加器移位操作: :(RL,RLC,RR,RRCRL,RLC,RR,RRC4 4条)条)RL A RL A 循环左移循环左移累加器累加器 A A累加器累加器 A ACyCy累加器累加器 A ACyCy累加器累加器 A ARRC A RRC A 带进位位循环右移带进位位循环右移RR ARR A循环右移循环右移RLC A RLC A 带进位位循环左带进位位循环左移移例例(A A)6CH =0110 1100B6CH =0110 1100B,(C)=1(C)=1 RLC A RLC A (A)=1101 1001B=0D9H (A)=1101 1001B=0D9H、累加器半字节交

49、换指令(、累加器半字节交换指令(1 1条)条)SWAP A ; A03 A47累加器累加器A A的高低半字节交换的高低半字节交换例例: (A)=3AH, SWAP A (A)=0A3H 4 4、逻辑与、逻辑与(ANL)(ANL)1 11 1ANL AANL A, RnRn1 11 1ANL AANL A, RiRi1 12 2ANL AANL A, directdirect1 12 2ANL AANL A, #data#data2 23 3ANL directANL direct,#data#data1 12 2ANL directANL direct, A ATmTmByteByte指指 令

50、令 形形 式式 “与与” , “有有0即即0,全,全1为为1” 0000 0111 ) 1111 1101 0000 0101 B 05H5 5、逻辑或、逻辑或(ORL)(ORL)1 11 1ORL AORL A, RnRn1 11 1ORL AORL A, RiRi1 12 2ORL AORL A, directdirect1 12 2ORL AORL A, #data#data2 23 3ORL directORL direct,#data#data1 12 2ORL directORL direct, A ATmTmByteByte指指 令令 形形 式式 “或或” , “有有1即即1,全

51、,全0为为0” 0000 0110 ) 0110 1101 0110 1111 B 6FH逻辑异或逻辑异或(XRL)(XRL) “异或异或” , “相异为相异为1,相同为,相同为0” 0000 0110 ) 0110 1101 0110 1011 B 6BH1 11 1XRL AXRL A, RnRn1 11 1XRL AXRL A, RiRi1 12 2XRL AXRL A, directdirect1 12 2XRL AXRL A, #data#data2 23 3XRL directXRL direct,#data#data1 12 2XRL directXRL direct, A AT

52、mTmByteByte指指 令令 形形 式式例例 ( A)=01B,表示随机状态,为表示随机状态,为1或或0,执,执行下述一组指令执行后行下述一组指令执行后A的值如何的值如何? 0 1 XRL A,#0C0H ;将累加器;将累加器A的内容的内容D7、D6取反取反 1 1 0 0 0 0 0 0 1 0 ORL A,#03H将累加器将累加器A的内容的内容D1、D0置置1 0 0 0 0 0 0 1 1 1 0 1 1ANL A,#0E7H;将累加器;将累加器A的内容的内容D4、D3清清0 1 1 1 0 0 1 1 1 1 0 0 0 1 1 解解 :执行上述指令后,(:执行上述指令后,(A)=

53、100011B。逻辑运算指令的常见用法逻辑运算指令的常见用法逻辑与逻辑与ANLANL用于用于清清0 0或者或者保留保留某些位:某些位:例例: ANL A, #0FH; : ANL A, #0FH; 则则(A) = 0AH(A) = 0AH( ( 已知累加器已知累加器A A中已存有数:中已存有数:9AH )9AH )逻辑或逻辑或ORLORL用于用于置置1 1或者或者保留保留某些位:某些位:例例: ORL A, #0FH; : ORL A, #0FH; 则则(A) = 9FH(A) = 9FH逻辑异或逻辑异或XRLXRL用于用于取反取反或者或者保留保留某些位:某些位:例例: XRL A, #0FH

54、; : XRL A, #0FH; 则则(A) = 95H(A) = 95H (A) (A) 1001 1010 1001 1010 #0FH #0FH 0000 1111 0000 1111 95H 95H 1001 0101 1001 0101. . . 控制转移类指令(控制转移类指令(4 4种种/17/17条)条)此类指令改变程序的执行顺序此类指令改变程序的执行顺序改变当前改变当前PCPC值值无条件转移:无条件转移: (LJMP,AJMP,SJMP,JMPLJMP,AJMP,SJMP,JMP4 4条)条)条件转移(判断跳转):条件转移(判断跳转): (JZ,JNZ,CJNE,DJNZJZ,

55、JNZ,CJNE,DJNZ8 8条)条)子程序调用及返回:子程序调用及返回: (LCALL,ACALL,RET,RETILCALL,ACALL,RET,RETI4 4条)条)1 1、无条件转移:、无条件转移: LJMP,AJMP,SJMP,JMPLJMP,AJMP,SJMP,JMP4 4条条LJMP addr16 LJMP addr16 长跳转指令长跳转指令 可在可在64K64K范围内跳转范围内跳转AJMP addr11 AJMP addr11 绝对跳转指令绝对跳转指令 可在指令所在的可在指令所在的2K2K范围内跳转范围内跳转SJMP rel SJMP rel 相对跳转指令相对跳转指令 可在当

56、前可在当前PC-128PC-128与与+127+127范围内跳转范围内跳转在程序中在程序中addr16 addr16 reladdr16 addr16 rel等等可用标号代替,表示要转可用标号代替,表示要转移目的地址移目的地址地址地址 机器码机器码 源程序源程序 注释注释 ORG 0000H ; 整个程序起始地址整个程序起始地址0000 20 00 30 LJMP MAIN ; 跳向主程序跳向主程序 ORG 0030H ; 主程序起始地址主程序起始地址0030 C3 MAIN: CLR C ; MAIN为程序标号为程序标号0031 E6 LOOP: MOV A , R00032 37 ADDC

57、 A, R10033 08 INC R00034 DA FB DJNZ R1, LOOP ;相对转移;相对转移0036 80 02 SJMP NEXT0038 78 03 MOV R0, #03H003A 18 NEXT: DEC R0003B 80FE SJMP $ ;HERE: SJMP HERE END ; 结束标记结束标记原地踏步指令的指令原地踏步指令的指令: :HEREHERE: SJMP HERE SJMP HERE 常写成:常写成: SJMP $ SJMP $程序中标号与地址之间的关系程序中标号与地址之间的关系JMP JMP A+DPTRA+DPTR散转指令(间接长跳转指令)散转

58、指令(间接长跳转指令) 可在以可在以DPTRDPTR为基址为基址 + A+ A为偏移量为偏移量 之和所指向的之和所指向的64K64K程序范围内跳转程序范围内跳转PM: MOV R1,A ;A=A*3 RL A ADD A,R1 MOV DPTR,#PMTB JMP A+DPTRPMTB:LJMP PM0 ;命令0处理入口,3字节 LJMP PM1 LJMP PM2 LJMP PM702PM0LPM0H02PM1LPM1H、空操作指令(、空操作指令(1 1条)条) 不影响标志位NOP ; PC (PC) + 1 作用: 产生一个机器周期的延时、调整转向。、条件转移、条件转移: JZ,JNZ,CJ

59、NE,DJNZ8JZ,JNZ,CJNE,DJNZ8条条判零转移指令判零转移指令 JZ relJZ relJNZ relJNZ rel根据根据AccAcc的内容是否为的内容是否为0 0决定是否跳转决定是否跳转 JB bit JB bit,relrel (bitbit)= =“1 1”就跳转;否则不跳转就跳转;否则不跳转JNB bitJNB bit,relrel (bitbit) “1 1”就跳转;否则不跳转就跳转;否则不跳转JBC bitJBC bit,relrel (bitbit)= =“1 1”就先将其清零就先将其清零 再跳转;再跳转; 否则,不动此位也不跳转。否则,不动此位也不跳转。比较转移指令比较转移指令 CJNE A, #data, relCJNE A, #data, relCJNE A, direct,rel CJNE A, direct,rel CJNE CJNE Ri,#data, relRi,#data, relCJN

温馨提示

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

评论

0/150

提交评论