单片机_3(2).ppt

上传人:s****8 文档编号:67328031 上传时间:2022-12-24 格式:PPT 页数:61 大小:531.50KB
返回 下载 相关 举报
单片机_3(2).ppt_第1页
第1页 / 共61页
单片机_3(2).ppt_第2页
第2页 / 共61页
点击查看更多>>
资源描述

《单片机_3(2).ppt》由会员分享,可在线阅读,更多相关《单片机_3(2).ppt(61页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、二、算术运算指令二、算术运算指令 1 1 加加法法、减、减法法指令指令 2 2 乘乘法法、除、除法法指令指令 3 3 加加1 1、减、减1 1指令指令 4 4 十进制十进制调整调整指令指令 5 5 算术运算类指令应用实例算术运算类指令应用实例 1 1 加法、减法指令加法、减法指令 n加减法指令运算示意图:ARndirect#dataRi1 1 加法、减法指令加法、减法指令 1)加法类指令加法类指令 汇编指令格式汇编指令格式 机器指令格式机器指令格式 操操 作作 ADD A,Rn 28H2FH A (A)+(Rn)ADD A,direct 25H direct A (A)+(direct)ADD

2、 A,Ri 26H27H A (A)+(Ri)ADD A,#data 24H data A (A)+#data 注意注意:算术运算指令,除加:算术运算指令,除加1减减1指令外,其余指令都指令外,其余指令都会影响会影响PSW的的AC、C、OV、P标志位。标志位。1 1 加法、减法指令加法、减法指令 2)带进位带进位加法指令加法指令 汇编指令格式汇编指令格式 指令代码指令代码 操操 作作 ADDC A,Rn 38H3FH A(A)+(Rn)+CY ADDC A,direct 35H direct A(A)+(direct)+CY ADDC A,Ri 36H37H A(A)+(Ri)+CY ADDC

3、 A,#data 34H data A(A)+#data+CY注意:本指令影响标志位注意:本指令影响标志位AC、C、OV、P。1 1 加法、减法指令加法、减法指令 3)带借位带借位减法指令减法指令 汇编指令格式汇编指令格式 指令代码指令代码 操操 作作 SUBB A,Rn 98H9FH A(A)-CY-(Rn)SUBB A,direct 95H direct A(A)-CY-(direct)SUBB A,Ri 96H97H A(A)-CY-(Ri)SUBB A,#data 94H data A(A)-CY-#data注意:在执行不带借位的运算时,可在注意:在执行不带借位的运算时,可在“SUBB

4、”指令指令前用前用“CLR C”指令将指令将CY清清0。指令影响标志位。指令影响标志位AC、C、OV、P。2 2 乘法、除法指令乘法、除法指令 1)乘法乘法指令指令 汇编指令格式汇编指令格式 机器指令格式机器指令格式 操操 作作 MUL AB A4H BA (A)(B)注意:若乘积大于注意:若乘积大于0FFH,则,则OV置置1,否则清,否则清0(此时此时B的内容为的内容为0)。CY总是被清总是被清0。该操作也影响标志位。该操作也影响标志位P。2)除法除法指令指令 汇编指令格式汇编指令格式 机器指令格式机器指令格式 操操 作作 DIV AB 84H A(A)(B)的商的商,B(A)(B)的余数的

5、余数注意:若除数注意:若除数(B)=00H,则结果无法确定,则结果无法确定,OV置置1。CY总是被总是被清清0。该操作也影响标志位。该操作也影响标志位P。3 3 加加1 1、减、减1 1指令指令 1)加加1指令指令 汇编指令格式汇编指令格式 机器代码机器代码 操操 作作 INC A 04H A (A)+1 INC Rn 08H0FH Rn (Rn)+1 INC direct 05H direct direct(direct)+1 INC Ri 06H07H (Ri)(Ri)+l INC DPTR A3H DPTR (DPTR)+1注意:该操作不影响注意:该操作不影响PSW标志位。标志位。3 3

6、 加加1 1、减、减1 1指令指令 2)减减1指令指令 汇编指令格式汇编指令格式 机器指令格式机器指令格式 操操 作作 DEC A 14H A (A)-1 DEC Rn 18H1FH Rn (Rn)-l DEC direct 15H direct direct(direct)-1 DEC Ri 16H17H (Ri)(Ri)-1注意:注意:1.该操作不影响该操作不影响PSW标志位。标志位。2.51单片机无单片机无DEC DPTR指令指令。4 4 十进制调整指令十进制调整指令 汇编指令格式汇编指令格式 机器码格式机器码格式 操操 作作 DA A D4H 对对A进行进行BCD调整调整注意:这条指令

