0102单片机原理与应用技术第3节 MCS-51的指集.ppt





《0102单片机原理与应用技术第3节 MCS-51的指集.ppt》由会员分享,可在线阅读,更多相关《0102单片机原理与应用技术第3节 MCS-51的指集.ppt(76页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、3.3 MCS-51的指令集的指令集以MCS-51为内核的单片机指令系统为例,用44种操作码助记符来描述33种操作功能,构成了111条基本指令。单字节指令49条;按字节分双字节指令45条;三字节指令17条;单周期指令64条;按指令执行时间分双周期指令45条;111条基本指令4个机器周期指令2条;数据传送类指令;算术运算类指令;按功能分逻辑运算及移位类指令;控制转移类指令;布尔变量操作类指令。3.3.1 数据传送类指令数据传送类指令vCPU在进行算术运算和逻辑运算时总需要有操作数据,所以数据传送是一种最基本最主要的操作。在MCS-51系列单片机中的数据传送指令相当丰富。数据传送指令按数据传送的区
2、域可分为3组:一组:内部数据传送;二组:与片外RAM或I/O接口之间的数据传送;三组:ROM到累加器(A)的传送。3.3.1 数据传送类指令数据传送类指令1.片内数据传送这组指令是实现片内RAM之间数据交换的。这组指令共有7种方式。1)以累加器(A)为目的操作数的指令操作符指令编码指令功能3.3.1 数据传送类指令数据传送类指令这组指令的功能是把源操作数的内容送入累加器(A)。源操作数有寄存器寻址、直接寻址、寄存器间接寻址和立即寻址方式。【例】执行指令:MOV A,R6;(A)(R6),寄存器寻址 MOV A,70H;(A)(70H),直接寻址 MOV A,R0;(A)(R0),寄存器间接寻址
3、 MOV A,#78H;(A)78H,立即寻址3.3.1 数据传送类指令数据传送类指令2)以Rn为目的操作数的指令 这组指令的功能是把源操作数的内容送入当前工作寄存器区的R0R7中的某一个寄存器。源操作数有寄存器寻址、直接寻址和立即寻址等方式。操作符 指令编码 指令功能3.3.1 数据传送类指令数据传送类指令以Rn为目的操作数的指令如:MOVR2,A;(R2)(A),寄存器寻址MOVR7,70H;(R7)(70H),直接寻址MOVR3,#0AH;(R3)0A0H,立即寻址3)以寄存器间接地址为目的操作数的指令 操作数 指令编码 指令功能 3.3.1 数据传送类指令数据传送类指令 这组指令的功能
4、是把源操作数内容送入R0或R1指出的存储单元中。源操作数有寄存器寻址、直接寻址和立即寻址等方式。【例】执行指令:MOVR1,A;(R1)(A),寄存器寻址 MOVR0,70H;(R0)(70H),直接寻址 MOVR1,#80H;(R1)80H,立即寻址3.3.1 数据传送类指令数据传送类指令4)以直接地址为目的的操作数的指令 这组指令的功能是把源操作数送入由直接地址指出的存储单元。操作符 指令编码 指令功能3.3.1 数据传送类指令数据传送类指令 源操作数有寄存器寻址、直接寻址、寄存器间接寻址和立即寻址等方式。【例】执行指令:MOV P1,A ;(P1)(A),直接寻址 MOV 70H,R2
5、;(70H)(R2),寄存器寻址 MOV 0E0H,78H;(0E0H)(78H),直接寻址 MOV 40H,R0;(40H)(R0),寄存器间接寻址 MOV 01H,#80H;(01H)80H,立即寻址3.3.1 数据传送类指令数据传送类指令5)16位数据传送指令 操作数 指令编码 指令功能 MOV DPTR,#data16 10010000B (DPTR)data16 这条指令的功能是把16位常数送入DPTR。16位的DPTR由DPH和DPL组成,指令执行结果把高位立即数送入DPH,低位立即数送入DPL。【例】执行指令:MOV DPTR,#1342H ;(DPH)13H,(DPL)42H,
6、立即寻址3.3.1 数据传送类指令数据传送类指令6)堆栈操作指令 堆栈操作是通过SP(堆栈指针寄存器)实现的,分为入栈操作和出栈操作:入栈操作:把直接寻址单元的内容传送到SP所指的单元中;出栈操作:把SP所指单元的内容送到直接寻址单元中。开辟栈区通过向SP中送一个数。MCS-51单片机开机或复位后(SP)=07H,一般需重新设定SP的初始值。SP的初始值就是栈顶的位置。3.3.1 数据传送类指令数据传送类指令 堆栈指令有两条,进栈指令和出栈指令:操作符 指令编码 指令功能 PUSHdirect 11000000B;入栈 POP direct 11010000B ;出栈 p入栈指令PUSH:首先
7、将栈顶指针(SP)加“1”,然后把直接地址中的内容传送到SP寻址的片内RAM单元中。p出栈指令POP:将SP寻址的片内RAM单元中的内容送入直接地址指出字节单元中,SP减“1”。3.3.1 数据传送类指令数据传送类指令【例】已知:(A)=30H,(B)=70H执行指令:MOV SP,#60H;(SP)=60H 设堆栈指针 PUSH ACC;(SP)(SP)+1,(SP)=61H,(SP)(A)PUSH B ;(SP)(SP)+1,(SP)=62H,(SP)(B)u结果:(61H)=30H,(62H)=70H,(SP)=62H.POP B;(B)(SP),(SP)=(SP)1,(SP)=61H
8、POP ACC;(ACC)(SP),(SP)=(SP)1,(SP)=60Hu结果:(B)=70H,(ACC)=30H,(SP)=60H 由于MCS-51单片机堆栈操作指令中的操作数只能使用直接寻址方式,不能使用寄存器寻址方式,所以将累加器(A)压入堆栈时,累加器(ACC)不能简写A。堆栈操作时指令PUSH和POP要成对出现,且先后顺序要相反排列,先进后出,后进先出。3.3.1 数据传送类指令数据传送类指令7)交换指令 操作符 指令编码 指令功能 这组指令的功能是将累加器(A)的内容和源操作数的内容相互交换。源操作数有寄存器寻址、直接地址寻址、寄存器间接寻址。3.3.1 数据传送类指令数据传送类
9、指令【例】已知:(ACC)=80H,(R7)=08H,(40H)=0F0H,(R0)=30H,(30H)=0FH,执行指令:XCH A,R7;(A)(R7),寄存器寻址 XCH A,40H;(A)(40H),直接地址寻址 XCH A,R0;(A)(R0),寄存器间接寻址u结果:(ACC)=0FH,(R7)=80H,(40H)=08H,(R0)=30H,(30H)=0FH3.3.1 数据传送类指令数据传送类指令l 操作符 指令编码 指令功能 这条指令是低半字节交换指令,将累加器(A)的内容和源操数内容的低半字节相互交换。它们各自的高半字节都不受影响。【例】已知:(ACC)=0FH,(R0)=30
10、H,(30H)=0F0H 执行指令:XCHD A,R0;(ACC30)(Ri)30)u 结果:(ACC)=00H,(R0)=30H,(30H)=0FFH3.3.1 数据传送类指令数据传送类指令l 操作符 指令编码指令功能 SWAP A 11000010B (A30)(A74)这条指令将累加器(A)的高半字节(A74)和低半字节(A30)互换。【例】已知:(A)=0C5H 执行指令:SWAPAu 结果:(A)=5CH3.3.1 数据传送类指令数据传送类指令2.累加器(A)与片外RAM或I/O接口的数据传送指令 操作符 指令编码 指令功能片外RAM和I/O端口只能和累加器(A)进行一个8位数据传送
11、。由DPTR间接寻址时,DPTR的DPH和DPL分别从P2端口和P0端口输出组成16位地址,并由ALE信号将P0端口信号(低八位地址)锁存在地址锁存器中。3.3.1 数据传送类指令数据传送类指令由R0、R1进行间接寻址时,高8位地址在P2口中,由P2口输出;低8位地址在R0或R1中,由P0口输出,组成16位地址,并由ALE信号锁存在地址锁存器中。向累加器(A)传送数据时MCS-51单片机P3.7产生信号 选通片外RAM或I/O口;累加器(A)向片外RAM或I/端口传送数据时MCS-51单片机P3.7产生 信号选通片外RAM或I/O口。3.3.1 数据传送类指令数据传送类指令【例】已知:(DPT
12、R)=3000H,(3000H)=30H,执行命令:MOVX A,DPTR;(A)(DPTR),寄存器间接寻址 u结果:(A)=30H【例】已知(P2)=20H,(R1)=48H,(A)=66H,执行命令:MOVX R1,A;(R1)(A),寄存器寻址u结果:(2048H)=66H3.3.1 数据传送类指令数据传送类指令3.只读存储器(ROM)到累加器(A)的传送 操作符 指令编码 指令功能这两条指令主要用于ROM的查表,只能读,不能写。以程序计数器(PC)内容为基址时:(PC)(PC)+1,以加“1”后的当前值和累加器(A)的变址相加形成ROM源操作数地址,然后将其地址内容送累加器(A)。3
13、.3.1 数据传送类指令数据传送类指令以DPTR内容为基址时:DPTR的内容和累加器(A)的内容作16位无符号数相加形成ROM源操作数地址,然后将其地址内容送累加器(A)。【例】已知:(PC)=1000H,(A)=30H,(1031H)=12H,执行指令:MOVCA,A+PCu结果:(A)=12H (PC)=1001H【例】已知:(DPTR)=8100H,(A)=40H(8140H)=0ABH执行指令:MOVCA,A+DPTRu结果:(A)=0ABH (DPTR)=8100H3.3.1 数据传送类指令数据传送类指令v使用这两条查表指令时要注意,指令执行完后不改变程序计数器(PC)和DPTR的内
14、容,但是改变累加器(A)的内容。v以程序计数器(PC)内容为基址,地址改变量仅有8位,查表的寻址空间只在该条查表指令的以下256B之内,表格只能被一段程序使用。v以DPTR内容为基址,地址改变量有16位,查表可以在64KB程序存储空间寻址,并且表格可以被各个程序块公用。3.3.2 算术运算类指令算术运算类指令v算术运算指令多数以累加器(A)为目的操作数。算术运算指令大多数影响程序状态字(PSW)。主要分为以下几类:加法指令、减法指令、乘法指令、除法指令、加“1”指令、减“1”指令、十进制调整指令。3.3.2 算术运算类指令算术运算类指令v1.不带进位的加法指令操作符指令编码指令功能这组指令采用
15、立即数、直接地址、间接地址以及寄存器寻址方式将其内容与累加器(A)内容相加,结果送入累加器(A)中。3.3.2 算术运算类指令算术运算类指令若结果的最高位D7有进位输出,则将进位标志位(CY)置“1”,否则将CY清“0”;若D3有进位输出,将辅助进位标志位(AC)置“1”,否则将AC清“0”;若D6有进位输出而D7没有或者D7有进位输出D6没有,将溢出标志位OV置“1”,否则将(OV)清“0”;奇偶标志位(P)随累加器(A)中1的个数的奇偶性变化。3.3.2 算术运算类指令算术运算类指令【例】已知:(A)=53H,(R0)=0FCH,执行指令:ADDA,R0u结果:(A)=4FH CY=1 A
16、C=0 OV=0 P=1【例】已知:(A)=85H,(R0)=20H,(20H)=0AFH,执行指令:ADDA,R0u结果:(A)=34H CY=1 AC=1 OV=1 P=13.3.2 算术运算类指令算术运算类指令v2.带进位的加法指令操作符指令编码指令功能 这组指令对程序状态字(PSW)的影响和指令的寻址方式都与ADD指令相同。3.3.2 算术运算类指令算术运算类指令这组带进位加法指令是同时把所指出的字节变量、进位标志与累加器(A)内容相加,结果留在累加器(A)中。【例】已知:(A)=85H (20H)=0FFH CY=1,执行指令:ADDCA,20Hu结果:(A)=85H CY=1 AC
17、=1 OV=0 P=13.3.2 算术运算类指令算术运算类指令v3.带借位的减法指令操作符指令编码指令功能带借位减法指令从累加器(A)中减去指定的变量和进位标志,结果存在累加器(A)中。源操作数采用了寄存器寻址、直接寻址、寄存器间接寻址和立即寻址的寻址方式。3.3.2 算术运算类指令算术运算类指令如果累加器(A)中的最高位D7需借位则将进位标志位(CY)置“1”,否则将CY清“0”;如果D3需借位将辅助进位标志位(AC)置“1”,否则将AC清“0”;如果D7需借位而D6不需借位或D6需借位而D7不需借位将溢出标志位(OV)置“1”,否则清“0”;奇偶标志位(P)随着累加器(A)中“1”的个数而
18、变化。3.3.2 算术运算类指令算术运算类指令v4.加“1”指令操作符指令编码指令功能这条指令把所指的寄存器内容加“1”,结果仍送回原寄存器。3.3.2 算术运算类指令算术运算类指令源操作数采用了直接寻址、寄存器寻址、寄存器间接寻址的寻址方式。当所寻址的寄存器不是累加器(A)或程序状态字(PSW)时,不影响任何标志,否则将对标志位影响。若直接地址是I/O口,则CPU进行“读修改写”操作,不是从引脚读入。其功能是先读入端口锁存器的内容,然后在CPU中加“1”,继而输出到端口。3.3.2 算术运算类指令算术运算类指令【例】已知:(A)=0FFH,(R3)=0FH,(30H)=0F1H,(R0)=4
19、0H,(40H)=01H,(DPTR)=1235H 执行如下指令:INCAINCR3INC30HINCR0INCDPTRu结果:(A)=00H (R3)=10H (30H)=0F2H(40H)=02H (DPTR)=1236HPSW中仅P改变3.3.2 算术运算类指令算术运算类指令v5.减“1”指令操作符指令编码指令功能这条指令把所指的寄存器内容减“1”,结果仍送回原寄存器。3.3.2 算术运算类指令算术运算类指令源操作数采用了直接寻址、寄存器寻址、寄存器间接寻址的寻址方式。当所寻址的寄存器不是累加器(A)或程序状态字(PSW)时,不影响任何标志位,否则将影响标志位。若直接地址是I/O端口,则
20、CPU进行“读修改写”操作,不是从引脚读入。其功能是先读入接口锁存器的内容,然后在CPU中减“1”,继而输出到端口。3.3.2 算术运算类指令算术运算类指令【例】已知:(A)=0FH(R7)=19H,(30H)=00H,(R1)=40H,(40H)=0FFH。执行指令:DEC ADEC R7DEC 30HDEC R1u结果:(A)=0EH(R7)=18H (30H)=0FFH (40H)=0FEH P=1 PSW其他位不变3.3.2 算术运算类指令算术运算类指令v6.乘法指令操作符指令编码指令功能MUL AB10100100B(B)(A)(A)(B)这条指令把累加器(A)和寄存器(B)中的无符
21、号8位整数相乘,其16位积的低8位存放在累加器(A)中,高8位存在寄存器(B)中。如果积大于0FFH,则将溢出标志位(OV)置“1”,否则OV清“0”。进位标志位(CY)总为“0”。【例】已知:(A)=50H,(B)=0A0H,执行指令:MULABu结果:(B)=32H (A)=00H 即积为3200H3.3.2 算术运算类指令算术运算类指令v7.除法指令操作符指令编码 指令功能 这条指令把累加器(A)中的8位无符号整数除以寄存器(B)中的8位无符号整数,所得商存入累加器(A)中,余数存入寄存器(B)中。除法运算总是使进位标志位CY和溢出标志位OV清“0”。若寄存器(B)中除数为00H,则执行
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 0102单片机原理与应用技术第3节 MCS-51的指集 0102 单片机 原理 应用技术 MCS 51

限制150内