单片机原理与应用第三章课件.ppt

上传人(卖家):三亚风情 文档编号:3504481 上传时间:2022-09-08 格式:PPT 页数:73 大小:1.55MB
下载 相关 举报
单片机原理与应用第三章课件.ppt_第1页
第1页 / 共73页
单片机原理与应用第三章课件.ppt_第2页
第2页 / 共73页
单片机原理与应用第三章课件.ppt_第3页
第3页 / 共73页
单片机原理与应用第三章课件.ppt_第4页
第4页 / 共73页
单片机原理与应用第三章课件.ppt_第5页
第5页 / 共73页
点击查看更多>>
资源描述

1、v3-1 指令格式指令格式v3-2 寻址方式寻址方式v3-3 数据传送指令数据传送指令v3-4 算术运算指令算术运算指令v3-5 逻辑运算指令逻辑运算指令v3-6 位操作指令位操作指令v3-7 控制转移指令控制转移指令3-1 指令格式指令格式标号:标号:操作码操作码 操作数操作数1,操作数操作数2,操作数操作数3;注释;注释 例:例:LOOP:MOV A,#40H;40H-A 标号:标号:指令地址的标志符号。以字母开始,后跟指令地址的标志符号。以字母开始,后跟1 18 8个字个字母或数字或母或数字或“_ _”,并以冒号,并以冒号“:”结尾。结尾。操作码:操作码:指明指令功能。指明指令功能。25

2、个字母。个字母。MOV 传送传送ANL 逻辑与逻辑与MUL 乘法乘法RR 右循环右循环SJMP 短跳转短跳转RET 子程序返回子程序返回例:例:3-1 指令格式指令格式标号:标号:操作码操作码 操作数操作数1,操作数操作数2;注释;注释 例:例:LOOP:MOV A,#40H;40H-A 操作数:操作数:指令操作的对象,可以是数据、地址、寄存器名及指令操作的对象,可以是数据、地址、寄存器名及约定符号。约定符号。注释行:注释行:说明说明指令在程序中的作用。指令在程序中的作用。操作码操作码和和操作数操作数是指令主体。是指令主体。3-1 指令格式指令格式 注意以下一些常用符号:注意以下一些常用符号:

3、data 立即数立即数 direct 直接地址直接地址 Ri 以以Ri里面的内容为物理地址的存储单元里面的内容为物理地址的存储单元(i=0、1)Rn 工作寄存器工作寄存器(n=07)1.1.定位伪指令定位伪指令 格式:格式:ORG mORG m 例例3-33-3 ORG 0000HORG 0000H START START:SJMP SJMP MAIN MAIN ORG ORG 0030H 0030H MAIN MAIN:MOV MOV SP SP,#30H#30H 以以STARTSTART开始的程序汇编为机器码后从开始的程序汇编为机器码后从00000000H H存贮单元开始连续存放。存贮单元

4、开始连续存放。3-1 指令格式指令格式二、二、汇编时不产生机器码汇编时不产生机器码2.2.汇编结束伪指令汇编结束伪指令 格式:格式:ENDEND3.3.定义字节伪指令定义字节伪指令 格式:格式:DB X1,X2,DB X1,X2,XnXn 例例3-43-4 ORG ORG 7F00H 7F00H DB DB 01110010B 01110010B,16H16H,4545,8 8,A A 汇编后存贮单元内容为:汇编后存贮单元内容为:(7 7F00HF00H)=72H=72H (7F01H7F01H)=16H=16H (7F02H7F02H)=2DH =2DH (7F03H7F03H)=38H=3

5、8H (7F04H7F04H)=40H=40H 4.4.定义字伪指令定义字伪指令 格式:格式:DW YDW Y1 1,Y Y2 2,Y Yn n高高高八高八位放入低地址单元,低八位放入位放入低地址单元,低八位放入高地址高地址单元!单元!3-1 指令格式指令格式二、二、汇编时不产生机器码5定义空间伪指令:定义空间伪指令:DSDS 表达式表达式 例例3-63-6 ORGORG 0F00H 0F00H DSDS10H10H DB DB20H20H,40H40H 汇编后,从汇编后,从0 0F00HF00H开始,保留开始,保留1616个字节的内存单元,个字节的内存单元,然后从然后从0 0F10HF10H

