单片机原理与应用李林功著指令系统_第1页
单片机原理与应用李林功著指令系统_第2页
单片机原理与应用李林功著指令系统_第3页
单片机原理与应用李林功著指令系统_第4页
单片机原理与应用李林功著指令系统_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

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

文档简介

1、第03章 指令系统与汇编语言程序设计3.1指令格式3.2 寻址方式3.3 数据传送类指令3.4 算术运算类指令3.5 逻辑运算类指令3.6 控制转移类指令3.7 位操作类指令MCS-51MCS-51单片机指令系统单片机指令系统3.1 MCS-513.1 MCS-51单片机指令格式单片机指令格式 标号:标号: 操作码助记符操作码助记符 目的操作数目的操作数 ,源操作数,源操作数 ;注释;注释 例如:例如:AAAA:ADD AADD A,10H 10H ;将累加器将累加器A A的内容与的内容与10H10H相加,结果存入累加器相加,结果存入累加器A AAAAA为标号,是这条指令的标志,其值是该条指令

2、的首地址;为标号,是这条指令的标志,其值是该条指令的首地址; ADDADD为操作码,说明要进行加法运算;为操作码,说明要进行加法运算; 目的操作数为累加器目的操作数为累加器A A; 源操作数为源操作数为10H10H; “;”后面为注释部分。后面为注释部分。MCS-51MCS-51单片机指令中常用的符号规定:单片机指令中常用的符号规定:1 1)A(ACC)A(ACC)累加器。累加器。2 2)BB专用寄存器,用于乘法和除法指令中。专用寄存器,用于乘法和除法指令中。3 3)CC进位标志或进位位,或布尔处理机中的累加位进位标志或进位位,或布尔处理机中的累加位( (器器) )4 4)DPTRDPTR数据

3、指针,可用作数据指针,可用作1616位地址寄存器。位地址寄存器。5) Rn5) Rn(n=07n=07)当前寄存器组的当前寄存器组的8 8个工作寄存器个工作寄存器R0R7R0R7,由由PSWPSW中的中的RS1RS1、RS0RS0决定当前使用的寄存器组。决定当前使用的寄存器组。6 6)RiRi(i=0i=0或或1 1)可用于间接寻址的两个寄存器可用于间接寻址的两个寄存器R0R0、R1R1。7)#data 87)#data 8位立即数位立即数8)#data16 168)#data16 16位立即数。位立即数。9)rel 9)rel 以补码形式表示的以补码形式表示的8 8位相对偏移量,范围为位相对

4、偏移量,范围为- -128127128127,主要用在相对寻址的指令中。,主要用在相对寻址的指令中。10)addr1610)addr16和和addr11 addr11 分别表示分别表示1616位直接地址和位直接地址和1111位直位直接地址。即存放操作数的存储器地址。接地址。即存放操作数的存储器地址。11)direct 11)direct 12)bit 12)bit 1313) 间接寻址中工作寄存器的前缀符号。间接寻址中工作寄存器的前缀符号。14)(X) X14)(X) X单元中的内容。单元中的内容。15)(X) 15)(X) 以以X X单元的内容为地址的存储器单元内容,即单元的内容为地址的存储

5、器单元内容,即(X)(X)作地址,该地址单元的内容用作地址,该地址单元的内容用(X)(X)表示。表示。1616)当前指令的地址。当前指令的地址。17)/ “/”17)/ “/”表示对该位操作数取反,但不影响该位的原值。表示对该位操作数取反,但不影响该位的原值。18)“”18)“”表示操作流程,将箭尾一方的内容送入箭头所表示操作流程,将箭尾一方的内容送入箭头所指的另一方单元中。指的另一方单元中。3.2 MCS-513.2 MCS-51单片机寻址方式单片机寻址方式1 1 立即数寻址立即数寻址立即寻址方式是指操作数包括在指令字节中,紧跟立即寻址方式是指操作数包括在指令字节中,紧跟在操作码的后面,作为

6、指令的一部分与操作码一起在操作码的后面,作为指令的一部分与操作码一起存放在程序存储器中。存放在程序存储器中。符号符号#为立即数前缀为立即数前缀【例例】: MOV AMOV A,#52H #52H ;A52H A52H MOV DPTRMOV DPTR,#5678H #5678H ;DPTR5678HDPTR5678H 2 2 寄存器寻址寄存器寻址 指令指定寄存器的名字,寄存器的内容为操作数指令指定寄存器的名字,寄存器的内容为操作数【例例】:MOV AMOV A,R0 R0 ;AA(R0R0)可用于寄存器寻址的寄存器有:可用于寄存器寻址的寄存器有:(1 1)四组工作寄存器)四组工作寄存器R0R7