7、一般跟在注意:这条指令一般跟在ADD或或ADDC指令后,对累指令后,对累加器加器A中的结果进行中的结果进行BCD调整。调整。该操作影响标志位该操作影响标志位P。5 5 算术运算类指令应用实例算术运算类指令应用实例【例例1】有两个有两个BCD码表示的码表示的4位十进制数,分别存放在内位十进制数,分别存放在内部数据存储器的部数据存储器的50H51H单元和单元和60H61H单元,试编单元,试编写程序求这两个数之和,并将结果存放在写程序求这两个数之和,并将结果存放在40H42H单单元。元。解:求两个求两个BCD数之和的运算程序如下:数之和的运算程序如下:MOV A,50H;取第一个数低取第一个数低2位

8、位BCD码码 ADD A,60H;加第二个数低加第二个数低2位位BCD码码 DA A;十进制调整十进制调整 MOV 40H,A;保存结果的低保存结果的低2位位 MOV A,51H;取高位取高位BCD码码 ADDC A,61H;高位相加高位相加 DA A;十进制调整十进制调整 MOV 41H,A;保存结果的高保存结果的高2位位 MOV A,#00H ADDC A,#00H;计算进位计算进位 MOV 42H,A;保存进位保存进位5 5 算术运算类指令应用实例算术运算类指令应用实例【例例2】试编程计算试编程计算5678H 1234H的值,结果保存在的值,结果保存在R6、R5中。中。解:减数和被减数都

9、是解:减数和被减数都是16位二进制数,计算时要先进行低位二进制数,计算时要先进行低8位的减法,然后再进行高位的减法,然后再进行高8位的减法,在进行低位的减法,在进行低8位减法位减法时,不需要考虑借位,所以要在减法指令之前将借位标时,不需要考虑借位,所以要在减法指令之前将借位标志清志清0。程序如下:。程序如下:MOV A,#78H;被减数低被减数低8位送累加器位送累加器 CLR C ;清进位标志位清进位标志位CY SUBB A,#34H;减去减数减去减数 MOV R5,A;保存低保存低8位位 MOV A,#56H;被减数高被减数高8位送累加器位送累加器 SUBB A,#12H;减去减数减去减数

10、MOV R6,A;保存高保存高8位位5 5 算术运算类指令应用实例算术运算类指令应用实例【例3】试分析执行下列指令以后,寄存器和内部试分析执行下列指令以后,寄存器和内部RAM的状态。的状态。MOV R0,#30H MOV 30H,#40H MOV 31H,#50H INC R0 INC R0 INC R0;数数30H送入送入R0;数数40H送入片内送入片内RAM 30H单元单元;数数50H送入片内送入片内RAM 31H单元单元;将片内将片内RAM 30H单元中的内容加单元中的内容加1;将将R0中的内容加中的内容加1;将片内将片内RAM 31H单元中的内容加单元中的内容加1解:解:(R0)=31

11、H (30H)=41H (31H)=51H 三、逻辑运算指令三、逻辑运算指令 1 1 逻辑逻辑“与与”、“或或”、“异或异或”指令指令 2 2 清零清零、取反取反指令指令 3 3 循环移位循环移位指令指令 4 4 逻辑运算类指令应用实例逻辑运算类指令应用实例 1 1 逻辑逻辑“与与”、“或或”、“异或异或”指令指令n逻辑运算逻辑运算“与与”、“或或”、“异或异或”指令示意图:指令示意图:ARndirect#dataRi运算运算运算运算运算运算运算运算运算运算1 1 逻辑逻辑“与与”、“或或”、“异或异或”指指令令1)逻辑逻辑“与与”指令指令 汇编指令格式汇编指令格式 机器指令格式机器指令格式

12、操操 作作 ANL A,Rn 58H5FH A (A)(Rn)ANL A,direct 55H direct A (A)(direct)ANL A,Ri 56H57H A (A)(Ri)ANL A,#data 54H data A (A)#data ANL direct,A 52H direct direct (direct)(A)ANL direct,#data 53H direct data direct(direct)#data注意:后注意:后2条指令直接地址如果是条指令直接地址如果是I/O端口端口P0P3,则为端口的,则为端口的“读读改改写写”操作,操作,即:将端口的内容读入即:将端口

