第3章 AT89C51指令系统_第1页
第3章 AT89C51指令系统_第2页
第3章 AT89C51指令系统_第3页
第3章 AT89C51指令系统_第4页
第3章 AT89C51指令系统_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

1、第第3 3章章 80518051的指令系统的指令系统 介绍介绍AT89C51AT89C51汇编语言汇编语言的指令系统。的指令系统。 指令系统概述指令系统概述 AT89C51AT89C51的基本指令共的基本指令共111111条条,按指令所占的字节来分:按指令所占的字节来分: (1) (1) 单字节单字节指令指令4949条;条; (2) (2) 双字节双字节指令指令4545条;条; (3) (3) 三字节三字节指令指令1717条。条。按指令的执行时间来分按指令的执行时间来分: (1) (1) 1 1个机器周期个机器周期(1212个时钟振荡周期)指令个时钟振荡周期)指令6464条条 (2) (2)

2、2 2个机器周期个机器周期(2424个时钟振荡周期)指令个时钟振荡周期)指令4545条条 (3) (3) 只有只有乘、除两条指令乘、除两条指令的执行时间为的执行时间为4 4个机个机器周期器周期(4848个时钟振荡周期)。个时钟振荡周期)。12MHz12MHz晶振晶振: :机器周期为机器周期为1 s。 3.1 3.1 指令系统的寻址方式指令系统的寻址方式共共7 7种种寻址方式。寻址方式。 1 1寄存器寻址寄存器寻址 寻址方式寻址方式就是在指令中就是在指令中说明操作数所在地址说明操作数所在地址的方法的方法 操作数在寄存器中操作数在寄存器中 MOV A,Rn ;(;(Rn)A,n=07寻址范围:寻址

3、范围:2 2直接寻址直接寻址 寻址范围:寻址范围: (1)4组通用工作寄存区共组通用工作寄存区共32个工作寄存器。个工作寄存器。(2)部分)部分SFR,例如,例如A、B、DPTR等。等。直接地址形式直接地址形式MOV A,40H片内片内RAM的的128个单元:个单元:00H7FH SFR。除了以单元地址的形式外。除了以单元地址的形式外,还还可用寄存器符号可用寄存器符号的形式给出。例如:的形式给出。例如: MOV A,80H 与与 MOV A,P0是等价的是等价的。3. 3. 寄存器间接寻址寄存器间接寻址 寻址范围:寻址范围:寄存器中存放的是操作数的地址寄存器中存放的是操作数的地址加加前缀标志前

4、缀标志“” 。MOV A,Ri ;i=0或或1 MOVX A,DPTR(1)片内片内RAM 128B:00H7FH,形式为形式为Ri(i=0,1)(2)片)片外外64KB,形式为,形式为DPTR 注片外注片外RAM低低256B,MOVX A ,RiMOVX A,DPTR(3 3)堆栈区)堆栈区 堆栈操作指令堆栈操作指令PUSHPUSH(压栈)和(压栈)和POPPOP(出栈)使用堆(出栈)使用堆栈指针(栈指针(SPSP)作间址寄存器)作间址寄存器4 4立即寻址立即寻址 5 5基址变址寻址:基址变址寻址: 形式:形式:#dataMOV A,#40H只对只对ROM寻址寻址只有只有3条条:MOVC A

5、,A+DPTRMOVC A,A+PCJMP A+DPTR例如:例如:指令指令 MOVC AMOVC A,A+DPTRA+DPTR 其中其中A A的原有内的原有内容为容为05H05H,DPTRDPTR的内容为的内容为0400H0400H,该指令执行,该指令执行的结果是把程序存储器的结果是把程序存储器0405H0405H单元的内容传送单元的内容传送给给A A。6 6位寻址位寻址 MCS-51MCS-51有有位处理位处理功能,可以对数据位进行操作。功能,可以对数据位进行操作。寻址范围:所有位寻址范围:所有位 例如:例如: MOV C,40H = MOV C, (28H).0(1)片内)片内RAM中的