7、R0R7共共3232个。个。(2 2)部分特殊功能寄存器)部分特殊功能寄存器A A、B B、DPTRDPTR等。等。3 3 寄存器间接寻址寄存器间接寻址 指令指定寄存器的名字,寄存器的内容为操作数的存储器地址。指令指定寄存器的名字,寄存器的内容为操作数的存储器地址。标志为寄存器名字前加标志为寄存器名字前加“”符号。符号。不同的存储空间要用不同的寄存器,规定如下:不同的存储空间要用不同的寄存器,规定如下:片内(片内(128B128B)间接用)间接用Ri,Ri,即即R1, R0R1, R0片外(片外(64KB64KB)间接用)间接用DPTRDPTR,即,即DPTRDPTR片外(低片外(低256B2

8、56B)可用)可用DPTRDPTR或或R1, R0R1, R0注意:寄存器间接寻址方式不能用于对特殊功能寄存器注意:寄存器间接寻址方式不能用于对特殊功能寄存器SFRSFR的寻址,的寻址,堆栈操作(堆栈操作(PUSHPUSH,POPPOP)为隐含的)为隐含的SPSP间接寻址。间接寻址。【例例】:MOV DPTRMOV DPTR,#3456H #3456H ;DPTR 3456HDPTR 3456HMOVX AMOVX A,DPTR DPTR ;A A (DPTRDPTR)假设(假设(3456H3456H)=99H=99H,指令运行后(,指令运行后(A A)=99H=99H。4 4 直接寻址直接寻

9、址指令中直接给出操作数的存储器地址,操作数在存储器中。指令中直接给出操作数的存储器地址,操作数在存储器中。 【例例】:MOV AMOV A,52H 52H ;A(52H);A(52H)基址寄存器加变址寄存器的间接寻址基址寄存器加变址寄存器的间接寻址三条变址指令三条变址指令MOVC AMOVC A, A+PC A+PC ;AA((A)+(A)+(PC)PC))MOVC AMOVC A, A+DPTR A+DPTR ;AA((A)+(A)+(DPTR)DPTR))JMP A+DPTR JMP A+DPTR ;PC(A)+PC(A)+(DPTR)DPTR)前两条指令是在程序存储器中取操作数;前两条指

10、令是在程序存储器中取操作数;第三条指令是要获得程序的跳转地址,实现程序的转移。第三条指令是要获得程序的跳转地址,实现程序的转移。5 5 变址寻址变址寻址【例例】:MOV A, #22HMOV A, #22HMOV DPTR, #63A0HMOV DPTR, #63A0HMOVC A, A+DPTR MOVC A, A+DPTR ;A(A((A A)+ +(DPTRDPTR)) )6 6 相对寻址相对寻址相对寻址以程序计数器相对寻址以程序计数器PCPC的当前值作为基地址,与指令中给的当前值作为基地址,与指令中给出的相对偏移量出的相对偏移量relrel进行相加,把所得之和作为程序的转移地进行相加,

11、把所得之和作为程序的转移地址址. .。在使用相对寻址时要注意以下两点:在使用相对寻址时要注意以下两点: (1) (1) 当前当前PCPC值是指相对转移指令的存储地址加上该指令的字值是指相对转移指令的存储地址加上该指令的字节数。节数。 (2) (2) 偏移量偏移量relrel是有符号的单字节数,以补码表示,其取值范围是有符号的单字节数,以补码表示,其取值范围是是-128+127(00HFFH)-128+127(00HFFH)。 目标地址目标地址 当前当前PCPC值值+ rel + rel 指令存储地址指令存储地址+ +指令字指令字节数节数+rel+rel【例例】:SJMP 08H SJMP 08