13、的内容读入CPUCPU进行逻辑运算,进行逻辑运算,然后再回写到端口。然后再回写到端口。前前4条指令的操作影响标志位条指令的操作影响标志位P。1 1 逻辑逻辑“与与”、“或或”、“异或异或”指指令令2)逻辑逻辑“或或”指令指令 汇编指令格式汇编指令格式 机器指令格式机器指令格式 操操 作作 ORL A,Rn 48H4FH A (A)(Rn)ORL A,direct 45H direct A (A)(direct)ORL A,Ri 46H47H A (A)(Ri)ORL A,#data 44H data A (A)#data ORL direct,A 42H direct direct (dire

14、ct)(A)ORL direct,#data 43H direct data direct(direct)#data注意:后注意:后2条指令若直接地址正好是条指令若直接地址正好是I/O端口端口P0P3,则为端口的,则为端口的“读读改改写写”操作。前操作。前4条指令的操作影响标志位条指令的操作影响标志位P。1 1 逻辑逻辑“与与”、“或或”、“异或异或”指指令令3)逻辑逻辑“异或异或”指令指令 汇编指令格式汇编指令格式 机器指令格式机器指令格式 操操 作作 XRL A,Rn 68H6FH A (A)(Rn)XRL A,direct 65H direct A (direct)(A)XRL A,Ri

15、 66H67H A (A)(Ri)XRL A,#data 64H data A (A)#data XRL direct,A 62H direct direct (direct)(A)XRL direct,#data 63H direct data direct(direct)#data注意:后注意:后2条指令若直接地址正好是条指令若直接地址正好是I/O端口端口P0P3,则为端口的,则为端口的“读读改改写写”操作。前操作。前4条指令的操作影响标志位条指令的操作影响标志位P。2 2 清零、取反指令清零、取反指令 1)累加器累加器A清清0指令指令 汇编指令格式汇编指令格式 机器指令格式机器指令格式

16、操操 作作 CLR A E4H A 0注意:该操作注意:该操作影响影响标志位标志位P。2)累加器累加器A取反取反指令指令 汇编指令格式汇编指令格式 机器指令格式机器指令格式 操操 作作 CPL A F4H A (/A)注意:注意:对累加器对累加器A的内容逐位取反,的内容逐位取反,不影响不影响标志位。标志位。3 3 循环移位指令循环移位指令 1)累加器累加器A循环左移循环左移指令指令 汇编指令格式汇编指令格式 机器指令格式机器指令格式 操操 作作 RL A 23H 2)累加器累加器A循环右移循环右移指令指令 汇编指令格式汇编指令格式 机器指令格式机器指令格式 操操 作作 RR A 03H 注意:

17、每次移注意:每次移1位。以上位。以上2条指令均不影响条指令均不影响PSW标志标志位。位。3 3 循环移位指令循环移位指令 3)累加器累加器A带进位循环左移带进位循环左移指令指令 汇编指令格式汇编指令格式 机器指令格式机器指令格式 操操 作作 RLC A 33H 4)累加器累加器A带进位循环右移带进位循环右移指令指令 汇编指令格式汇编指令格式 机器指令格式机器指令格式 操操 作作 RRC A 23H 注意:以上注意:以上2指令均影响标志位指令均影响标志位P和和CY。4 4 逻辑运算类指令应用实例逻辑运算类指令应用实例【例例1】将将P1口的口的P1.2、P1.3、P1.7清零清零,其余位不变。,其

18、余位不变。解:相应的指令为:解:相应的指令为:ANL P1,#01110011B【例例2】利用逻辑运算指令将利用逻辑运算指令将P1口的口的P1.1、P1.3、P1.5置置1,其余位保持不变。,其余位保持不变。解:相应的指令为:解:相应的指令为:ORL P1,#00101010B【例例3】利用逻辑运算指令,将内部利用逻辑运算指令,将内部RAM中中40H单元的单元的1、3、5、7位位取反取反,其他位保持不变。,其他位保持不变。解:相应指令为:解:相应指令为:XRL 40H,#0AAH ;0AAH=10101010B4 4 逻辑运算类指令应用实例逻辑运算类指令应用实例【例例4】利用逻辑运算指令将当前

19、工作寄存器设定利用逻辑运算指令将当前工作寄存器设定为第为第3组工作寄存器。组工作寄存器。解:相应指令为:解:相应指令为:ORL PSW,#00011000B【例例5】已知已知(A)=00111101B=3DH,CY=0。试分析。试分析执行执行“RLC A”指令后累加器指令后累加器A的内容。的内容。解:执行指令解:执行指令“RLC A”的结果为的结果为 (A)=01111010B=7AH CY=0 7AH正是正是3DH的的2倍,该指令执行的是乘倍,该指令执行的是乘2操作。操作。4 4 逻辑运算类指令应用实例逻辑运算类指令应用实例【例例6】拆字程序:在内部拆字程序:在内部RAM 40H单元保存有以