6、位寻址区。中的位寻址区。2种表示方法:种表示方法:位地址位地址和和单元地址加上位单元地址加上位,(2 2)可位寻址的)可位寻址的SFRSFR 4 4种种表示方法:表示方法:直接使用位地址直接使用位地址。 位名称的表示位名称的表示方法。方法。单元地址加位数单元地址加位数的表示方法。的表示方法。d.d.特殊功能寄存器符号加位数特殊功能寄存器符号加位数的表示方法。的表示方法。MOV C, F0=MOV C, 0D5H=MOV C, PSW.5=MOV C, (0D0H).57 7相对寻址相对寻址: : 程序转移指令程序转移指令中中 在相对寻址的转移指令中,给出了地址偏移量,在相对寻址的转移指令中,给

7、出了地址偏移量,以以“relrel”表示,即把表示,即把PCPC的当前值加上偏移量就构成的当前值加上偏移量就构成了程序转移的目的地址:了程序转移的目的地址: 目的地址目的地址= =转移指令所在的地址转移指令所在的地址 + + 转移指令的字节数转移指令的字节数relrel偏移量偏移量relrel是一带符号的是一带符号的8 8位二进制数补码数位二进制数补码数 。范围是:范围是:128 - +127128 - +127 寻址空间:寻址空间:ROMROM7 7种寻址方式及寻址空间,见课本表格。种寻址方式及寻址空间,见课本表格。3.2 AT89C513.2 AT89C51指令系统分类介绍指令系统分类介绍

8、111111条指令条指令,按功能分类,可分为下面,按功能分类,可分为下面5 5大类大类: (1 1)数据传送类)数据传送类(28(28条条) ) (2 2)算术操作类)算术操作类(24(24条条 (3 3)逻辑运算类)逻辑运算类(25(25条条) ) (4 4)控制转移类)控制转移类(17(17条条) ) (5 5)位操作类)位操作类(17(17条条) )当前寄存器区的当前寄存器区的8 8个工作寄存器个工作寄存器R0R0R7(n=0R7(n=07)7)。当前寄存器区中可作间接寻址寄存器的当前寄存器区中可作间接寻址寄存器的2 2个寄个寄存器存器R0R0、R1(i=0,1)R1(i=0,1)。直接

9、地址,直接地址,包含在包含在指令中的指令中的8 8位立即数位立即数。包含在包含在指令中的指令中的1616位立即数位立即数。相对转移指令中的偏移量,为相对转移指令中的偏移量,为8 8位的带符号补位的带符号补码数。码数。RnRiDirect#data#data16rel指令中符号的意义指令中符号的意义:数据指针数据指针,可用作,可用作1616位的数据地址寄存器。位的数据地址寄存器。内部内部RAMRAM或特殊功能寄存器中的或特殊功能寄存器中的直接寻址位直接寻址位。进位标志位或位处理机中的累加器。进位标志位或位处理机中的累加器。1111位目的地址位目的地址1616位目的地址位目的地址间接寻址寄存器前缀

