资源预览内容
第1页 / 共79页
第2页 / 共79页
第3页 / 共79页
第4页 / 共79页
第5页 / 共79页
第6页 / 共79页
第7页 / 共79页
第8页 / 共79页
第9页 / 共79页
第10页 / 共79页
亲,该文档总共79页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
,第3章 MCS - 51单片机指令系统,3.1 单片机指令系统概述 3.2 寻址方式 3.3 分类指令,MCS-51单片机指令系统的特点:,(1)指令执行快。 (2)指令短,约有一半的指令为单字节指令。 (3)用一条指令即可实现2个一字节的相乘或相除。 (4)具有丰富的位操作指令。 (5)可直接用传送指令实现端口的输入输出操作。,3.1 单片机指令系统概述,在MCS-51指令中,一般指令主要由操作码、操作数组成。 指令应具有以下功能: (1)操作码指明执行什么性质和类型的操作。例如,数的传送、加法、减法等。 (2)操作数指明操作的数本身或者是操作数所在的地址。 (3)指定操作结果存放的地址。,指令格式,1. 单字节指令单字节指令格式由8位二进制编码表示, 例如: CLR AE4H2. 双字节指令双字节指令格式由两个字节组成, 操作码和操作数, 例如: MOV A, 10H74H 10H 3. 三字节指令三字节指令格式中, 第一个字节为操作码, 后两个字节为操作数, 例如: MOV 40H, 30H75H 40H 30H,一条汇编语言指令中最多包含 4 个区段, 如下所示: 标号: 操作码 操作数 ;注释4 个区段之间要用分隔符分开: 标号与操作码之间用“: ”隔开, 操作码与操作数之间用空格隔开, 操作数与注释之间用“;”隔开, 如果操作数有两个以上, 则在操作数之间要用逗号“,”隔开 (乘法指令和除法指令除外 )。,指令描述符号介绍,Rn当前选中的寄存器区中的8个工作寄存器R0R7(n=07)。 Ri当前选中的寄存器区中的2个工作寄存器R0、R1(i=0,1)。 direct8位的内部数据存储器单元中的地址。 #data包含在指令中的8位常数。 #data16包含在指令中的16位常数。 addr1616位目的地址。 addr1111位目的地址。,rel8位带符号的偏移字节,简称偏移量。 DPTR数据指针,可用作16位地址寄存器。 bit内部RAM或专用寄存器中的直接寻址位。 A累加器。 B专用寄存器,用于乘法和除法指令中。 C进位标志或进位位,或布尔处理机中的累加器。,间址寄存器或基址寄存器的前缀,如Ri,DPTR。 / 位操作数的前缀,表示对该位操作数取反,如/bit。 片内RAM的直接地址或寄存器。 ()由寻址的单元中的内容。箭头左边的内容被箭头右边的内容所代替。,3.2 寻址方式,所谓寻址方式, 就是寻找操作数地址的方式, 在用汇编语言编程时, 数据的存放、传送、 运算都要通过指令来完成。 编程者必须自始至终都要十分清楚操作数的位置, 以及如何将它们传送到适当的寄存器去参与运算。每一种计算机都具有多种寻址方式。寻址方式的多少是反映指令系统优劣的主要指标之一。,在 MCS -51单片机指令系统中, 有以下 7种寻址方式: (1) 立即寻址;(2) 直接寻址;(3) 寄存器寻址;(4) 寄存器间接寻址;(5) 基址寄存器加变址寄存器间接寻址;(6) 相对寻址;(7) 位寻址。,1. 立即寻址立即寻址方式是指操作数包含在指令字节中。 跟在指令操作码后面的数就是参加运算的数, 该操作数称为立即数。 立即数有一字节和二字节两种可能, 例如指令: MOV A, 3AHMOV DPTR, 0DFFFH,2. 直接寻址在指令中直接给出操作数的地址, 这种寻址方式就属于直接寻址方式。在这种方式中, 指令的操作数部分直接是操作数的地址。 在MCS -51 单片机指令系统中, 直接寻址方式中可以访问 3 种存储器空间: (1) 内部数据存储器的低 128 个字节单元(00H7FH)。 (2) 特殊功能寄存器。 特殊功能寄存器只能用直接寻址方式进行访问。 (3) 位地址空间。,MOV A,52H ;把片内RAM字节地址52H单元的内 容送累加器A中。MOV 52H,A ;把A的内容传送给片内RAM的52H 单元中。MOV 50H,60H ;把片内RAM字节地址60H单元的内 容送到50H单元中。MOV IE,#40H ;把立即数40H送到中断允许寄存器 IE。IE为专用功能寄存器,其字节 地址为0A8H。该指令等价于MOV 0A8H,#40H。INC 60H ;将地址60H单元中的内容自加1。,3. 寄存器寻址在该寻址方式中, 参加操作的数存放在寄存器里。寄存器包括8个工作寄存器R0R7, 累加器A, 寄存器B、数据指针DPTR和布尔处理器的位累加器C。 MOV A,Rn ;A(Rn) 其中n为07之一, Rn是工作寄存器。 MOV Rn,A ;Rn(A) MOV B,A ;B(A),4. 寄存器间接寻址在这种寻址方式中, 寄存器的内容为操作数的地址。 寄存器间接寻址只能使用寄存器R0、R1 作为地址指针,寻址内部RAM区的数据; 当访问外部RAM时, 可使用R0、 R1及DPTR作为地址指针。寄存器间接寻址符号为“”, 例如:,例如:MOV R0,#60H ;R060HMOV A, R0 ;A (R0)MOV A ,R1 ;A (R1) 例如:MOV DPTR,#3456H ;DPTR3456HMOVX A,DPTR ;A (DPTR)是把DPTR寄存器所指的那个外部数据存储器(RAM)的内容传送给A,假设(3456H)=99H,指令运行后(A)=99H。,5. 基址寄存器加变址寄存器间接寻址这种寻址方式用于访问程序存储器中的数据表格, 它以基址寄存器DPTR或PC的内容为基本地址, 加上变址寄存器A的内容作为操作数的地址, 例如: MOVC A, DPTR+AJMP A+DPTRMOVC A, PC+A,6. 相对寻址在MCS -51 指令系统中设有转移指令, 分为直接转移和相对转移指令, 在相对转移指令中采用相对寻址方式。这种寻址方式是以PC的内容为基本地址, 加上指令中给定的偏移量作为转移地址。指令中给出的偏移量是一个 8 位带符号的常数, 可正可负, 其范围为128+127。 SJMP 08H ;PC转移指令地址+2+08H,7. 位寻址 该种寻址方式中, 操作数是内部RAM单元中某一位的信息。,SETB TR0 ;TR01CLR 00H ;(00H)0MOV C,57H ;将57H位地址的内容传送到 位累加器C中ANL C,5FH ;将5FH位状态与进位位C相与, 结果在C中,3.3 指令系统,3.3.1 指令分类,MCS-51指令系统有42种助记符,代表了33种功能,指令助记符与各种可能的寻址方式相结合,共构成111条指令。按指令的功能,MCS-51指令系统可分为下列5类:(1)数据传送类指令(29条)(2)算术运算类指令(24条)(3)逻辑运算及移位类指令(24条)(4)位操作类指令(17条)(5)控制转移类指令(17条),3.3.2 数据传送类指令,数据传送类指令一般的操作是把源操作数传送到指令所指定的目标地址。指令执行后,源操作数保持不变,目的操作数为原操作数所替代数据传送类指令用到的助记符有:MOV,MOVX,MOVC,XCH,XCHD,PUSH,POP,SWAP。格式: MOV 目的操作数,源操作数功能:目的操作数(源操作数中的数据)源操作数可以是:A、Rn、direct、Ri、#data目的操作数可以是:A、Rn、direct、Ri,1 以累加器为目的操作数的内部数据传送指令,2 数据传送到工作寄存器Rn的指令,3数据传送到内部RAM单元或特殊功能寄存器SFR的指令,片内数据RAM及寄存器的数据传送指令MOV、PUSH和POP共18条。,4 累加器A与外部数据存储器之间的传送指令片外数据存储器数据传送指令MOVX共4条。,5程序存储器内容送累加器MOVC A,A+PCMOVC A,A+DPTR程序存储器查表指令MOVC共2条,6堆栈操作,所谓堆栈是在片内RAM中按“先进后出,后进先出”原则设置的专用存储区。数据的进栈出栈由指针SP统一管理。堆栈的操作有如下两条专用指令:PUSH direct;SP(SP+1),(SP)(direct)POP direct ;(direct)(SP),SP SP-1 PUSH是进栈(或称为压入操作)指令。 POP是出栈(或称为弹出操作)指令。,7字节交换指令数据交换主要是在内部RAM单元与累加器A之间进行,有整字节和半字节两种交换。(1)整字节交换指令,XCH A,Rn ;A Rn XCH A ,direct ;A(direct) XCH A,Ri ;A(Ri),XCHD A,Ri ;A03(Ri)03 SWAP A ;A03A47,(2)半字节交换指令,【例】 将片内RAM 30H单元与40H单元中的内容互换。,方法1(直接地址传送法):MOV 31H,30HMOV 30H,40HMOV 40H,31HSJMP $,方法2(间接地址传送法):MOV R0,#40HMOV R1,#30HMOV A,R0MOV B,R1MOV R1,AMOV R0,BSJMP $,方法3(字节交换传送法):MOV A,30HXCH A,40HMOV 30H,ASJMP $,方法4(堆栈传送法):PUSH 30HPUSH 40HPOP 30HPOP 40HSJMP $,3.3.3 算术运算类指令,算术运算指令,算术运算指令,影响标志位的指令,影响标志位的指令,一、 加法指令,1. 普通加法指令ADD A, RnADD A, directADD A, RiADD A, data,例 写出以下一段程序各条指令执行的结果MOV A, #0B3H;MOV 20H, #10H;MOV R0, #20H; ADD A, R0;ADD A, R0;ADD A, #10H;,例如: 120 和 100 之和为 220, 显然大于 127, 相加时,0 1 1 1 1 0 0 0 120 0 1 1 0 0 1 0 0 100 1 1 0 1 1 1 0 0 220,+,符号位(最高位)由 0 变 1, 两个正数相加结果变负, 实际上它是和数的最高位, 符号位移入了进位标志, 此时位 6 有进位而位 7 无进位, 置位溢出标志OV, 结果溢出。,程序状态字PSW,D7 D6 D5 D4 D3 D2 D1 D0,Cy (Carry):进位 AC (Auxiliary Carry):辅助进位 F0 (Flag):用户标志 RS1、 RS0:寄存器组选择控制位 OV (Overflow) :溢出 P (Parity):奇偶标志,同样, 120和100 相加, 结果应为220, 显然小于128, 相加时,1 0 0 0 1 0 0 0 -120 1 0 0 1 1 1 0 0 -100,+,1 0 0 1 0 0 1 0 0 -220,符号位由1变为0, 两个负数相加结果变为正数, 这是因为符号位移入进位标志, 位 6 无进位而位 7 有进位, 置位溢出标志OV, 由此可判断结果溢出。,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号