12、H ;PCPC+2+08HPCPC+2+08H设该指令首地址为设该指令首地址为2000H2000H,PCPC2 22002H2002H。因此程序转向(。因此程序转向(PCPC)+2+rel+2+rel2000H2000H2 208H 08H 200AH200AH单元。单元。7 7 位寻址位寻址位寻址是在指令中直接给出操作数的位地址。位寻址是在指令中直接给出操作数的位地址。 直接位地址直接位地址 【例例】:MOV CMOV C,0D5H 0D5H ;PSWPSW的位的位5 5(位地址(位地址D5HD5H) 点操作符点操作符. .【例例】:MOV CMOV C,PSW.5 PSW.5 MOV C,

13、 0D0H.5 MOV C, 0D0H.5位名称表示形式位名称表示形式【例例】:MOV CMOV C, F0F0 用户位定义用户位定义LED BIT P1.1LED BIT P1.1 MOV LED, C MOV LED, C寻址方式与寻址空间寻址方式与寻址空间寻址方式寻址方式利用的变量利用的变量 寻址空间寻址空间1 1立即寻址立即寻址#data#data程序存储器程序存储器2 2寄存器寻址寄存器寻址R0R0R7R7A AB BDPTRDPTR工作寄存器和部分工作寄存器和部分SFRSFR3 3寄存器间接寻寄存器间接寻址址R0R0R1R1SPSP片内片内RAMRAM低低128B128BR0R0R

14、1R1DPTRDPTR片外片外RAMRAM或外部或外部I/0I/0口口4 4直接寻址直接寻址directdirect片内片内RAMRAM低低128B128B和和SFRSFR5 5变址寻址变址寻址A+PCA+PCA+DPTRA+DPTR程序存储器程序存储器6 6相对寻址相对寻址PC+PC+偏移量偏移量程序存储器相对程序存储器相对PCPC当前值当前值256B256B7 7位寻址位寻址bitbit片内位寻址区和部分片内位寻址区和部分SFRSFR存储空间与寻址方式存储空间与寻址方式内部内部00H00H1FH1FH工作寄存器工作寄存器寄存器、直接、间接寄存器、直接、间接内部内部20H20H2FH2FH位

15、空间位空间位、直接、间接位、直接、间接内部内部30H30H7FH7FH用户用户RAMRAM直接、间接直接、间接内部内部80H80HFFHFFH特殊功能寄存器特殊功能寄存器SFRSFR直接、位(部分)直接、位(部分)外部外部RAMRAM间接间接外部外部ROMROM程序存储器程序存储器变址、相对变址、相对3.3 3.3 数据传送类指令数据传送类指令助记符有:助记符有:MOVMOV,MOVXMOVX,MOVCMOVC,XCHXCH,XCHDXCHD,PUSHPUSH,POPPOP,SWAPSWAP。格式:格式:MOV MOV 目的操作数目的操作数 , 源操作数源操作数 功能:目的操作数功能:目的操作

16、数 源操作数中的数据源操作数中的数据源操作数可以是:源操作数可以是:A A、RnRn、directdirect、RiRi、#data#data目的操作数可以是:目的操作数可以是:A A、RnRn、directdirect、RiRi注意:一般不影响标志,只有一种堆栈操作可能直注意:一般不影响标志,只有一种堆栈操作可能直接修改程序状态字接修改程序状态字PSWPSW。另外,如果目的操作数。另外,如果目的操作数为为ACCACC,将会影响奇偶标志,将会影响奇偶标志P P。指令指令功能功能标志位标志位解释解释POVACCYMOV A,directAA(direct)直接直接地址地址单元地址中的内容送到累加

17、器单元地址中的内容送到累加器AMOV A,#dataA#data立即数送到累加器立即数送到累加器A中中MOV A,RnA(Rn)Rn中的内容送到累加器中的内容送到累加器A中中MOV A,RiA(Ri)Ri内容指向的地址单元中的内容送到累加器内容指向的地址单元中的内容送到累加器A1. 以累加器以累加器A为目的操作数的传送指令(为目的操作数的传送指令(4条)条) 【例】: 设外部设外部RAMRAM(2023H2023H)=0FH=0FH,执行以下程序段:,执行以下程序段:MOV DPTRMOV DPTR,#2023H #2023H ;DPTR2023HDPTR2023HMOVX AMOVX A,D

18、PTR DPTR ;A(DPTR)A(DPTR)MOV 30HMOV 30H,A A ;30H(A)30H(A)MOV AMOV A,#00H #00H ;A00HA00HMOVX DPTRMOVX DPTR,A A ;(DPTR)(A)(DPTR)(A)程序段执行后,(程序段执行后,(DPTRDPTR)=2023H=2023H,(30H)=0FH(30H)=0FH,(A)=00H(A)=00H,(2023H)=00H(2023H)=00H,表示把片外,表示把片外RAM 2023HRAM 2023H单元的单元的内容内容0FH0FH送到内部送到内部RAMRAM的的30H30H单元,然后把外部单元

19、,然后把外部RAM RAM 2023H2023H单元和累加器单元和累加器A A清清0 0。若采用若采用R0R0和和R1R1间接寻址,必须把高间接寻址,必须把高8 8位地址先送到位地址先送到P2P2口,口,上述程序段将改为:上述程序段将改为:MOV P2MOV P2,#20H #20H ;P220HP220HMOV R0MOV R0,#23H #23H ;R023HR023HMOVX AMOVX A,R0 R0 ;A(2023H)A(2023H)MOV 30HMOV 30H,A A ;30H(A)30H(A)MOV AMOV A,00H 00H ;A00HA00HMOVX R0MOVX R0,A

20、 A ;2023H2023H(A A)2. 以寄存器以寄存器Rn为目的操作数的传送指令(为目的操作数的传送指令(3条)条)注意:没有以下指令MOV Rn,Rn;MOV Rn,Ri;MOV Ri,Rn指令指令功能功能标志位标志位解释解释POVACCYMOV Rn,directRn (direct)直接直接地地址单元中的内容送到寄存器址单元中的内容送到寄存器Rn中中MOV Rn,#dataRn #data立即数送到寄存器立即数送到寄存器Rn中中MOV Rn,ARn (A)累加器累加器A中的内容送到寄存器中的内容送到寄存器Rn中中【例】: 设内部设内部RAM(30H)=40HRAM(30H)=40H

21、,(40H)=10H(40H)=10H,(10H)=00H(10H)=00H,(P1)=0CAH(P1)=0CAH,分析以下程序执行后,各单元、,分析以下程序执行后,各单元、寄存器、寄存器、P2P2口的内容。口的内容。MOV R0MOV R0,#30H #30H ;R030HR030HMOV AMOV A,R0 R0 ;A(R0)A(R0)MOV R1MOV R1,A A ;R1(A)R1(A)MOV BMOV B,R1 R1 ;B(R1)B(R1)MOV R1MOV R1,P1 P1 ;(;((R1)(R1))(P1)(P1)MOV P2MOV P2,P1 P1 ;P2(P1)P2(P1)M

22、OV 10HMOV 10H,#20H #20H ;(10H)20H(10H)20H执行上述指令后,执行上述指令后,(R0)=30H(R0)=30H;(R1)=(A)=40H(R1)=(A)=40H;(B)=10H(B)=10H;(40H)=(P1)=(P2)=0CAH(40H)=(P1)=(P2)=0CAH;(10H)=20H(10H)=20H。3以直接地址为目的操作数的传送指令(以直接地址为目的操作数的传送指令(5条)条)注意:MOV direct1,direct2,翻译成机器码时,源地址在前,目的地址在后。例 MOV 20H, 30H 翻译为:85 30 20H指令指令功能功能标志位标志位

23、解释解释POVACCYMOV direct,directdirect(direct) 直接地址单元中的内容送到直接地直接地址单元中的内容送到直接地址单元址单元MOV direct,#datadirect #data立即数送到直接地址单元立即数送到直接地址单元MOV direct,Adirect (A)累加器累加器A的内容送到直接地址单元的内容送到直接地址单元MOV direct,Rndirect (Rn)寄存器寄存器Rn的内容送到直接地址单的内容送到直接地址单元元MOV direct,Ridirect(Ri)寄存器寄存器Ri中的内容指定的存储单元中的内容指定的存储单元中的数据送到直接地址单元中

24、的数据送到直接地址单元4. 以间接地址为目的操作数的传送指令(以间接地址为目的操作数的传送指令(3条)条)指令指令功能功能标志位标志位解释解释P OVACCYMOV Ri,direct(Ri)(direct) 直接地址单元中的内容送到以直接地址单元中的内容送到以Ri中的内容为地址的中的内容为地址的RAM单元单元MOV Ri,#data(Ri)#data 立即数送到以立即数送到以Ri中的内容为地中的内容为地址的址的RAM单元单元MOV Ri,A(Ri)(A) 累加器累加器A中的内容送到以中的内容送到以Ri中的中的内容为地址的内容为地址的RAM单元单元5查表指令(查表指令(2条)条)指令指令功能功

25、能标志位标志位解释解释P OVACCYMOVC A,A+DPTRA (A)+(DPTR)DPTR的内容加上的内容加上A的内容作为存储器地的内容作为存储器地址,址,将该地址单元中将该地址单元中的内容送到累加器的内容送到累加器A中中MOVC A,A+PCPC (PC)+1A(A)+(PC)PC的内容加上的内容加上1,再,再加上加上A的内容作为存的内容作为存储器地址,储器地址,将该地址将该地址单元中的内容送到累单元中的内容送到累加器加器A中中【例例】:编一查表程序将内部:编一查表程序将内部ROM40HROM40H单元内的数单元内的数(0909)的平方存入内部)的平方存入内部RAM50HRAM50H单

26、元。单元。 MOV AMOV A,40H 40H ;40H40H单元的数送单元的数送A A MOV DPTRMOV DPTR,#TAB #TAB ;DPTRDPTR指向表头指向表头 MOVC AMOVC A, A+DPTR A+DPTR ;查表;查表 MOV 50HMOV 50H,A A ;结果存;结果存50H50H SJMP $ SJMP $ ;等待;等待TAB: DB 0TAB: DB 0,1 1,4 4,9 9, 81 81 【例例】:编一查表程序将内部:编一查表程序将内部RAM40HRAM40H单元内的数单元内的数(0909)的平方存入内部)的平方存入内部RAM50HRAM50H单元。

27、单元。002100219 = 339 = 3300204 = 2200191 = 1100180 = 000017SJMP $0016MOV 50H,A 0014MOVC A, A+DPTR 0012MOV DPTR,#TAB 0010MOV A,40H 地址指令TABROM平方数据表平方数据表50H50H40H2RAM6累加器累加器A与片外数据存储器的传送指令(与片外数据存储器的传送指令(4条)条)指令指令功能功能标志位标志位解释解释POVACCYMOVX DPTR,A(DPTR) (A)累加器中的内容送到数据指针指累加器中的内容送到数据指针指向的片外向的片外RAM地址中地址中MOVX A,

28、DPTRA (DPTR)数据指针指向的片外数据指针指向的片外RAM地址中地址中的内容送到累加器的内容送到累加器A中中MOVX A,RiA (Ri)寄存器寄存器Ri指向的片外指向的片外RAM地址中地址中的内容送到累加器的内容送到累加器A中中MOVX Ri,A(Ri) (A)累加器中的内容送到寄存器累加器中的内容送到寄存器Ri指指向的片外向的片外RAM地址中地址中注意:在堆栈指令中只能用ACC,不能用A,属于直接寻址。7堆栈操作类指令(堆栈操作类指令(2条)条)指令指令功能功能标志位标志位解释解释POVACCYPUSH directSP(SP)+1,SP (direct)堆栈指针首先加堆栈指针首先

29、加1,直接寻址单元中的,直接寻址单元中的数据送到堆栈指针数据送到堆栈指针SP所指的单元中所指的单元中POP directdirect (SP),),SP(SP)-1堆栈指针堆栈指针SP所指的单元数据送到直接所指的单元数据送到直接寻址单元中,堆栈指针寻址单元中,堆栈指针SP减减1.【例】:进入中断服务程序时,常把程序状态寄存器:进入中断服务程序时,常把程序状态寄存器PSWPSW、累加器累加器A A、数据指针、数据指针DPTRDPTR进栈保护。设当前进栈保护。设当前SPSP为为60H60H。则。则程序段程序段 MOV SPMOV SP,#60H#60H PUSH PSW PUSH PSW PUSH