10、,如间接寻址寄存器前缀,如RiRi,A+DPTRA+DPTRX X中的内容中的内容。由由X X寻址的单元中的内容寻址的单元中的内容。箭头右边的内容被箭头左边的内容所取代。箭头右边的内容被箭头左边的内容所取代。DPTRbitC(或(或Cy)addr11addr16(X)(X)3.2.1 3.2.1 数据传送类指令数据传送类指令 MOV MOV , 属“复制”性质,而不是“搬家”不影响标志位不影响标志位:Cy、Ac和OV,影响奇偶标志位P。操作数的形式:操作数的形式:A, Rn, Ri, direct, #data 1 1以以A A为目的为目的: : MOV A,Rn ; (Rn)A,n=07 M

11、OV A,Ri ; (Ri)A,i=0,1 MOV A,direct ;(direct)A MOV A,#data ; #dataA 例如:例如: MOV A,R6 ;(R6)A,寄存器寻址 MOV A,70H ;(70H)A,直接寻址 MOV A,R0 ;(R0)A,间接寻址 MOV A,#78H ;78HA,立即寻址2. 2. 以以RnRn为目的为目的MOV Rn, AMOV Rn, direct MOV Rn, #data3.3.以以directdirect为目的为目的 MOV direct, A ; MOV direct, Rn;MOV direct, Ri ; MOV direct,

12、 #data;MOV direct1, direct2; 4.4.以以RiRi为目的为目的: : MOV Ri, A MOV Ri, direct ; MOV Ri, #data ; 注:无注:无 MOV Rn,Rn MOV Rn,Ri MOV Ri, Rn MOV Ri, Ri 5. 16位数据传送指令:位数据传送指令:唯一的唯一的16位数据的传送指令位数据的传送指令 MOV DPTR,#data16 6堆栈操作指令堆栈操作指令PUSH directPOP direct(SP)+1SP,(direct)进栈进栈出栈数据出栈数据 direct, (SP)-1SP例:PUSH AccPUSH B

13、POP DPHPOP DPL7. A7. A与片外与片外RAM: RAM: MOVXMOVX MOVX A, DPTR MOVX A, DPTR ;(DPTR)A,读外部RAM/IO MOVX A, Ri MOVX A, Ri ;(Ri)A,读外部RAM/IO MOVX DPTR,A MOVX DPTR,A;(A)(DPTR),写外部RAM/IO MOVX Ri, A MOVX Ri, A ;(A)(Ri),写外部RAM/IO 注意:注意:RDRD*或或WRWR*信号有效。信号有效。8.8.查表指令查表指令 : :读读ROM ROM MOVCMOVC(1) MOVC A,A+PC(PC)+(A

14、)A例如例如: (A)=30H,执行地址执行地址1000H处的指令处的指令 1000H: MOVC A,A+PC; (1031H)A(2) MOVC A,A+DPTR(DPTR)+(A)A例如例如:(DPTR)=8100H (A)=40H 执行指令执行指令 MOVC A,A+DPTR缺点:表格只能存放在该条查表指令后面的缺点:表格只能存放在该条查表指令后面的256个单元之内,个单元之内,表格的大小受到限制,且表格只能被一段程序所利用。表格的大小受到限制,且表格只能被一段程序所利用。优点:表格的大小和位置可以在优点:表格的大小和位置可以在64K64K程序存储器中任意安排程序存储器中任意安排,一,

15、一个表格个表格可为各个程序块公用。可为各个程序块公用。 9 9字节交换指令字节交换指令XCH A, RnXCH A, directXCH A, Ri例如:例如: (A)=80H,(R7)=08H,(40H)=F0H (R0)=30H,(30H)=0FH执行下列指令:执行下列指令: XCH A,R7 ;(A)与与(R7)互换互换 XCH A,40H ;(A)与与(40H)互换互换 XCH A,R0 ;(A)与与(R0)互换互换 结果:结果:(A)=0FH,(R7)=80H,(40H)=08H,(30H)=F0H1010( (低低) )半字节交换指令半字节交换指令 XCHD A,RiXCHD A,

16、Ri则则(A)=5EH,(60H)=39H。例如:例如:(R0)=60H,(60H)=3EH,(A)=59H执行完执行完 XCHD A,R0 指令指令,3.1.2 3.1.2 算术操作类指令算术操作类指令 以以A A为目的操作数为目的操作数。影响。影响CyCy、AcAc、OVOV。但增但增1 1和减和减1 1指令不影指令不影响。响。1 1加法加法 ADDADDADD A, RnADD A, directADD A, RiADD A, #data影响影响Cy、Ac、OV对对标志位的影响:标志位的影响:(1 1)如果)如果位位7 7有进位有进位,则置,则置“1 1”进位标志进位标志CyCy,否则清

17、,否则清“0 0”CyCy(2 2)如果)如果位位3 3有进位有进位,置,置“1 1”辅助进位标志辅助进位标志AcAc,否则清,否则清“0 0”AcAc(3 3)如果位如果位6 6有进位,而位有进位,而位7 7没有进位,或者位没有进位,或者位7 7有进位,而位有进位,而位6 6没有,则溢出标志位没有,则溢出标志位OVOV置置“1 1”,否则清,否则清“0 0”OVOV。溢出标志位溢出标志位OVOV的状态,只有在的状态,只有在带符号数加法运算带符号数加法运算时才有意义时才有意义。当两个带符号数相加时,当两个带符号数相加时,OV=1OV=1,表示加法运算表示加法运算超出了超出了累加器累加器A A所