6、开始,按照下一条开始,按照下一条DBDB伪指令给内存单元赋值,伪指令给内存单元赋值,得(得(0 0F10HF10H)=20H=20H,(,(0F11H0F11H)=40H=40H。3-1 指令格式指令格式二、二、汇编时不产生机器码DBDB、DWDW、DSDS伪指令都只对伪指令都只对ROMROM起作用!起作用!例例3-73-7 ORG 8500H AA EQU R1 A10 EQU 10H DELAY EQU 87E6H MOV R0,A10 ;R0(10H)MOV A,AA ;A(R1)LCALL DELAY;调用起始地址为调用起始地址为87E6H的子程序的子程序 END3-1 指令格式指令格

7、式二、二、汇编时不产生机器码汇编时不产生机器码6等值伪指令:等值伪指令:EQUEQU数据或汇编符数据或汇编符EQU赋值后,赋值后,AA为寄存器为寄存器R1,A10为为8位直接地址位直接地址10H,DELAY为为16位地址位地址87E6H。字符名称必须先赋值后使用,通常在源程序的开头赋值!字符名称必须先赋值后使用,通常在源程序的开头赋值!7数据地址赋值伪指令数据地址赋值伪指令 格式:格式:DATA DATA 表达式表达式 3-1 指令格式指令格式二、二、汇编时不产生机器码8位地址赋值伪指令位地址赋值伪指令 格式:格式:BITBIT 位地址位地址 一一、立即寻址方式立即寻址方式指令中给出实际操作数

8、据指令中给出实际操作数据(立即数立即数),以指令字节的形式存放在,以指令字节的形式存放在ROMROM中。一般用于为寄存器或存储器赋常数初值。中。一般用于为寄存器或存储器赋常数初值。例:例:8 8位立即数:位立即数:MOV AMOV A,#40H#40H ;A A40H40H 16 16位立即数:位立即数:MOV DPTRMOV DPTR,#2100H#2100H;DPTRDPTR2100H2100H DPH DPH 21H21H DPL DPL 00H00H3-2 指令寻址方式(指令如何给出参与运算的操作数)指令寻址方式(指令如何给出参与运算的操作数)寻找操作数的方法叫寻址方式。寻找操作数的方

9、法叫寻址方式。二、二、直接寻址方式直接寻址方式 指令操作数是存储器单元地址,数据在存储器单元中。指令操作数是存储器单元地址,数据在存储器单元中。MOV AMOV A,40H40H;A A(40H)(40H)例:例:设存储器两个单元的内容如图所示,设存储器两个单元的内容如图所示,执行指令执行指令 MOV AMOV A,40H 40H 后(后(A A)=?直接寻址方式对数据操作时,直接寻址方式对数据操作时,地址是固定值地址是固定值,而地址所指,而地址所指 定的单元内容为变量形式。定的单元内容为变量形式。SFRSFR只能采用直接寻址方式访问只能采用直接寻址方式访问,可以用,可以用 物理地址,也可以用

10、寄存器标号物理地址,也可以用寄存器标号(推荐)。(推荐)。例:例:累加器累加器A E0H ACCA E0H ACC 程序状态字程序状态字 D0H PSWD0H PSW41H 78H40H 56H56H 三、三、寄存器寻址方式寄存器寻址方式 指令操作数为寄存器名指令操作数为寄存器名(RnRn),数据在寄存器中。,数据在寄存器中。例例:MOV AMOV A,R0R0;A A(R0R0)设指令执行前设指令执行前 (A A)=20H=20H,(R0R0)=40H=40H,执行指令后,(执行指令后,(A A)=?,?,(R0R0)=?41H 67H40H 34H40H40H四、四、寄存器间接寻址方式寄存

11、器间接寻址方式 指令的操作数为寄存器名,寄存器中为数据地址。指令的操作数为寄存器名,寄存器中为数据地址。存放地址的寄存器称为间址寄存器或数据指针。存放地址的寄存器称为间址寄存器或数据指针。例例:MOV AMOV A,R0R0;A A (R0)(R0)设指令执行前(设指令执行前(A A)=20H=20H,(R0R0)=40H=40H,地地址为址为4040H H存储器单元内容如图所示存储器单元内容如图所示。执行指令后,执行指令后,(A A)=?,(R0R0)=?,(40H)=,(40H)=?34H40H34H五、五、变址间接寻址方式变址间接寻址方式数据在存储器中,指令给出的寄存器中为数据的基地址和

12、偏移量。数据在存储器中,指令给出的寄存器中为数据的基地址和偏移量。数据地址数据地址=基地址基地址+偏移量。偏移量。2008H89H2009H 12H例:例:MOVC AMOVC A,A+DPTRA+DPTR;A A(A)+(DPTR)(A)+(DPTR)设指令执行前设指令执行前 (A A)=09H=09H,(DPTRDPTR)=2000H=2000H,存储器单元内容存储器单元内容如图所示。如图所示。执行指令后,执行指令后,(A A)=?(DPTRDPTR)=?12H2000H注意:注意:(1)(1)寄存器间址可拓宽单片机寻址范围,寄存器间址可拓宽单片机寻址范围,如:如:RiRi可用于对可用于对

13、片内片内RAMRAM寻址寻址(00(00H-7FH)H-7FH)(MOV(MOV指令指令),),也可用于对也可用于对 片外片外RAMRAM寻址寻址(00(00H-0FFH)(MOVXH-0FFH)(MOVX指令指令);DPTRDPTR可寻址可寻址片外片外ROM/RAMROM/RAM的全部的全部6464KBKB区域区域(MOVC/MOVXMOVC/MOVX指令指令)。(2)(2)寄存器间址指令寄存器间址指令不能用于寻址不能用于寻址SFRSFR。六、六、相对寻址方式相对寻址方式 指令给出位地址。数据在存储器位寻址区的某一位。指令给出位地址。数据在存储器位寻址区的某一位。例:例:MOV CMOV C

14、,40H40H;CyCy(位地址位地址4040H)H)设指令执行前设指令执行前(Cy)=1(Cy)=1,位地址位地址4040H H存储器单元如图,存储器单元如图,执行指令后,执行指令后,(Cy)=(Cy)=?028H 0110001029H 11010111位寻址区七七.位寻址方式位寻址方式MCS-51指令系统中共有指令系统中共有111条指令,按功能可分条指令,按功能可分为以下四大类:为以下四大类:数据传送类数据传送类 算术操作类算术操作类 逻辑操作类逻辑操作类 控制转移类控制转移类 3-3 指令的类型、字节和周期指令的类型、字节和周期指令的字节和周期:指令的字节和周期:v寄存器名可隐含或包含

15、在操作码中;寄存器名可隐含或包含在操作码中;v操作数为直接地址或立即数则必需单独占用一个字节;操作数为直接地址或立即数则必需单独占用一个字节;注意:注意:凡指令码中含有凡指令码中含有直接地址或立即数直接地址或立即数的指令,其字节的指令,其字节数应在原有基础上数应在原有基础上分别加分别加1。执行每条指令所需的机器周期数既取决于指令所含执行每条指令所需的机器周期数既取决于指令所含字节数,也取决于字节数,也取决于CPU在每个机器周期内最多能进行在每个机器周期内最多能进行两次读操作、每次一个字节的特性。两次读操作、每次一个字节的特性。实现累加器、寄存器、存储器之间的数据传送。实现累加器、寄存器、存储器

16、之间的数据传送。1 1、内部传送指令内部传送指令2 2、位位传送传送指令指令3 3、外部传送指令外部传送指令4 4、交换指令交换指令5 5、堆栈操作指令堆栈操作指令6 6、查表指令查表指令3-4 数据传送指令数据传送指令1.1.内部传送指令:实现片内数据存储器中数据传送。内部传送指令:实现片内数据存储器中数据传送。指令格式指令格式:MOV MOV 目的目的操作数,操作数,源源操作数操作数 寻址方式寻址方式:立即寻址、直接寻址、:立即寻址、直接寻址、寄存器寻址、寄存器间址。寄存器寻址、寄存器间址。MOV A,Rn ;A(Rn),n=07 MOV A,direct ;A(direct)MOV A,

17、Ri ;A(Ri),i=0或或1MOV A,#data ;AdataMOV Rn,direct ;Rn(direct)MOV Ri,direct ;(Ri)(direct)MOV direct1,direct2 ;direct1(direct2)MOV DPTR,#data16 ;DPTRdata16(唯一的(唯一的1条条16位数据传送指令)位数据传送指令)操作码目的源操作内容字节数执行时间MOVA,#datadirectRiRnA#dataA(direct)A(Ri)A(Rn)22111111Rn,#datadirectARn#dataRn(direct)Rn(A)221121direct,

18、#dataAdirectRiRndirect#datadirect(A)direct(direct)direct(Ri)direct(Rn)3232221221Ri,#datadirectA(Ri)#data(Ri)(direct)(Ri)(A)221121 例:例:顺序执行下列指令序列,求每一步执行结果。顺序执行下列指令序列,求每一步执行结果。MOV AMOV A,#30H#30H;MOV 4FHMOV 4FH,A A;MOV R0MOV R0,#20H#20H;MOV R0MOV R0,4FH 4FH;MOV 21HMOV 21H,20H 20H;(A)=30H(A)=30H(4FH)=3

19、0H(4FH)=30H(R0)=20H(R0)=20H(20H)=30H(20H)=30H(21H)=30H(21H)=30H说明:说明:1.一条指令中不能同时出现两个工作寄存器:一条指令中不能同时出现两个工作寄存器:非法非法指令:指令:MOV R1MOV R1,R2 R2 MOV R2 MOV R2,R0R0 2.间址寄存器只能使用间址寄存器只能使用 R0R0、R1R1。非法非法指令:指令:MOV AMOV A,R2R2 3.SFRSFR区只能直接寻址,不能用寄存器间接寻址。区只能直接寻址,不能用寄存器间接寻址。错误错误指令:指令:MOV R0MOV R0,#80H#80H MOV A MO

20、V A,R0R0 该指令是把52子系列单片机片内RAM中80H单元内容送累加器A。4.目的操作数不能采用立即寻址。目的操作数不能采用立即寻址。非法非法指令:指令:MOV#80HMOV#80H,R2 R2 2.2.位传送指令:位传送指令:MOV C,bit ;C(bit)MOV C,bit ;C(bit)MOV bit,C ;bit(C)MOV bit,C ;bit(C)其中一个操作数必须为位累加器其中一个操作数必须为位累加器C C(即即PSWPSW中的中的CyCy)。)。:将位地址将位地址2020H H中的内容传送到位地址中的内容传送到位地址3030H H中:中:MOV CMOV C,20H2

21、0H MOV 30H MOV 30H,C C错:错:MOV 30HMOV 30H,20H20H ;此为字节传送指令;此为字节传送指令 3.3.外部传送指令外部传送指令 实现片外数据存储器和实现片外数据存储器和A A累加器之间的数据传送。累加器之间的数据传送。指令格式:指令格式:MOVX MOVX 目的操作数,源操作数目的操作数,源操作数 寻址方式:片外数据存储器用寄存器间址方式。寻址方式:片外数据存储器用寄存器间址方式。1 1).DPTR.DPTR作作1616位数据指针,寻址位数据指针,寻址6464KBKB片外片外RAMRAM空间空间 MOVX A MOVX A,DPTRDPTR;A(DPTR

22、)A(DPTR)MOVX DPTRMOVX DPTR,A A;(DPTR)(A)(DPTR)(A)2 2).RiRi作作8 8位数据指针,寻址位数据指针,寻址256256B B片外片外RAMRAM空间空间 MOVXMOVX A A,RiRi;A(Ri)A(Ri)MOVXMOVX Ri Ri,A A ;(Ri)(A)(Ri)(A)例:例:实现片外数据存储器数据传送实现片外数据存储器数据传送 (2000H)(2100H)。MOV DPTR MOV DPTR,#2000H#2000HMOVX AMOVX A,DPTRDPTRMOV DPTRMOV DPTR,#2100H#2100HMOVX DPTR

23、MOVX DPTR,A A;(DPTRDPTR)=2000H=2000H;(A)=X(A)=X;(DPTRDPTR)=2100H=2100H;(2100H)=X(2100H)=X片外数据存储器不能直接寻址。片外数据存储器不能直接寻址。下列为下列为非法非法指令:指令:MOVX AMOVX A,2000H 2000H MOVX 2100H MOVX 2100H,2000H2000H片外RAM地址内容2000HXDPTR2100HX3.3.查表指令查表指令 实现从程序存储器读取数据到实现从程序存储器读取数据到A A累加器,只能使用变址间接寻累加器,只能使用变址间接寻址方式。址方式。多用于查常数表程序

24、,可直接求取常数表中的函数值。多用于查常数表程序,可直接求取常数表中的函数值。1 1DPTRDPTR为基址寄存器为基址寄存器MOVCMOVC A A,A+DPTRA+DPTR ;A A(A+DPTR)A+DPTR)查表范围为查表范围为 6464KB KB ROMROM任意空间,称为远程查表指令任意空间,称为远程查表指令 。2.2.PCPC为基址寄存器为基址寄存器MOVCMOVC A A,A+PCA+PC;A A(A)+(PC)+1)(A)+(PC)+1)常数表只能在查表指令后常数表只能在查表指令后256256B B范围内。范围内。(PCPC内容为下一条指令的起始地址。)内容为下一条指令的起始地