20、单元保存有以压缩压缩BCD码表示的码表示的2位十进制数,编程将它们拆位十进制数,编程将它们拆开,分别保存在内部开,分别保存在内部RAM的的41H、42H单元。单元。解:程序如下:解:程序如下:MOV A,40H;压缩压缩BCD码送累加器码送累加器 ANL A,#0FH;高高4位清位清0,保留低保留低4位位 MOV 41H,A;保存低保存低4位位BCD码码 MOV A,40H;取数据取数据 MOV A,#0F0H;低低4位清位清0,保留高保留高4位位 SWAP A;高低位交换高低位交换 MOV 42H,A;保存高保存高4位位BCD码码四、控制转移类指令四、控制转移类指令 1 1 无条件无条件转移

21、指令转移指令 2 2 条件条件转移指令转移指令 3 3 调用、返回调用、返回指令指令 4 4 空操作空操作指令指令 5 5 控制转移类指令应用实例控制转移类指令应用实例 1 1 无条件转移指令无条件转移指令n无条件转移指令是指当程序执行到该指令时,无条件转移指令是指当程序执行到该指令时,程序无条件转移到指令所提供的地址处执行。程序无条件转移到指令所提供的地址处执行。n无条件转移类指令有四类无条件转移类指令有四类:u 绝对绝对转移转移 AJMPAJMPu 长长转移转移 LJMPLJMPu 相对转移相对转移(短短转移转移)SJMPSJMPu 间接间接转移转移(散转指令散转指令)JMPJMP1 1

22、无条件转移指令无条件转移指令1)1)绝对绝对绝对绝对转移指令转移指令转移指令转移指令 汇编指令格式汇编指令格式 机器指令格式机器指令格式 操操 作作 AJMP addr11 a10a9a800001a7a0 PC(PC)+2,PC100addr11,(PC1511)不变不变 注意:本条指令提供注意:本条指令提供11 位地址,可在该指令后位地址,可在该指令后 面一个存储单元所在的面一个存储单元所在的 2KB区域内无条件转移。区域内无条件转移。1 1 无条件转移指令无条件转移指令2)2)长长长长转移指令转移指令转移指令转移指令 汇编指令格式汇编指令格式 机器指令格式机器指令格式 操操 作作 LJM

23、P addr16 02H addr16 PC addr16 注意:本条指令提供注意:本条指令提供16 位目的地址,所以程序位目的地址,所以程序 可转向可转向64KB程序存储器程序存储器 地址空间的任何单元。地址空间的任何单元。1 1 无条件转移指令无条件转移指令3)3)相对相对相对相对转移转移转移转移(短短短短转移转移转移转移)指令指令指令指令 汇编指令格式汇编指令格式 机器指令格式机器指令格式 操操 作作 SJMP rel 80H rel PC (PC)+2,PC (PC)+rel 注意:本条指令的操作数是相对地址,注意:本条指令的操作数是相对地址,rel是一个带符号的是一个带符号的偏移量偏

24、移量(补码补码),其范围为,其范围为-128+127共共256字节。负数字节。负数表示反向转移,正数表示正向转移。表示反向转移,正数表示正向转移。如果指令中偏移量如果指令中偏移量rel=FEH,因为,因为FEH是是-2的补码,的补码,所以转移目的地址所以转移目的地址=PC+2-2=PC,结果转向自己,导致,结果转向自己,导致无限循环。这条指令称为无限循环。这条指令称为原地踏步原地踏步指令,即程序执行到指令,即程序执行到这条指令时,不再向下执行,而在该指令处原地踏步。这条指令时,不再向下执行,而在该指令处原地踏步。原地踏步指令在程序中常写为:原地踏步指令在程序中常写为:SJMP$1 1 无条件转

25、移指令无条件转移指令4)间接转移指令间接转移指令(散转指令散转指令)汇编指令格式汇编指令格式 机器指令格式机器指令格式 操操 作作 JMP A+DPTR 73H PC(A)+(DPTR)注意:该指令采用的是变址寻址方式,指令执行过程注意:该指令采用的是变址寻址方式,指令执行过程对对DPTR、A和标志位均无影响。这条指令可以根和标志位均无影响。这条指令可以根据累加器据累加器A的不同值实现多个方向的转移,可代的不同值实现多个方向的转移,可代替众多的判断跳转指令,具有散转功能,所以又替众多的判断跳转指令,具有散转功能,所以又称散转指令。称散转指令。2 2 条件转移指令条件转移指令n条件转移指令是指根