30、 ACC PUSH ACC PUSH DPL PUSH DPL PUSH DPH PUSH DPH执行后,执行后,SPSP内容修改为内容修改为64H64H,而,而61H61H、62H62H、63H63H、64H64H单元中依次存入单元中依次存入PSWPSW、A A、DPLDPL、DPHDPH的内容。的内容。65H64HDPH63HDPL62HACC61HPSW60H40HRAMSP堆栈区堆栈区【例】:在中断服务程序结束之前,用下列程序段恢复数据。:在中断服务程序结束之前,用下列程序段恢复数据。POP DPHPOP DPHPOP DPLPOP DPLPOP ACCPOP ACCPOP PSWPO

31、P PSW指令执行之后,指令执行之后,SPSP内容修改为内容修改为60H60H,而,而64H64H、63H63H、6262、61H61H单元的内容依次弹出到单元的内容依次弹出到DPHDPH、DPLDPL、A A、PSWPSW中。保护中。保护数据时,进栈、出栈的次序一定要符合数据时,进栈、出栈的次序一定要符合“先进后出先进后出”的原则。的原则。8交换指令(交换指令(5条)条)指令指令功能功能标志位标志位解释解释POVACCYXCH A,Rn(A)(Rn)累加器与工作寄存器累加器与工作寄存器Rn的内容互换的内容互换XCH A,Ri(A)(Ri)累加器与工作寄存器累加器与工作寄存器Ri所指的存储所指