25、址。)例:查表法求例:查表法求Y=XY=X2 2。设设X(0X15)X(0X15)在片内在片内RAMRAM的的2020H H单单元中,要求通过查表求元中,要求通过查表求Y Y,存入片内存入片内RAMRAM2121H H单元。单元。1 1)ORG 1000HORG 1000HSQU:SQU:MOV DPTRMOV DPTR,#TAB#TAB ;确定表首地址(基地址);确定表首地址(基地址)MOV AMOV A,20H20H ;取取X X(偏移量偏移量)MOVC AMOVC A,A+DPTRA+DPTR;查表求查表求Y=XY=X2 2MOV 21HMOV 21H,A A ;保存保存Y YRETRE

26、T ;子程序结束子程序结束 ;其它程序段;其它程序段ORG 3000HORG 3000H ;常数表格首地址常数表格首地址TAB:TAB:DB 00DB 00,0101,0404,0909,225225;平方表平方表例:查表法求例:查表法求Y=XY=X2 2。设设X(0X15)X(0X15)在片内在片内RAMRAM的的2020H H单单元中,要求将查表求元中,要求将查表求Y Y,存入片内存入片内RAMRAM的的2121H H单元。单元。2 2)指令地址指令地址 源程序源程序 ORG ORG 1000H1000H ;程序起始地址程序起始地址 1000 1000H H SQU:MOV SQU:MOV

