单片机3-2.ppt
《单片机3-2.ppt》由会员分享,可在线阅读,更多相关《单片机3-2.ppt(99页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、MCS51系列单片机指令系统分类系列单片机指令系统分类 按寻址方式分为以下七种:按寻址方式分为以下七种:按功能分为以下五种:按功能分为以下五种:1 1、立即寻址、立即寻址 1 1、数据传送指令、数据传送指令2 2、直接寻址、直接寻址 2 2 2 2、算术运算指令、算术运算指令、算术运算指令、算术运算指令3 3、寄存器寻址、寄存器寻址 3 3、逻辑运算指令、逻辑运算指令4 4、寄存器间接寻址指令、寄存器间接寻址指令 4 4、控制转移类指令、控制转移类指令5 5、相对寻址、相对寻址 5 5、位操作指令、位操作指令6 6、变址寻址、变址寻址7 7、位寻址、位寻址1二、二、算术运算指令算术运算指令算术
2、运算包括加、减、乘、除四则运算,共算术运算包括加、减、乘、除四则运算,共2424条,助记符条,助记符8 8种。种。23说明说明l多数算术运算指令多数算术运算指令会影响标志位会影响标志位lCPUCPU执行算术运算指令后,根据数据操执行算术运算指令后,根据数据操作情况作情况自动设置自动设置PSWPSW中的中的CyCy、ACAC、OVOV、P Pl进位进位(借位借位)标志标志CyCy为无符号整数的多字为无符号整数的多字节加法、减法、移位等操作提供了方便节加法、减法、移位等操作提供了方便l溢出标志溢出标志OVOV可方便的控制可方便的控制补码运算补码运算l辅助进位标志辅助进位标志ACAC则可用于则可用于
3、BCDBCD码运算码运算4算术运算指令对标志位影响情况如下所示算术运算指令对标志位影响情况如下所示注:符号符号表示相应的指令影响该标志位,表示相应的指令影响该标志位,0 0表示相表示相应的指令对该标志位清应的指令对该标志位清0 0,x x表示相应的指令对该标志表示相应的指令对该标志位没有影响。位没有影响。5 加加1指令(指令(INC)和减)和减1指令(指令(DEC)中只有对累)中只有对累加器的操作(加器的操作(INC A和和DEC A)对)对奇偶位奇偶位P有影响,有影响,对其它标志没有影响,而其它的加对其它标志没有影响,而其它的加1指令和减指令和减1指令对指令对标志位也没有影响。标志位也没有影
4、响。注意:注意:没有指令没有指令 DEC DPTR 可用指令可用指令 DEC DPL 代替代替6关于关于DA指令需要说明的是:指令需要说明的是:DA指令的功能是对累加器A中刚进行的两个BCD码加法的结果进行十进制调整(加6修正)。该指只能紧跟紧跟在加法指令在加法指令(ADD/ADDC)后进行并且两个加数必须已经是BCD码,而且也只能对累加器A中结果进行调整。当累加器A中的低4位数出现了非BCD码(10101111)或低4位产生进位(AC=1),则应在低4位加6调整,以产生低4位正确的BCD结果。当累加器A中的高4位数出现了非BCD码(10101111)或高4位产生进位(CY=1),则应在高4位
5、加6调整,以产生高4位正确的BCD结果。注意,DA指令不能对减法进行十进制调整。7【例例】若(A)0101 0110B,表示的BCD码为(56)BCD(R2)0110 0111B,表示的BCD码为(67)BCD,(CY)0。执行以下指令:ADD A,R2 DA A 请分析指令执行后的结果。根据题意分析程序指令执行的过程如下图所示:由于:(A)0010 0011B,即(23)BCD,(CY)1,即(01)BCD 结果为BCD数123。84位二进制数来表示位二进制数来表示1位十进制数中的位十进制数中的09这这10个数码个数码例:例:例:例:若若若若A=(25)A=(25)A=(25)A=(25)B
6、CDBCDBCDBCD 而而而而R0=(39)R0=(39)R0=(39)R0=(39)BCDBCDBCDBCD 则:则:则:则:ADD AADD AADD AADD A,R0 R0 R0 R0;A=5EH A=5EH A=5EH A=5EH DA A DA A DA A DA A;A=(64)A=(64)A=(64)A=(64)BCDBCDBCDBCD 执行的过程为执行的过程为执行的过程为执行的过程为:2 5:2 5:2 5:2 5 H H H H +3 9 H +3 9 H +3 9 H +3 9 H 5 E H 5 E H 5 E H 5 E H 加法运算的结果加法运算的结果加法运算的结
7、果加法运算的结果 +0 6 +0 6 +0 6 +0 6 H H H H 调整调整调整调整 6 4 6 4 6 4 6 4 H H H H 调整后的结果调整后的结果调整后的结果调整后的结果 9【例例】编制2个十六进制数加法程序,假定和超过双字节 (21H 20H)+(31H 30H)(42H 41H 40H)分析:先低字节作不带进位求和,再作带进位高字节求和。程序如下:MOV A,20H ADD A,30H MOV 40H,A ;(20H)+(30H)40H MOV A,21H ADDC A,31H MOV 41H,A ;(21H)+(31H)+(C)41H MOV A,#00H ;准备处理最
8、高位 ADDC A,#00H;记入最高位 MOV 42H,A10思考一下这段程思考一下这段程序中序中A的变化的变化(A)=#00H+#00H+(C)【例例】双字节无符号数相减(31H 30H)(41H 40H)(31H 30H).程序如下:程序如下:MAIN:CLR C ;CY清零清零 MOV R0,#30H ;设被减数地址 MOV R1,#40H ;减数地址 MOV A,R0 ;取被减数低字节 SUBB A,R1 ;被减数低字节减去减数低字节 MOV R0,A ;存低字节差 在在30HINC R0 ;指向被减数高字节31H 加一指令加一指令INC R1 ;指向被减数高字节41HMOV A,R
9、0 ;取被减数高字节SUBB A,R1 ;被减数高字节减去减数高字节并减 ;去低字节相减时产生的借位MOV R0,A ;存高字节差 在在31HHERE:SJMP HERE11【例例】双字节乘法程序,要求:(R0R1)(R2)(R3R4R5)分析:设(R0)=J,(R1)=K,(R2)=L,则:程序如下:程序如下:MOV A,R1 MOV B,R2 MUL AB ;K*L MOV R5,A ;KL低R5 MOV R4,B ;KL高暂存R4 MOV A,R0 MOV B,R2MUL AB ;J*LADD A,R4 MOV R4,A ;KL高+JL低R4MOV A,BADDC A,#00H MOV
10、R3,A ;JL高+(C)R312【例例】利用除法指令进行代码转换。设一个8位无符号二进制数存放在内部RAM的30H单元中,将其转化为10进制数据。百位,十位,个位分别存放在40H,41H,42H中。分析:(30H)/100商(百位)(40H)余数/10 商(十位)(41H)余数(个位)(42H)程序如下:MOV R0,#40H ;要存放的首地址MOV A,30HMOV B,#64H ;(除数为除数为100)DIV ABMOV R0,A ;除以100后的商MOV A,B ;余数送至AMOV B,#0AH;(除数为除数为10)DIV ABINC R0 ;指向41H MOV R0,AINC R0
11、;指向42HMOV R0,B 13MCS51系列单片机指令系统分类系列单片机指令系统分类 按寻址方式分为以下七种:按寻址方式分为以下七种:按功能分为以下五种:按功能分为以下五种:1 1、立即寻址、立即寻址 1 1、数据传送指令、数据传送指令2 2、直接寻址、直接寻址 2 2、算术运算指令、算术运算指令3 3、寄存器寻址、寄存器寻址 3 3 3 3、逻辑运算指令、逻辑运算指令、逻辑运算指令、逻辑运算指令4 4、寄存器间接寻址指令、寄存器间接寻址指令 4 4、控制转移类指令、控制转移类指令5 5、相对寻址、相对寻址 5 5、位操作指令、位操作指令6 6、变址寻址、变址寻址7 7、位寻址、位寻址14
12、三、逻辑操作类指令三、逻辑操作类指令逻辑运算类指令共有逻辑运算类指令共有2424条,包括与、或、条,包括与、或、异或、清零、求反及移位指令异或、清零、求反及移位指令当当目的操作数为累加器目的操作数为累加器A A时会影响奇偶标时会影响奇偶标志位志位P P,带进位的移位指令会影响带进位的移位指令会影响C C除此之外,逻辑运算类指令不影响程序除此之外,逻辑运算类指令不影响程序状态状态PSWPSW151617注:注:符号符号“”表示两个数按位进行逻辑与,符号表示两个数按位进行逻辑与,符号“”表示表示两个数按位进行逻辑或,符号两个数按位进行逻辑或,符号“”表示两个数按位进行表示两个数按位进行逻辑异或,逻
13、辑异或,“”表示累加器表示累加器A A的内容按位取反。的内容按位取反。逻辑逻辑“与与”指令常常用于屏蔽字节中的某些位。指令常常用于屏蔽字节中的某些位。若清除某若清除某位,则用位,则用“0 0”与该位进行逻辑与该位进行逻辑“与与”,若保留某位,则用,若保留某位,则用“1 1”与该位进行逻辑与该位进行逻辑“与与”。例如例如:若(若(P1P1)=C5H=11000101B=C5H=11000101B,为屏蔽,为屏蔽P1P1口的高口的高4 4位,需执行指令位,需执行指令:ANL P1,#0FH ANL P1,#0FH 指令执行结果为:指令执行结果为:(P1)=05H=00000101B(P1)=05H
14、=00000101B18注:注:逻辑逻辑“或或”指令常常用于使字节中的某些位置指令常常用于使字节中的某些位置“1 1”。若置若置“1 1”某位,某位,则用则用“1 1”与该位进行逻辑与该位进行逻辑“或或”,若保留某位,则用,若保留某位,则用“0 0”与该位进与该位进行逻辑行逻辑“或或”。例如例如:将将P1P1口的口的4 40 0位设置成累加器位设置成累加器A A的的4 40 0位,而位,而P1P1口高口高3 3位位保持不变,需执行下列程序指令保持不变,需执行下列程序指令:ANL A,#00011111B ANL A,#00011111B ANL P1,#11100000B ANL P1,#11
15、100000B ORL P1,A ORL P1,A逻辑逻辑“异或异或”指令常用于使字节中的某些位取反。指令常用于使字节中的某些位取反。若用若用“1 1”与某位与某位进行逻辑进行逻辑“异或异或”则则该位取反该位取反,若,若保留某位保留某位,则用,则用“0 0”与该位进行与该位进行逻辑逻辑“异或异或”。可以利用异或指令对某个单元进行可以利用异或指令对某个单元进行自身异或,以实现清零自身异或,以实现清零操作。操作。例如例如:若若(A)=B5H=10110101B(A)=B5H=10110101B,执行下列程序指令,执行下列程序指令:XRL A,#0F0H XRL A,#0F0H ;A A的高的高4
16、4位取反,低位取反,低4 4位保持不变位保持不变(A)=45H(A)=45H MOV 30H,A MOV 30H,A ;(30H)=(A)=45H(30H)=(A)=45H XRL A,30H XRL A,30H ;A A清零清零 19注:注:“RL ARL A”使累加器使累加器A A的各位循环左移的各位循环左移1 1位相当于原内容位相当于原内容乘乘2 2为左移为左移“RR ARR A”使累加器使累加器A A的各位循环右移的各位循环右移1 1位相当于原内容位相当于原内容除除2 2为右移为右移预先清零预先清零CYCY,采用带进位位的左移和右移,能够,采用带进位位的左移和右移,能够保留乘除产生的进
17、保留乘除产生的进位和余数位和余数。例例:设设(A)=00000111B=07H(A)=00000111B=07H,(,(CYCY)=0=0,则执行指令,则执行指令:RL A RL A ;(A A)=00001110B=0EH=00001110B=0EH,(,(CYCY)=0=0 RRC A RRC A ;(A A)=00000111B=07H=00000111B=07H,(,(CYCY)=0=0CLR C CLR C ;RRC A RRC A ;(A A)=00000011B=03H=00000011B=03H,(,(CYCY)=1=120例:例:设(设(C)=0CLR C;清零清零MOV A
18、,#5CH;01011100BRL A;10111000BRLC A;01110000B(c)=?RR A;00111000BRRC A;10011100B(c)=?SWAP A;11001001B例:例:设设 A=11000101 A=11000101,Cy=0Cy=0,分别执行分别执行下列单条指令:下列单条指令:CPL ACPL A 求:求:A=A=,Cy=Cy=00111010 000111010 010001011 010001011 010001010 110001010 1RL A RL A A=,Cy=RLC A RLC A A=,Cy=21【例例3-14】设40H单元中存放的是
19、一个16位二进制数的低8位,41H单元中存放的是这个16位二进制数的高8位(假设这个数小于128),请将这个16位二进制数进行左移1位。分析:实现所要求的功能应该按如下图所示的设计思路进行设计分析:实现所要求的功能应该按如下图所示的设计思路进行设计程序指令如下程序指令如下:CLR C ;CY清零清零MOV R1,#40H;设低字节地址设低字节地址MOV A,R1 ;取低取低8位位 为什么用为什么用A?RLC A ;低;低8位左移位左移MOV R1,A ;保存移位后的低保存移位后的低8位字节位字节INC R1 ;指向高指向高8位地址位地址MOV A,R1 ;取高取高8位位为什么用为什么用A?RL
20、C A ;高;高8位左移,并带进低位左移,并带进低8位左移产生的进位位位左移产生的进位位MOV R1,A ;保存移位后的高保存移位后的高8位字节位字节 22注意:只能对累加器注意:只能对累加器A A进行移位进行移位MCS51系列单片机指令系统分类系列单片机指令系统分类 按寻址方式分为以下七种:按寻址方式分为以下七种:按功能分为以下五种:按功能分为以下五种:1 1、立即寻址、立即寻址 1 1、数据传送指令、数据传送指令2 2、直接寻址、直接寻址 2 2、算术运算指令、算术运算指令3 3、寄存器寻址、寄存器寻址 3 3、逻辑运算指令、逻辑运算指令4 4、寄存器间接寻址指令、寄存器间接寻址指令 4
21、4 4 4、控制转移类指令、控制转移类指令、控制转移类指令、控制转移类指令5 5、相对寻址、相对寻址 5 5、位操作指令、位操作指令6 6、变址寻址、变址寻址7 7、位寻址、位寻址23四、控制转移类指令四、控制转移类指令转移指令通过改写转移指令通过改写PCPC的当前值,从而改变的当前值,从而改变CPUCPU执执行程序的顺序,使程序发生跳转。行程序的顺序,使程序发生跳转。转移指令分类:转移指令分类:1)1)无条件转移无条件转移:执执行行无无条条件件转转移移指指令令,程程序序无无条条件件转转移移到到指指定处。定处。2)2)条件转移条件转移:指指令令中中给给出出转转移移条条件件,执执行行指指令令时时
22、,先先测测试试条条件件,若若满满足足条条件件,则则程程序序发发生生转转移移,否否则则,仍顺序执行程序。仍顺序执行程序。243)3)子程序调用和返回指令子程序调用和返回指令:控制程序从主程序转移到子程序入口地址,子控制程序从主程序转移到子程序入口地址,子程序执行完后,返回主程序继续执行。程序执行完后,返回主程序继续执行。4)4)中断中断:中断是与接口硬件密切相关的技术,当中断发中断是与接口硬件密切相关的技术,当中断发生时,也会改变程序的执行顺序,使程序转到生时,也会改变程序的执行顺序,使程序转到中断服务子程序执行,执行完后返回主程序。中断服务子程序执行,执行完后返回主程序。这类指令共这类指令共1
23、717条条,如下表所列:如下表所列:252627l长转长转LJMPLJMP:提供的是1616位地址位地址,因此程序可以转向64KB的程序存储器地址空间的任何单元。该指令不影响pswl短转短转AJMPAJMP:指令的转移范围为AJMP下面一条指令的存储地址相同的2KB2KB区间区间内,可以向前也可以向后。l相对转相对转SJMPSJMP:我们往往并不是直接把要转移(或调用)到的目标指令的地址给出,而是通过标号标号给出,该标号对应的地址由编译器自动计算出。SJMP rel28SJMP NEXTSJMP NEXT NEXT NEXT:lHERE:SJMP HERE,或:SJMP$,表示程序“原地踏步”
24、,造成程序的无限循环,一般用于主程序结束的位置,等待中断信号的到来。有时候也用有NOP的无限循环实现这一功能,如:WAITINT:NOP NOP NOP SJMP WAITINT29l散转散转指令指令 JMP A+DPTRJMP A+DPTR的转移地址由数据指针DPTR的16位数和累加器A的8位数进行无符号数相加形成,并直接送入PC,指令执行过程对DPTR、A和标志位均无影响。该条指令具有散转功能其转移地址不是在汇编或编程时确定的,而是在程序运行过程中动态决定动态决定的。例:根据累加器A中键值的不同跳转到相应的程序。MOV DPTR,#TABLE RL A ;将A值乘2,因为AJMP 指令为双
25、字节指令 JMP A+DPTR TABLE:AJMP TAB0 AJMP TAB1 30l比较不相等转移指令比较不相等转移指令(CJNE),不等则转移,不等则转移 CJNE A,#data,rel CJNE Rn,#data,rel CJNE Ri,#data,rel CJNE A,direct,rel例例:编写指令序列:当:编写指令序列:当P1P1口内容为口内容为8080H H时程序才向下执行,否时程序才向下执行,否则处于等待状态。程序如下:则处于等待状态。程序如下:MOV AMOV A,#80H#80H LOOPLOOP:CJNE ACJNE A,P1P1,LOOP LOOP;比较不相等;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机
限制150内