32、的存储单元中的内容互换单元中的内容互换XCH A,direct(A)(direct)累加器与直接地址单元中的内容互累加器与直接地址单元中的内容互换换XCHD A,Ri(A3-0)(Ri)3-0) 累加器与工作寄存器累加器与工作寄存器Ri所指的存储所指的存储单元中的内容低半字节互换单元中的内容低半字节互换SWAP A(A3-0)(A7-4)累加器中的内容高低半字节互换累加器中的内容高低半字节互换【例例】:设(R0)30H,(A)65H,(30H)8FH执行指令:XCH A,R0;(R0)30H,(A)8FH,(30H)65HXCHD A, R0 ;(R0)30H,(A)6FH,(30H)85HS

33、WAP A ;(A)56H指令指令功能功能标志位标志位解释解释POVACCYMOV DPTR,#data16DPH#dataH,DPL#dataL16位常数的高位常数的高8位送到位送到DPH,低,低8位送到位送到DPL9. 16位数据传送指令(位数据传送指令(1条)条)【例】:将片内:将片内RAM30HRAM30H单元与单元与40H40H单元中的内容互换。单元中的内容互换。方法方法1 1(直接地址传送法):(直接地址传送法): MOV 31HMOV 31H,30H30H MOV 30HMOV 30H,40H40H MOV 40HMOV 40H,31H31H SJMPSJMP $ $方法方法2

34、2(间接地址传送法):(间接地址传送法): MOV R0MOV R0,#40H#40H MOV R1MOV R1,#30H#30H MOV AMOV A,R0R0 MOV B MOV B ,R1R1 MOV R1MOV R1,A A MOV R0MOV R0,B B SJMP $SJMP $方法方法3 3(字节交换传送法):(字节交换传送法): MOV AMOV A,30H30H XCH AXCH A,40H40H MOV 30HMOV 30H,A A SJMP $SJMP $方法方法4 4(堆栈传送法):(堆栈传送法): PUSH 30HPUSH 30H PUSH 40HPUSH 40H P

35、OP 30HPOP 30H POP 40HPOP 40H SJMP $SJMP $3.4 3.4 算术运算类指令算术运算类指令算术运算指令共有算术运算指令共有2424条条算术运算主要是执行加、减、乘、除法算术运算主要是执行加、减、乘、除法四则运算;加四则运算;加1 1、减、减1 1操作及操作及BCDBCD码的运算码的运算调整调整利用进位标志利用进位标志C C,可进行多字节无符号整,可进行多字节无符号整数运算数运算利用溢出标志,还可以对带符号数进行利用溢出标志,还可以对带符号数进行补码运算补码运算除加除加1 1、减、减1 1指令外,这类指令都对指令外,这类指令都对PSWPSW有影响有影响 Mne

36、monicDescriptionByteCycleADD A,RnAdds the register to the accumulator11ADD A,directAdds the direct byte to the accumulator22ADD A,RiAdds the indirect RAM to the accumulator12ADD A,#dataAdds the immediate data to the accumulator22ADDC A,RnAdds the register to the accumulator with a carry flag11ADDC A

37、,directAdds the direct byte to the accumulator with a carry flag22ADDC A,RiAdds the indirect RAM to the accumulator with a carry flag12ADDC A,#dataAdds the immediate data to the accumulator with a carry flag22SUBB A,RnSubtracts the register from the accumulator with a borrow11SUBB A,directSubtracts

38、the direct byte from the accumulator with a borrow22SUBB A,RiSubtracts the indirect RAM from the accumulator with a borrow12SUBB A,#dataSubtracts the immediate data from the accumulator with a borrow221.加法指令(加法指令(4条)条)指令指令功能功能标志位标志位解释解释P OVACCYADD A,#dataA(A)#data累加器累加器A中的内容与立即数中的内容与立即数#data相加,结果存在相