27、 A A,20H20H ;取取X X 1002H 1002H ADD ADD A A,#3#3 ;修正偏移量修正偏移量 10041004H H MOVC MOVC A A,A+PC A+PC;查表求查表求Y=XY=X2 2 1005H 1005H MOV MOV 21H21H,A A ;存结果存结果 1007 1007H H RET RET ;子程序结束子程序结束 1008 1008H H TAB:DB TAB:DB 0000,0101,04 04 ;平方表平方表 100100BHBH DB DB 0909,225 225 4.4.堆栈操作指令堆栈操作指令 入栈指令:入栈指令:PUSH n P

28、USH n ;SPSPSP+1SP+1,(SP)(SP)(n)(n)出栈指令:出栈指令:POPPOP n n ;(n)(n)(SP)(SP),SPSPSP-1SP-1例:例:设设 A=02A=02,B=56HB=56H,执行下列指令后,执行下列指令后,SP=SP=?,A=A=?,B=?B=?30H02H56H SBR SBR:MOV SP MOV SP,#30H#30H;设栈底;设栈底 PUSH ACC PUSH ACC PUSH B PUSH B MOV A MOV A,#0#0 MOV B MOV B,#01#01 POP B POP B POP ACC POP ACC只有压栈指令会改变堆

29、栈区中的数据。只有压栈指令会改变堆栈区中的数据。片内 RAM 34H 33H 32H 31H 30H SPSP SP 02 SP 56H 02 56H SP 02 02HA00H02H00H02H02H SPSP 5.5.交换指令交换指令(累加器专用交换指令累加器专用交换指令)实现实现片内片内RAMRAM区区的数据双向传送。的数据双向传送。1.1.字节交换指令字节交换指令 XCH A XCH A,RnRn ;(A)(A)(Rn)(Rn)XCH A XCH A,RiRi;(A)(A)(Ri)(Ri)XCH A XCH A,directdirect ;(A)(A)(direct)(direct)例