18、能表示的带符号数的有效范围。所能表示的带符号数的有效范围。 例例 (A)=53H(A)=53H,(R0)=FCH(R0)=FCH,执行指令,执行指令 ADD A,R0ADD A,R0结果结果: : 例例 (A)= 85H,(R0)=20H,(A)= 85H,(R0)=20H,(20H20H)=AFH=AFH,执行指令:,执行指令: ADD A,R0ADD A,R0 结果结果: :(A)=4FH,Cy=1,Ac=0,OV=0,P=1(A)=34H,Cy=1,Ac=1,OV=1,P=1 2 2带进位加法带进位加法 ADDCADDC ADDC A, Rn ADDC A, direct ADDC A,

19、 Ri ADDC A, #data 例:例:(A)=85H,(20H)=FFH,Cy=1,执行指令:,执行指令: ADDC A,20H结果为结果为:(A)=85H,Cy=1,Ac=1,OV=0,P=13 3增增1:INC1:INC INC A INC Rn INC direct INC Ri INC DPTR不影响标志不影响标志,除(除(A)+1影响影响P外。外。4 4带借位的减法指令带借位的减法指令 SUBB A,Rn SUBB A,directSUBB A,RiSUBB A,#data注无SUB位6位7不同时有借位时OV=1,否则为0 6 6减减1 1:DECDEC DEC A DEC R

20、n DEC direct DEC Ri不影响标志位。不影响标志位。 7 7乘法指令乘法指令 注:DEC DPTRMUL AB ;ABBA8 8除法指令除法指令 DIV AB ;A/BA(商),余数(商),余数BCy0,当积,当积255,则,则OV1Cy0,当,当(B)=0时,时,OV18十进制调整十进制调整2个压缩个压缩BCD码相加调整码相加调整 DA A两个两个BCD码码按二进制相加按二进制相加之后,必须经本指令的调之后,必须经本指令的调整整 才能得到正确的压缩才能得到正确的压缩BCD码的和数。码的和数。3.2.3 3.2.3 逻辑运算指令逻辑运算指令1. CLR A ;(;(A)=0 CP

21、L A ;AA不影响标志不影响标志2. RL A RR A RLC A RRC A除除Cy,不影响其它标志,不影响其它标志3累加器半字节交换指令累加器半字节交换指令 SWAP A4 4逻辑与:逻辑与:ANLANL ANL A, Rn ANL A, direct ANL A, #data ANL A, Ri ANL direct, A ANL direct, #data5 5逻辑或:逻辑或:ORLORL6 6逻辑异或:逻辑异或:XRLXRL同上例例 (A)=05H,(R0)=0FDH 执行指令:执行指令:ANL A, R0ORL A,R0XRL A,R0(A)=05H(A)=0FDH(A)=0F

22、8H结果结果:3.2.4 3.2.4 控制转移类指令控制转移类指令 1 1无条件转移指令无条件转移指令 跳转范围跳转范围AJMP addrll AJMP addrll SJMP relSJMP relLJMP addr16LJMP addr16JMP A+DPTRJMP A+DPTR2112KBrel:有符号数 前128B后127B之间21664KB间接转移 A 8位无符号数DPTR 16位 64KB跳转的目的地址PC+本条指令字节addr在编写程序时,在编写程序时,直接写上要转向的目标地址标号直接写上要转向的目标地址标号就可就可以。以。例如:例如: LOOPLOOP:MOV AMOV A,R

23、6 R6 SJMP LOOPSJMP LOOP 程序在汇编时,由程序在汇编时,由汇编程序汇编程序自动计算和填入偏移量自动计算和填入偏移量。5 5条件转移指令条件转移指令 注注; ; 皆短转移皆短转移 - -128128127127(1) 根据根据(A)=?0JZ relJNZ rel (2)比较不相等转移比较不相等转移:CJNECJNE A, direct, relCJNE A, #data, relCJNE Rn, #data, relCJNE Ri, #data, rel(3)(3)减减1 1不为不为0 0转移转移: DJNZ : DJNZ 用于循环用于循环DJNZ DJNZ RnRn, rel, rel;n=0;n=07 7DJNZ DJNZ direct,direct, re

温馨提示

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

评论

0/150

提交评论