39、加,结果存在A中中ADD A,directA(A)()(direct)累加器累加器A中的内容与直接地址中的内容与直接地址单元中的内容相加,结果存在单元中的内容相加,结果存在A中中ADD A,RnA (A)+(Rn)累加器累加器A中的内容与工作寄存中的内容与工作寄存器器Rn中的内容相加,结果存中的内容相加,结果存在在A中中ADD A,RiA(A)+(Ri)累加器累加器A中的内容与工作寄存中的内容与工作寄存器器Ri所指向地址单元中的内容所指向地址单元中的内容相加,结果存在相加,结果存在A中中各标志位的形成方法:各标志位的形成方法:如果位如果位7 7有进位输出,则置位有进位输出,则置位CYCY,否则

40、清,否则清CYCY;如果位如果位3 3有进位输出,则置位有进位输出,则置位ACAC,否则清,否则清ACAC; OV=CY7OV=CY7 CY6CY6。若累加器若累加器A A中中1 1的个数为奇数,则的个数为奇数,则P=1P=1,否则,否则,P P0 0。CYCYACACF0F0RS1RS1RS0RS0OVOV-P P【例】:设:设(A)=85H(A)=85H,(R1)=30H(R1)=30H,(30H)=0AFH(30H)=0AFH,执行指令:执行指令:ADD AADD A,R1R1 1000 0101 1000 0101 1010 11111010 1111 1 0011 0100 1 00

41、11 0100执行结果为:执行结果为:(A)=34H(A)=34H,CY=1CY=1,AC=1AC=1,OV=1OV=1,P=1P=1对于加法,溢出只能发生在两个加数符号相同的情对于加法,溢出只能发生在两个加数符号相同的情况。在进行带符号数的加法运算时,溢出标志况。在进行带符号数的加法运算时,溢出标志OVOV1 1表示有溢出发生(即和大于表示有溢出发生(即和大于127127或小于或小于128128)。)。指令指令功能功能标志位标志位解释解释POVACCYADDC A,directA(A)+(direct)+(CY)累加器累加器A中的内容与直接地中的内容与直接地址单元的内容连同进位位址单元的内容

42、连同进位位相加,结果存在相加,结果存在A中中ADDC A,#dataA (A)+ #data +(CY)累加器累加器A中的内容与立即数中的内容与立即数连同进位位相加,结果存连同进位位相加,结果存在在A中中ADDC A,RnA(A)+ (Rn) +(CY)累加器累加器A中的内容与工作寄中的内容与工作寄存器存器Rn中的内容、连同进中的内容、连同进位位相加,结果存在位位相加,结果存在A中中ADDC A,RiA(A)+(Ri)+(CY)累加器累加器A中的内容与工作寄中的内容与工作寄存器存器Ri指向的地址单元中指向的地址单元中的内容、连同进位位相加,的内容、连同进位位相加,结果存在结果存在A中中2. 带

43、进位加法指令(带进位加法指令(4条)条)3. 带借位减法指令(带借位减法指令(4条)条)指令指令功能功能标志位标志位解释解释POVACCYSUBB A,directA(A)-(direct)-(CY)累加器累加器A中的内容减去直中的内容减去直接地址单元中的内容再减接地址单元中的内容再减借位位,结果存在借位位,结果存在A中中SUBB A,#dataA(A)- #data -(CY) 累加器累加器A中的内容减立即中的内容减立即数再减借位位,结果存在数再减借位位,结果存在A中中SUBB A,RnA(A)-(Rn)-(CY)累加器累加器A中的内容减工作中的内容减工作寄存器中的内容再减借位寄存器中的内容

44、再减借位位,结果存在位,结果存在A中中SUBB A,RiA(A)-(Ri)-(CY)累加器累加器A中的内容减工作中的内容减工作寄存器寄存器Ri指向的地址单元指向的地址单元中的内容再减借位位,结中的内容再减借位位,结果存在果存在A中中在减法运算中在减法运算中CY=1CY=1表示有借位,表示有借位,CY=0CY=0则无借位。则无借位。OV=1OV=1表明带符号数相减时,从一个正数减去一个负数结果表明带符号数相减时,从一个正数减去一个负数结果为负数,或者从一个负数中减去一个正数结果为正数的错误为负数,或者从一个负数中减去一个正数结果为正数的错误情况。情况。在进行减法运算前,如果不知道借位标志位在进行