30、:例:设设A=29HA=29H,执行指令执行指令 XCH AXCH A,2AH2AH后,后,A=A=?(2AH)=(2AH)=?38H29H片内 RAM地址内容2BH35H2AH38H20H29H 2.2.半字节交换指令半字节交换指令 XCHD A XCHD A,RiRi ;(A)(A)0 03 3 (Ri)(Ri)0 03 3 SWAP A SWAP A ;(A)(A)4 47 7 (A)(A)0 03 3例:例:将片内将片内RAM RAM 2 2AHAH和和2 2BHBH单元中的单元中的BCDBCD码转换成压缩式码转换成压缩式BCDBCD码存入码存入2020H H单元。单元。MOV A,#

31、0 MOV R0,#2AH MOV R1,#2BHXCHD A,R0SWAP AXCHD A,R1XCH A,20H压缩式压缩式BCD码码千位 百位十位 个位单单字字节节BCD0000 千位0000 百位0000 十位0000 个位例:例:已知已知(10H)=5EH,(,(2BH)=1DH,(,(40H)=2BH,(,(60H)=3CH,执行下列程序段后,写出对执行下列程序段后,写出对应寄存器和地址单元的运行结果。应寄存器和地址单元的运行结果。MOV 20H,60HMOV R1,20HMOV A,40HXCH A,R1 XCH A,60HXCH A,R1MOV R0,#10H XCHD A,R