26、据给出的条件进行条件转移指令是指根据给出的条件进行判断,判断,u 若若条件满足条件满足,则程序转向由偏移量确定的目,则程序转向由偏移量确定的目的地址处去执行。的地址处去执行。u 若若条件不满足条件不满足,程序将不会转移,而是按原,程序将不会转移,而是按原顺序执行。顺序执行。n80518051有条件转移指令有条件转移指令8 8条。条。2 2 条件转移指令条件转移指令1)1)累加器累加器累加器累加器判零判零判零判零转移指令转移指令转移指令转移指令 汇编指令格式汇编指令格式 机器指令格式机器指令格式 操操 作作 JZ rel 60H rel PC (PC)+2 若若A=0,则程序转移则程序转移PC(

27、PC)+rel 若若A0,则程序往下顺序执行则程序往下顺序执行 JNZ rel 50H rel PC (PC)+2 若若A0,则程序转移则程序转移PC(PC)+rel 若若A=0,则程序往下顺序执行则程序往下顺序执行注意:相对偏移量为一个带符号的注意:相对偏移量为一个带符号的8位数,偏移范围为位数,偏移范围为-128+127,共,共256个字节。本指令不改变累加器个字节。本指令不改变累加器A的内容,也不的内容,也不影响任何标志位。影响任何标志位。2 2条件转移指令条件转移指令2)比较比较转移转移指令指令 比较转移指令示意图:比较转移指令示意图:ARndirect#dataRi比较比较比较比较比

28、较比较比较比较比较:比较:不等不等则转,相等不转则转,相等不转2 2 条件转移指令条件转移指令2)比较比较转移指令转移指令 汇编指令格式汇编指令格式 机器指令格式机器指令格式 操操 作作CJNE A,direct,rel B5H direct rel 两数比较,不等则转两数比较,不等则转CJNE A,#data,rel B4H data rel 同上同上CJNE Rn,#data,rel B6HB7H data rel 同上同上CJNE Ri,#data,rel B8HBFH data rel 同上同上注意:若目的操作数注意:若目的操作数=源操作数,程序顺序执行,源操作数,程序顺序执行,CY=

29、0;若目的操作数若目的操作数源操作数,程序转移,源操作数,程序转移,PC(PC)+rel,并且并且CY=0;若目的操作数若目的操作数源操作数,程序转移,源操作数,程序转移,PC(PC)+rel,并且并且CY=1。本指令执行后不影响任何操作数。本指令执行后不影响任何操作数。2 2 条件转移指令条件转移指令3)减减1非非0转移指令转移指令(循环循环转移指令转移指令)汇编指令格式汇编指令格式 机器指令格式机器指令格式 操操 作作 DJNZ Rn,rel D8HDFH rel PC (PC)+2,Rn (Rn)-1;若若(Rn)0,则程序转移则程序转移 PC(PC)+rel;若若(Rn)=0,则程序往

30、下顺序执行则程序往下顺序执行 DJNZ direct,rel D5H direct relPC (PC)+3,direct (direct)-1 若若(direct)0,则程序转移则程序转移PC(PC)+rel;若若(direct)=0,则程序往下顺序执行则程序往下顺序执行2 2 条件转移指令条件转移指令3)减减1非非0转移指令转移指令(循环循环转移指令转移指令)注意:在一般的应用中,注意:在一般的应用中,经常把经常把rel设为负值,设为负值,使得程序负向跳转。使得程序负向跳转。通过改变指令中通过改变指令中Rn或或者者direct单元的内容,单元的内容,就可以控制程序负向就可以控制程序负向跳转

31、的次数,也就控跳转的次数,也就控制了程序循环的次数,制了程序循环的次数,所以该指令又称为循所以该指令又称为循环转移指令。环转移指令。3 3 调用、返回指令调用、返回指令 n通常把具有一定功能的公通常把具有一定功能的公用程序段作为用程序段作为子程序子程序,在,在主程序中采用调用指令主程序中采用调用指令调调用子程序用子程序,子程序的最后,子程序的最后一条指令为一条指令为返回主程序返回主程序指指令令(RETRET)。n80518051指令系统中有指令系统中有2 2条调条调用指令,分别是用指令,分别是绝对绝对调用调用和和长长调用指令调用指令。n主程序调用子程序及从子主程序调用子程序及从子程序返回主程序