45、减法运算前,如果不知道借位标志位C C的状态,则应的状态,则应先对先对CYCY进行清零操作。进行清零操作。如果要进行不带借位减法,只需把如果要进行不带借位减法,只需把CYCY先清零先清零【例】:设(设(A A)=0C9H=0C9H,(R3)=54H(R3)=54H,(CY)=1(CY)=1,执行指令:,执行指令:SUBB ASUBB A,R3R3 1100 1001 1100 1001 - 0000 0001 - 0000 0001 1100 1000 1100 1000 - 0101 0100 - 0101 0100 0111 0100 0111 0100 结果:结果:(A)=74H(A)=

46、74H,Cy=0Cy=0,AC=0AC=0,OV=1OV=1,P=0P=0在乘法运算时,如果OV=1,说明乘积大于FFH,否则OV=0,但进位标志位CY总是等于0。【例】:若(A)=80H=128,(B)=32H=50,执行指令:MUL AB结果:(B)=19H,(A)=00H,OV=1,CY=04. 乘法指令(乘法指令(1条)条)指令指令功能功能标志位标志位解释解释POVACCYMUL ABBA(A)(B) 累加器累加器A中的内容与寄存器中的内容与寄存器B中的中的内容相乘,乘积低内容相乘,乘积低8位存在位存在A、高、高8位存位存B除法运算总是使进位标志位CY等于0。如果OV=1,表明寄存器B

47、中的内容为00H,那么执行结果为不确定值,表示除法有溢出。【例】:设(A)=0BFH,(B)=32H,执行指令:DIV AB结果: (A)=03H,(B)=29H,CY=0,OV=05除法指令(除法指令(1条)条)指令指令功能功能标志位标志位解释解释POVACCYDIV ABA(A)(B)的商的商B(A)(B)的余的余数数累加器累加器A中的内容除以寄存器中的内容除以寄存器B中的内容,所中的内容,所得到的商存得到的商存A,余数存,余数存B中中6加加1指令(指令(5条)条)指令指令功能功能标志位标志位解释解释POVACCYINC AA(A)+1累加器累加器A中的内容加中的内容加1,结果存在,结果存

48、在A中中INC directdirect (direct) +1直接地址单元中的内容加直接地址单元中的内容加1,结果送回原地址,结果送回原地址单元单元INC Ri(Ri)(Ri))+1寄存器的内容指向的地址单元中的内容加寄存器的内容指向的地址单元中的内容加1,结果送回原地址单元中结果送回原地址单元中INC RnRn(Rn)+1寄存器寄存器Rn的内容加的内容加1,结果送回原地址单元中,结果送回原地址单元中INC DPTRDPTR (DPTR) +1数据指针的内容加数据指针的内容加1,结果送回数据指针中,结果送回数据指针中在在INC directINC direct指令中,如果直接地址是指令中,如

49、果直接地址是I/OI/O口,其功能是先口,其功能是先读入读入I/OI/O锁存器的内容,然后在锁存器的内容,然后在CPUCPU进行加进行加1 1操作,再输出操作,再输出到到I/OI/O口中,这就是口中,这就是“读读修改修改写写”操作。加操作。加1 1指令不影指令不影响标志。响标志。如果原寄存器的内容为如果原寄存器的内容为FFHFFH,执行加,执行加1 1后,结果就会是后,结果就会是00H00H。但不会影响标志。但不会影响标志。减1操作不影响标志位。实现“读修改写”操作7减减1指令(指令(4条)条)指令指令功能功能标志位标志位解释解释POVACCYDEC AA(A)-1累加器累加器A中的内容减中的

50、内容减1,结果送回累加器,结果送回累加器A中中DEC directdirect (direct)-1直接地址单元中的内容减直接地址单元中的内容减1,结果送回直接地址,结果送回直接地址单元中单元中DEC Ri(Ri)(Ri)-1寄存器寄存器Ri指向的地址单元中的内容减指向的地址单元中的内容减1,结果送,结果送回原地址单元中回原地址单元中DEC RnRn(Rn)-1寄存器寄存器Rn中的内容减中的内容减1,结果送回寄存器,结果送回寄存器Rn中中在进行BCD码运算时,这条指令总是跟在ADD或ADDC指令之后,其功能是对执行加法运算后存于累加器A中的结果进行调整。注意: DA A 只能用于加法运算8十进

51、制调整指令(十进制调整指令(1条)条)指令指令标志位标志位解释解释POVACCYDA A对累加器对累加器A中的中的BCD码运算结果进行调整码运算结果进行调整【例例】:有两个:有两个BCDBCD数数3636与与4545相加,结果相加,结果应为应为BCDBCD码码8181,程序如下:,程序如下:MOV AMOV A,#36H#36HADD AADD A,#45H#45HDA ADA A 加法指令执行后得结果加法指令执行后得结果7BH7BH;第三条指;第三条指令对累加器令对累加器A A中的结构进行十进制调整,低中的结构进行十进制调整,低4 4位(为位(为0BH0BH)大于)大于9 9,因此要加,因此