32、0(A)=、(10H)=、(2BH)=、(40H)=、与数据传送指令不同,多数算术运算指令会影响标志位与数据传送指令不同,多数算术运算指令会影响标志位的状态,即的状态,即CPUCPU执行算术运算指令后,根据数据操作情况自执行算术运算指令后,根据数据操作情况自动设置标志位的状态。动设置标志位的状态。MCS-51 MCS-51 的程序状态字寄存器的程序状态字寄存器 PSWPSW 为标志寄存器。为标志寄存器。其格式如下:其格式如下:3-53-5算术运算指令算术运算指令CyACF0RS1RS0OVP1 1标志位标志位(自动设置状态自动设置状态)1 1)CyCy:进位标志位:进位标志位保存运算后最高位的

33、进位保存运算后最高位的进位/借位状态,当有进位借位状态,当有进位/借借位,位,Cy=1Cy=1,否则否则Cy=0Cy=0。2 2)ACAC:辅助进位标志位:辅助进位标志位保存低半字节的进位保存低半字节的进位/借位状态,当借位状态,当D D3 3产生进位产生进位/借借位,位,AC=1AC=1,否则否则AC=0AC=0。用于十进制调整。用于十进制调整。3 3)OVOV:溢出标志位:溢出标志位OV=CyOV=Cy7 7 CyCy6 6,补码运算产生溢出补码运算产生溢出OV=1OV=1,否则否则OV=0OV=0。4 4)P P:奇偶标志位:奇偶标志位反映累加器反映累加器A A中数据的奇偶性。当中数据的

34、奇偶性。当1 1的个数为奇数,的个数为奇数,P=1P=1,否则否则P=0P=0。2 2用户选择位用户选择位(编程设置状态编程设置状态)1 1)F0F0:用户自定义标志位。:用户自定义标志位。2 2)RS1RS1、RS0RS0:工作寄存器区选择位。工作寄存器区选择位。复位时,复位时,PSW=00HPSW=00H例:例:复位后,设置使用工作寄存复位后,设置使用工作寄存 器器3 3区,其余标志位不变。区,其余标志位不变。RS1 RS0工作寄存区0 00区0 11区1 02区1 13区CyACF0RS1RS0OVP 解:解:MOV PSWMOV PSW,#18H#18H 3-5-1 3-5-1 加减指

35、令加减指令 完成源操作数和完成源操作数和 累加器累加器A A 中数据的加减运算中数据的加减运算。1.1.加法指令加法指令 1 1)不带进位加法:)不带进位加法:(ADD AADD A,源操作数)源操作数)ADD A ADD A,RnRn ADD A ADD A,directdirect ADD A ADD A,RiRi ADD A ADD A,#data#data 影响影响CyCy、OVOV、ACAC、P P例:例:A=3BHA=3BH,PSW=0PSW=0,执行指令执行指令 ADD AADD A,#3BH#3BH求:求:A=?A=?,Cy=?Cy=?,OV=?OV=?,AC=?AC=?,P=

36、?P=?,PSW=?PSW=?01000001=41H 0011 1011 0011 1011+0011 1011+0011 1011 0111 0110 0111 0110CyACF0RS1RS0OVP76H0110 2 2)带进位加法:带进位加法:ADDC AADDC A,源操作数源操作数 ADDC AADDC A,RnRn ADDC AADDC A,directdirect ADDC AADDC A,RiRi ADDC AADDC A,#data#data 影响影响CyCy、OVOV、ACAC、P P例:例:A=9AHA=9AH,R2=E3HR2=E3H,PSW=0PSW=0,执行指令执

37、行指令ADDC AADDC A,R2R2 后求:后求:A=?A=?,Cy=?Cy=?,OV=?OV=?,AC=?AC=?,P=?P=?,PSW=?PSW=?10000100=84H 1001 1010 1001 1010 1110 00111110 0011 +0+0 1 0111 1101 1 0111 1101CyACF0RS1RS0OVP7DH7DH1 11 10 00 0 上例上例中,若将两个操作数看作是中,若将两个操作数看作是无符号数无符号数,则操作,则操作结果正确;若将它们看作带符号数,则根据结果正确;若将它们看作带符号数,则根据PSWPSW中中(OV)=1OV)=1可知加法运算产