32、的过程如程序返回主程序的过程如右图所示。右图所示。3 3 调用、返回指令调用、返回指令 1)绝对绝对调用指令调用指令 汇编指令格式汇编指令格式 机器指令格式机器指令格式 操操 作作 ACALL addr11 a10a9a810001 a7a0 PC (PC)+2 SP (SP)+1,(SP)(PC0PC7)SP (SP)+1,(SP)(PC8 PC15)PC0PC10 addr010,PC11PC15不变不变注意:本指令提供注意:本指令提供11位子程序目的地址,调用地址的形成方法位子程序目的地址,调用地址的形成方法和绝对转移指令类似;被调用的子程序首地址必须在和绝对转移指令类似;被调用的子程序

33、首地址必须在ACALL指令后一字节所在的指令后一字节所在的2KB范围内的程序存储器中。范围内的程序存储器中。3 3 调用、返回指令调用、返回指令 2)长长调用指令调用指令 汇编指令格式汇编指令格式 机器指令格式机器指令格式 操操 作作 LCALL addr16 12H addr16 PC (PC)+3SP (SP)+1,(SP)(PC0PC7)SP (SP)+1,(SP)(PC8PC15)PC addr16注意:本指令提供注意:本指令提供16位子程序目的地址,被调用的子程序首地位子程序目的地址,被调用的子程序首地址可设置在址可设置在64KB程序存储器地址空间的任何位置。程序存储器地址空间的任何

34、位置。3 3 调用、返回指令调用、返回指令 3)返回返回指令指令汇编指令格式汇编指令格式 机器指令格式机器指令格式 操操 作作 RET 22H PC815 (SP),弹出断点高弹出断点高8位位SP (SP)-1PC07 (SP),弹出断点低弹出断点低8位位 SP (SP)-1注意:本指令的作用是从注意:本指令的作用是从子程序返回子程序返回。当程序执行到本指令时,。当程序执行到本指令时,表示结束子程序的执行,返回调用指令表示结束子程序的执行,返回调用指令(ACALL或或LCALL)的的下一条指令处下一条指令处(断点断点)继续往下执行。因此,它的主要操作继续往下执行。因此,它的主要操作是将栈顶的断

35、点地址送是将栈顶的断点地址送PC,于是,子程序返回主程序继续,于是,子程序返回主程序继续执行。执行。3 3 调用、返回指令调用、返回指令 3)返回返回指令指令汇编指令格式汇编指令格式 机器指令格式机器指令格式 操操 作作 RETI 32H PC815 (SP),弹出断点高弹出断点高8位位SP (SP)-1 PC07 (SP),弹出断点低弹出断点低8位位SP (SP)-1注意:本指令是注意:本指令是中断返回中断返回指令,除具有指令,除具有RET指令的功能外,还指令的功能外,还具有开放低优先级中断、恢复中断逻辑等功能。在编程时具有开放低优先级中断、恢复中断逻辑等功能。在编程时不能将两种返回指令混用

36、,中断返回一定要安排在中断服不能将两种返回指令混用,中断返回一定要安排在中断服务程序的最后。务程序的最后。4 4 空操作指令空操作指令 汇编指令格式汇编指令格式 机器指令格式机器指令格式 操操 作作 NOP 00H PC (PC)+1注意:这是一条单字节指令,除注意:这是一条单字节指令,除PC加加1指向下一条指令以外,指向下一条指令以外,它不执行其他任何操作,不影响其他寄存器和标志位。它不执行其他任何操作,不影响其他寄存器和标志位。NOP指令常用来产生一个机器周期的延迟,用来编写软件指令常用来产生一个机器周期的延迟,用来编写软件延时延时程序。程序。5 5 控制转移类指令应用实例控制转移类指令应

37、用实例【例例1】已知在累加器已知在累加器A中保存有命令键键值,编写程序使程中保存有命令键键值,编写程序使程序根据键值不同而转向不同的子程序入口。序根据键值不同而转向不同的子程序入口。解:本题可以采用散转指令,程序如下:本题可以采用散转指令,程序如下:KEY:CLR C ;清进位清进位 RLC A ;键值乘键值乘2 MOV DPTR,#KEYTAB ;DPTR指向命令键跳转表首址指向命令键跳转表首址 JMP A+DPTR ;散转到命令键入口散转到命令键入口KEYTAB:AJMP KEYPR0 ;转向转向0号键处理程序号键处理程序 AJMP KEYPR1 ;转向转向1号键处理程序号键处理程序 AJ

38、MP KEYPR2 ;转向转向2号键处理程序号键处理程序 从程序中看出,当从程序中看出,当(A)=00H时,散转到时,散转到KEYPR 0;当;当(A)=01H,散转到,散转到KEYPR l。由于。由于AJMP是是双字节双字节指令,指令,转移表中相邻的转移表中相邻的AJMP指令地址相差指令地址相差2个字节,所以散转前个字节,所以散转前应先将应先将A中键值乘中键值乘2。5 5 控制转移类指令应用实例控制转移类指令应用实例【例例2】设设(SP)=30H,符号地址,符号地址PROG1指向程序存储器的指向程序存储器的5678H单元,当前单元,当前PC值为值为0123H。从。从0123H处执行指令处执行