52、要加6 6,最后得到,最后得到调整的调整的BCDBCD码为码为8181。 3.5 3.5 逻辑运算类指令逻辑运算类指令逻辑运算指令共有逻辑运算指令共有2424条条有与、或、异或、求反、左右移位、清有与、或、异或、求反、左右移位、清0 0等逻辑操作等逻辑操作有直接、寄存器和寄存器间址等寻址方式。有直接、寄存器和寄存器间址等寻址方式。 1. 清零指令(清零指令(1条)条)指令指令功能功能标志位标志位解释解释 POVACCYCLR AA 0 累加器累加器A中的内容清中的内容清02求反指令(求反指令(1条条)指令指令功能功能标志位标志位解释解释POVACCYCPL AAA( ) 累加器累加器A中的内容

53、按位中的内容按位取反取反A【例例】: MOV A, #04H MOV A, #04H ;(A)=04(A)=04 RL A RL A ; (A)=08(A)=08RR A RR A ;(A)=04(A)=04逻辑左移一位相当于乘逻辑左移一位相当于乘2 2,逻辑右移一位相当于除,逻辑右移一位相当于除2 2。4 逻辑与操作指令(逻辑与操作指令(6条)条)指令指令功能功能标志位标志位解释解释POVACCYANL A,directA(A)(direct)累加器累加器A中的内容和直接地址单元中的内中的内容和直接地址单元中的内容执行与逻辑操作。结果存在累加器容执行与逻辑操作。结果存在累加器A中中ANL A

54、,#dataA(A) #data累加器累加器A的内容和立即数执行与操作。结的内容和立即数执行与操作。结果存在累加器果存在累加器A中中ANL A,RnA(A)(Rn)累加器累加器A的内容和寄存器的内容和寄存器Rn中的内容执行中的内容执行与逻辑操作。结果存在累加器与逻辑操作。结果存在累加器A中中ANL A,RiA(A)(Ri)累加器累加器A的内容和工作寄存器的内容和工作寄存器Ri指向的地指向的地址单元的内容执行与操作。结果存在累加址单元的内容执行与操作。结果存在累加器器A中中ANL direct,Adirect (direct)(A)直接地址单元中的内容和累加器直接地址单元中的内容和累加器A的内容

55、的内容执行与逻辑操作。结果存在直接地址单元执行与逻辑操作。结果存在直接地址单元中中ANL direct,#datadirect (direct) #data直接地址单元中的内容和立即数执行与逻直接地址单元中的内容和立即数执行与逻辑操作。结果存在直接地址单元中辑操作。结果存在直接地址单元中5.逻辑或操作指令(逻辑或操作指令(6条)条)指令指令功能功能标志位标志位解释解释POVACCYORL A,directA(A)(direct)累加器累加器A中的内容和直接地址单元中的内容执中的内容和直接地址单元中的内容执行逻辑或操作。结果存在行逻辑或操作。结果存在累加累加器器A中中ORL A,#dataA(A

56、) #data累加器累加器A的内容和立即数执行逻辑或操作。结的内容和立即数执行逻辑或操作。结果存在累加器果存在累加器A中中ORL A,RnA(A)(Rn)累加器累加器A的内容和寄存器的内容和寄存器Rn的内容执行逻辑或的内容执行逻辑或操作。结果存在累加器操作。结果存在累加器A中中ORL A,RiA(A)(Ri)累加器累加器A的内容和工作寄存器的内容和工作寄存器Ri指向的地址单指向的地址单元中的内容执行逻辑或操作。结果存在累加器元中的内容执行逻辑或操作。结果存在累加器A中中ORL direct,Adirect (direct)(A)直接地址单元中的内容和累加器直接地址单元中的内容和累加器A的内容执

57、行的内容执行逻辑或操作。结果存在直接地址单元中逻辑或操作。结果存在直接地址单元中ORL direct,#datadirect (direct)#data直接地址单元中的内容和立即数执行逻辑或操直接地址单元中的内容和立即数执行逻辑或操作。结果存在直接地址单元中作。结果存在直接地址单元中6.逻辑异或操作指令(逻辑异或操作指令(6条)条)指令指令功能功能标志位标志位解释解释POVACCYXRL A,directAA(A A) (directdirect) 累加器累加器A中的内容和直接地址单元中的内容和直接地址单元中的内容执行逻辑异或操作。结果中的内容执行逻辑异或操作。结果存在寄存器存在寄存器A中中X

58、RL A,RiAA(A A) (RiRi) 累加器累加器A的内容和工作寄存器的内容和工作寄存器Ri指指向的地址单元中的内容执行逻辑异向的地址单元中的内容执行逻辑异或操作。结果存在累加器或操作。结果存在累加器A中中XRL A,#dataAA(A A) #data#data累加器累加器A的内容和立即数执行逻辑的内容和立即数执行逻辑异或操作。结果存在累加器异或操作。结果存在累加器A中中XRL A,RnAA(A A) (RnRn) 累加器累加器A的内容和寄存器的内容和寄存器Rn中的内中的内容执行逻辑异或操作。结果存在累容执行逻辑异或操作。结果存在累加器加器A中中XRL direct,Adirect d

59、irect (directdirect) (A A) 直接地址单元中的内容和累加器直接地址单元中的内容和累加器A的内容执行逻辑异或操作。结果存的内容执行逻辑异或操作。结果存在直接地址单元中在直接地址单元中XRL direct,#datadirect(direct) #datadirect(direct) #data直接地址单元中的内容和立即数执直接地址单元中的内容和立即数执行逻辑异或操作。结果存在直接地行逻辑异或操作。结果存在直接地址单元中址单元中【例】:利用逻辑运算指令,可以模拟各种硬件逻辑电路。如下图所示的组合逻辑电路,试编写一程序模拟其功能。设输入信号放在X、Y、Z单元中,输出信号放在F

60、单元。参考程序如下:MOV A,X ;A (X)ANL A,Y;A (A)(Y)MOV R1,A;A内容暂存MOV A,Y;A (Y) XRL A,Z;A (Y)(Z) CPL A ; A )()(ORL A,R1;得到输出MOV F,A;存输出SJMP $3.6 3.6 控制转移类指令控制转移类指令控制转移指令共控制转移指令共1717条条可对可对64kB64kB程序空间地址单元进行访问的长调用、长程序空间地址单元进行访问的长调用、长转移指令,也有可对转移指令,也有可对2kB2kB字节进行访问的绝对调用和字节进行访问的绝对调用和绝对转移指令,还有短相对转移及无条件转移指令绝对转移指令,还有短相

温馨提示

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

评论

0/150

提交评论