38、生了溢出,累加器可知加法运算产生了溢出,累加器A A中的结果中的结果显然是错误的。显然是错误的。因此因此,采用加法指令编写带符号数的加法运算,采用加法指令编写带符号数的加法运算程序时,要想判断累加器程序时,要想判断累加器A A中中获得的获得的结果是否正确就结果是否正确就必须必须检测检测PSWPSW中标志位中标志位OVOV的状态的状态。带进位加法指令带进位加法指令ADDCADDC用于多字节运算用于多字节运算例:例:设双字节数设双字节数 X X 存在片内存在片内RAMRAM 4 40H0H、41H41H单元,单元,Y Y存在存在4242H H、43H43H单元,编程求单元,编程求 Z=X+YZ=X

39、+Y,并存入片内并存入片内RAMRAM单元单元4444H H、45H45H、46H46H。ADDSADDS:CLR CCLR C MOV A MOV A,40H40HADDADD A A,42H42HMOV 44HMOV 44H,A AMOV AMOV A,41H41HADDCADDC A A,43H43HMOV 45HMOV 45H,A AMOV AMOV A,#0#0ADDCADDC A A,#0#0MOV 46HMOV 46H,A ARETRET;取被加数低字节;加上加数低字节;保存和的低字节;取被加数高字节;加上加数高字节;保存和的高字节;求高字节进位;子程序结束3 3)BCDBCD码

40、十进制调整指令:码十进制调整指令:DADAA A;对对 A A 中加法结果进行调整中加法结果进行调整通常紧跟通常紧跟;AC=1AC=1或或A3A30909,则,则A=A=(A A)+06H+06H ;Cy=1Cy=1或或A7A74949,则,则A=A=(A A)+60H+60H在一条普通加法指令之后,用以实现在一条普通加法指令之后,用以实现BCDBCD加法。加法。十进制加法指令:十进制加法指令:ADD AADD A,源操作数源操作数DA ADA A 带进位十进制加法指令:带进位十进制加法指令:ADDC AADDC A,源操作数源操作数DA ADA A 例例3-39:编制编制8559的的BCD加

41、法程序,并对其工作加法程序,并对其工作过程进行分析。过程进行分析。解:解:相应相应BCD加法程序为:加法程序为:MOV A,#85H;A85H ADD A,#59H;A85H+59H=0DEH DA A ;A44,Cy=1二进制加法和进制调整过程为:二进制加法和进制调整过程为:85 1000 0101 +)59 0101 1001 144 (0)1101 1110 110;低低4位位9,加,加6调整调整 1110 0100 110 ;高高4位位9,加,加60H调整调整 (1)0100 0100运算结果为(运算结果为(A)=44H,Cy=1 即十进制的即十进制的144。2 2减法指令减法指令(只

42、有带只有带CyCy的减法的减法)SUBB ASUBB A,源操作数源操作数;带借位减法指令;带借位减法指令 SUBBSUBB A A,Rn Rn ;A(A)-(Rn)-(Cy)A(A)-(Rn)-(Cy)SUBB A SUBB A,directdirect SUBB A SUBB A,RiRi SUBB A SUBB A,#data#data 影响影响:CyCy、OVOV、ACAC、P P例:例:(A)=5AH(A)=5AH,(R2)=5AH(R2)=5AH,(Cy)=0(Cy)=0,执行下列指令执行下列指令SUBB ASUBB A,R2R2求:求:A=0A=0,Cy=0Cy=0,OV=0OV