39、指令“LCALL PROG1”,分析执行后,分析执行后PC、SP的值和相关存储器的值和相关存储器的内容。的内容。解解:执行过程为:执行过程为:(PC)+3=0123H+3=0126H 将将PC内容压入堆栈:向内容压入堆栈:向(SP)+1=31H中压入中压入26H,向,向(SP)+1=32H中压入中压入01H,(SP)=32H。将将PROG1=5678H送入送入PC,即,即(PC)=5678H。程序转向。程序转向以以5678H为首地址的子程序执行。为首地址的子程序执行。最终执行结果是:最终执行结果是:(PC)=5678H、(SP)=32H、(31H)=26H、(32H)=01H。5 5 控制转移

40、类指令应用实例控制转移类指令应用实例【例例3】编程判断内部编程判断内部RAM 30H单元中的数据是单元中的数据是奇数还是偶数,如果是偶数,程序转向奇数还是偶数,如果是偶数,程序转向PROG0处,如果是奇数程序转向处,如果是奇数程序转向PROG1处处(0按照偶数对待按照偶数对待)。解:程序如下:解:程序如下:MOV A,30H;数据送累加器数据送累加器 ANL A,#01H;高高7位清位清0,保留最低位保留最低位 JZ PROG0;如果全为如果全为0说明是偶数说明是偶数,转转 向向PROG0 SJMP PROG1;数据为奇数数据为奇数,转向转向PROG1【例例4】利用利用DJNZ指令和指令和NO

41、P指令编写一循环程序,实现延时指令编写一循环程序,实现延时1ms(晶振频率为晶振频率为12MHz)。解:程序如下:解:程序如下:DELAY:MOV A,#0AH;1s LOOP:MOV R2,#30H;1s10 DJNZ R2,$;2s4810 DJNZ R1,LOOP ;2s10 NOP;1s NOP;1s NOP;1s NOP;1s NOP;1s RET;2s总的延时时间为:总的延时时间为:998s,若再加上调用本子程序的调用指令,若再加上调用本子程序的调用指令所用的时间所用的时间2s共共1000s,即,即1ms。五、位操作类指令五、位操作类指令 1 1 位位数据数据传送传送指令指令 2

42、2 位位逻辑运算逻辑运算指令指令 3 3 位位清清0 0、置置1 1指令指令 4 4 位位条件转移条件转移类指令类指令5 5 位操作类指令应用实例位操作类指令应用实例 五、位操作类指令五、位操作类指令 n8051硬件结构中有个位处理机又称布尔处理机,它具有一硬件结构中有个位处理机又称布尔处理机,它具有一套完整的处理位变量的指令集,包括套完整的处理位变量的指令集,包括位变量传送、逻辑运位变量传送、逻辑运算、控制程序转移指令算、控制程序转移指令等。等。n在进行位寻址时,在进行位寻址时,PSW中的进位标志中的进位标志CY作为位处理机的作为位处理机的累加器,称为累加器,称为位累加器位累加器C。n位寻址

43、空间包括以下两部分:位寻址空间包括以下两部分:u片内片内RAM中位寻址区中位寻址区即字节地址即字节地址20H2FH单元中单元中连续的连续的128个位,位地址为个位,位地址为00H7FH。u部分特殊功能寄存器中的可寻址位部分特殊功能寄存器中的可寻址位凡凡SFR中字节地中字节地址能被址能被8整除的特殊功能寄存器都可以进行位寻址。位地整除的特殊功能寄存器都可以进行位寻址。位地址为址为80F7H,一共,一共83位。位。五、位操作类指令五、位操作类指令 n在位寻址指令中,可用以下几种方式表示在位寻址指令中,可用以下几种方式表示位地址位地址bit:u寄存器名寄存器名.位位u字节地址字节地址.位位u位地址位

44、地址u位名称位名称u事先用伪指令定义的事先用伪指令定义的字符名称字符名称1 1 位数据传送指令位数据传送指令 汇编指令格式汇编指令格式 机器指令格式机器指令格式 操操 作作 MOV C,bit A2H bit C (bit)MOV bit,C 92H bit bit (C)注意:本指令一个操作数为注意:本指令一个操作数为位地址位地址(bit),另一个必定,另一个必定为位累加器为位累加器C(即进位标志位即进位标志位CY)。此指令不影响其。此指令不影响其他寄存器或标志位。他寄存器或标志位。2 2 位逻辑运算指令位逻辑运算指令1)1)位逻辑位逻辑位逻辑位逻辑“与与与与”指令指令指令指令 汇编指令格式

45、汇编指令格式 机器指令格式机器指令格式 操操 作作 ANL C,bit 82H bit C (C)(bit)ANL C,/bit B0H bit C (C)(bit)注意:斜杠注意:斜杠“/”表示对该位取反后再参与运算,但不表示对该位取反后再参与运算,但不改变原来的数值。改变原来的数值。8051单片机中单片机中没有位逻辑没有位逻辑“异异或或”指令。指令。2 2 位逻辑运算指令位逻辑运算指令2)位逻辑位逻辑“或或”指令指令 汇编指令格式汇编指令格式 机器指令格式机器指令格式 操操 作作 ORL C,bit 72H bit C(C)(bit)ORL C,/bit A0H bit C(C)(bit)

46、注意:斜杠注意:斜杠“/”表示对该位取反后再参与运算,表示对该位取反后再参与运算,但不改变原来的数值。但不改变原来的数值。8051单片机中单片机中没有位逻辑没有位逻辑“异或异或”指令。指令。3 3 位清位清0 0、置、置1 1指令指令 1)位位清清0指令指令 汇编指令格式汇编指令格式 机器指令格式机器指令格式 操操 作作 CLR C C3H C 0 CLR bit C2H bit bit 0注意:本指令执行结果不影响其他标志位。当直注意:本指令执行结果不影响其他标志位。当直接位地址为端口接位地址为端口P0P3中的某一位时,具有中的某一位时,具有“读读改改写写”功能。功能。3 3 位清位清0 0

47、、置、置1 1指令指令 2)位位置置1指令指令 汇编指令格式汇编指令格式 机器指令格式机器指令格式 操操 作作 SETB C D3H C 1 SETB bit D2H bit bit 1注意:本指令执行结果不影响其他标志位。当直接注意:本指令执行结果不影响其他标志位。当直接位地址为端口位地址为端口P0P3中的某一位时,具有中的某一位时,具有“读读改改写写”功能。功能。3 3 位清位清0 0、置、置1 1指令指令 3)位位取反取反指令指令 汇编指令格式汇编指令格式 机器指令格式机器指令格式 操操 作作 CPL C B3H C (/C)CPL bit B2H bit bit (/bit)注意:本指

48、令执行结果不影响其他标志位。当直接注意:本指令执行结果不影响其他标志位。当直接位地址为端口位地址为端口P0P3中的某一位时,具有中的某一位时,具有“读读改改写写”功能。功能。4 4 位条件转移类指令位条件转移类指令 1)判判位累加器位累加器C转移指令转移指令 汇编指令格式汇编指令格式 机器指令格式机器指令格式 操操 作作 JC rel 40H rel PC (PC)+2 若若(C)=1,则程序转移则程序转移PC (PC)+rel 若若(C)=0,则程序往下顺序执行则程序往下顺序执行 JNC rel 50H rel PC (PC)+2 若若(C)=0,则程序转移则程序转移PC (PC)+rel

49、若若(C)=1,则程序往下顺序执行则程序往下顺序执行注意:本指令执行结果不影响注意:本指令执行结果不影响PSW标志位。标志位。4 4 位条件转移类指令位条件转移类指令 2)判位变量判位变量转移指令转移指令 汇编指令格式汇编指令格式 机器指令格式机器指令格式 操操 作作 JB bit,rel 30H bit rel PC (PC)+3 若若(bit)=1,则程序转移则程序转移 (PC)+rel 若若(bit)=0,则程序往下顺序执则程序往下顺序执行行 JNB bit,rel 20H bit rel PC (PC)+3 若若(bit)=0,则程序转移则程序转移PC (PC)+rel 若若(bit)

50、=1,则程序往下顺序执则程序往下顺序执行行注意:本指令执行结果不影响注意:本指令执行结果不影响PSW标志位。标志位。4 4 位条件转移类指令位条件转移类指令 3)判位变量判位变量清清0转移转移指令指令 汇编指令格式汇编指令格式 机器指令格式机器指令格式 操操 作作 JBC bit,rel 10H bit rel PC (PC)+3 若若(bit)=1,则程序转移则程序转移PC(PC)+rel,且且bit0 若若(bit)=0,则程序往下顺序执行则程序往下顺序执行注意:本指令执行结果不影响注意:本指令执行结果不影响PSW标志位。标志位。5 5 位操作类指令应用实例位操作类指令应用实例【例例1】将

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com