43、=0,P=0P=0,AC=0.AC=0.例例3-36设(设(A)=0C9H,(R0)=60H,(,(60H)=54H,Cy=1,执行指令:执行指令:SUBB A,R0 结果为结果为 (A)=74H 标志位为标志位为 Cy=0,0V=1,AC=0,P=0 01011 110 110 1 借位借位 1100 1001 (1100 1001 (A)A)0101 0101 0100 (0100 (R0)R0)-1 1 CyCy 0111 0100 0111 01003.增量、减量指令增量、减量指令增量指令:增量指令:INC INC 单操作数单操作数 INC AINC A INC Rn INC Rn I

44、NC direct INC direct INC Ri INC Ri INC DPTR INC DPTR除对除对A A操作影响标志位操作影响标志位P P以外,不影响标志位状态以外,不影响标志位状态。减量指令:减量指令:DEC DEC 单操作数单操作数 DEC ADEC A DEC directDEC direct DEC RiDEC Ri DEC RnDEC Rn 除对除对A A操作影响标志位操作影响标志位P P以外,不影响标志位状态以外,不影响标志位状态。v 注意:注意:没有指令没有指令 DEC DPTR DEC DPTR 可用指令可用指令 DEC DPL DEC DPL 代替代替3-5-2

45、.3-5-2.乘除指令乘除指令 MUL ABMUL AB;BAABAAB B,Cy0Cy0,B B高字节,高字节,A A低字节低字节;当积高字节当积高字节B=0B=0,OV0OV0;B0B0,则则OV1OV1 DIV AB DIV AB;A AB B,AA商,商,BB余数,余数,Cy0Cy0,当除数当除数B=0B=0,OV1OV1;B0B0,则则OV0OV0。例:例:(A)=96(60H),(B)=192(0C0H)(A)=96(60H),(B)=192(0C0H),执行指令执行指令 MUL ABMUL AB后,后,求:求:A=A=,B=B=,Cy=Cy=,OV=OV=,P=.P=.解:解:9

46、6 96 192=18432(4800192=18432(4800H)H)例:例:(A)=158(F6H)(A)=158(F6H),(B)=13(0DH)(B)=13(0DH),执行指令执行指令 DIV ABDIV AB后后 求:求:A=A=,B=B=,Cy=Cy=,OV=OV=,P=P=解:解:15158 8 13=1 13=12 2(0CH)0CH),余数余数=2 2(0 02H)2H)。0000H 48H 0 1 0H 48H 0 1 00 0CH 02H 0 0 0CH 02H 0 0 03-63-6 逻辑运算指令逻辑运算指令一、单操作数指令(一、单操作数指令(A A累加器为操作数)累

47、加器为操作数)1.A A清清0 0指令:指令:CLR A CLR A ;A0A02.A A取反指令:取反指令:CPL A CPL A ;A/AA/A 3.循环移位指令:循环移位指令:1)8 8位循环指令:位循环指令:RL ARL A ;A A循环左移一位循环左移一位 RR ARR A ;A A循环右移一位循环右移一位 2)9 9位循环指令:位循环指令:RLC ARLC A;带带CyCy循环左移一位循环左移一位 RRC ARRC A;带带CyCy循环右移一位循环右移一位例:例:设设 A=11000101A=11000101,Cy=0Cy=0,分别分别执行下列单条指执行下列单条指令:令:CPL A

48、CPL A ;A=A=,Cy=Cy=RL A RL A ;A=A=,Cy=Cy=RLC ARLC A ;A=A=,Cy=Cy=00111010 0 00111010 0 10001011 0 10001011 0 10001010 1 10001010 1 用用9 9位循环指令实现多字节移位位循环指令实现多字节移位例:例:编程将寄存器编程将寄存器 R6R5R6R5 中的双字节数中的双字节数X X左移一位。左移一位。0CyR6R5CyCLR CMOV A,R5RLC AMOV R5,AMOV A,R6RLC AMOV R6,A;Cy=0Cy=0,设设 R6=55H R6=55H,R5=AAHR5

49、=AAH;R6=01010101R6=01010101,R5=10101010R5=10101010,Cy=0Cy=0;R6=01010101R6=01010101,R5=01010100R5=01010100,Cy=1Cy=1;R6=10101011R6=10101011,R5=01010100R5=01010100,Cy=0Cy=0二、二、双操作数逻辑运算指令双操作数逻辑运算指令(对位进行逻辑运算对位进行逻辑运算):ANLANL、ORLORL、XRLXRL(各有(各有6 6条,以条,以A A或或directdirect为目的地址)为目的地址)以以ANLANL指令为例:指令为例:ANL A,

50、ANL A,RnRn ANL A,ANL A,directdirect ANL A,ANL A,RiRi ANL A,ANL A,#data#data ANL direct,ANL direct,A AANL direct,ANL direct,#data#data逻辑与指令常用于清零字节中的某些位。逻辑与指令常用于清零字节中的某些位。逻辑或指令常用于置逻辑或指令常用于置1 1字节中的某些位。字节中的某些位。逻辑异或指令通常用来对某些位取反。逻辑异或指令通常用来对某些位取反。二、双操作数逻辑运算指令二、双操作数逻辑运算指令(对位进行逻辑运算对位进行逻辑运算):例例 A=01B,表示随机状态,为

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

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(单片机原理与应用第三章课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|