《单片机原理及应用ppt教学课件第3章mcs51单片机指令系统》由会员分享,可在线阅读,更多相关《单片机原理及应用ppt教学课件第3章mcs51单片机指令系统(110页珍藏版)》请在金锄头文库上搜索。
1、单片机原理及应用,第3章 MCS-51单片机 指令系统,光华学院 信息工程系 王 超,3.1 指令系统概述,指令:控制计算机完成指定操作的命令。 指令系统:计算机所能执行的指令的集合。,MCS-51的基本指令共111条。 按指令的功能来分为五类:(1)数据传送类指令(29条)(2)算术操作类指令(24条)(3)逻辑操作类指令(24条)(4)控制转移类指令(17条)(5)位操作指令(17条),按指令所占的字节(空间属性)来分:,(1) 单字节指令(49条):(2) 双字节指令(45条):(3) 三字节指令(17条):,按指令的执行时间(时间属性)来分:(1) 1个机器周期指令(64条);(2)
2、2个机器周期指令(45条) ;(3) 4个机器周期指令(只有乘、除两条指令)。,3.2 指令格式,操作码:用来规定指令进行什么操作。 操作数:是指令操作的对象。 标号:代表该指令所存放的第一个字节存储单元的地址,故标号又称为“符号地址”。,DELAY: MOV R3, #0FFH ;一段延时程序,3.3 指令系统的寻址方式 (寻找操作数),有我的信,找信去,立即找到信!,找信是寻找存放信的 !,找到放信的箱子才找到信!,“地方”,3.3 指令系统的寻址方式 (寻找操作数),找到放信的箱子才找到信!,1,80H,2002H,找信是寻找存放信的 !,“地方”,“地址”,找操作数是找操作数的,“地址
3、”,立即寻址,信,操作数,立即找到信!,立即数寻址!,#XXH,#55H,CPU,A,MOV Rn, #01H,R0-R7,MOV DPTR, #1FFFH,DPTR,MOV direct, #88H,direct,70H,70H,88H,10001000,ADD A, #55H,SUB A, #01H,立即数寻址,直接寻址,寄存器寻址,寄存器间接寻址,变址寻址,相对寻址,位寻址,CPU,操作数,内部RAM或SFR区,20H,A,88H,MOV Rn, 20H,MOV direct, 30H,MOV Ri, 30H,R0-R7,direct,Ri,直接给出操作数地址的方式 20H直接寻址,AD
4、D A, 20H,SUB A, 30H,寻址比较,MOV P1, #20H MOV P1, 20H MOV P1, R0 MOV P1, R0 ,直接将20H这个数送P1口,地址是寄存器R0,地址在寄存器R0内,地址是内存20H,指出下列指令寻址方式,MOV P1, #0FFH MOV A, F0H PUSH 12H,立即寻址,直接寻址,直接寻址,立即数寻址,直接寻址,寄存器寻址,寄存器间接寻址,变址寻址,相对寻址,位寻址,CPU,88H,20H,操作数,60H,寄存器,A,操作数,操作数,MOV P1, A,你能说出: 带圈的圆弧箭头代表的是什么吗?,谁能说出: 寄存器寻址与 直接寻址的区别
5、?,P1,MOV P1, R4,CLR A,立即数寻址,直接寻址,寄存器寻址,寄存器间接寻址,变址寻址,相对寻址,位寻址,2,2,通过 间接找到 的地址“2号”!,“1号”,信,寄存器,操作数,寄存器,1,CPU,3AH,寄存器,R0,猜一猜: 操作数的地址 是多少吗?,内部RAM,3AH,我才是操作数,65H,MOV A, R0,A,寄存器间接寻址寄存器,MOVX A, DPTR,寻址比较,MOV P1, #20H MOV P1, 20H MOV P1, R0 MOV P1, R0 ,直接将20H这个数送P1口,地址是寄存器R0,地址在寄存器R0内,地址是内存20H,立即数寻址,直接寻址,寄
6、存器寻址,寄存器间接寻址,变址寻址,相对寻址,位寻址,CPU,寄存器,3AH,3AH,程序存储区,65H,操作数,0302H,0302H,88H,A,DPTRPC,MOVC A, A+DPTR,A,MOVC A, A+PC,立即数寻址,直接寻址,寄存器寻址,寄存器间接寻址,变址寻址,相对寻址,位寻址,0000H,0001H,0002H,2002H,2003H,2004H,2005H,2006H,PC,PC,PC,PC,PC,PC,如果想跳到2006H执行,该给PC值加上多少呢?,2006H,2003H,03H,03H就是当前PC值与目的PC值相对差,SJMP,03H,(PC+03H),SJMP
7、,= 2003H + 03H = 2006H,操作数哪去了?,03就是操作数,立即数寻址,直接寻址,寄存器寻址,寄存器间接寻址,变址寻址,相对寻址,位寻址,20H,21H,0,0,0,0,0,0,0,0,1,想一想: 如果想使27H单元的D5位置1,该怎么办呢?,位寻址地址表,立即数寻址,直接寻址,寄存器寻址,寄存器间接寻址,变址寻址,相对寻址,位寻址,SETB 3DH,20H,21H,0,0,0,0,0,0,0,0,1,MCS-51单片机指令系统分类介绍,MCS-51单片机指令系统共有111条指令,按功能分类,可分下面5大类: 数据传送类(29条) 算数操作类(24条) 逻辑运算类(24条)
8、 控制转移类(17条) 位操作类 (17条) 常用伪指令(17条),指令中一些符号的约定意义,目的地址 源地址,数 据,MOV ,MOV A,#20H,,,MOV,20H,A,3.4.1 数据传送指令(29条) 8位数据传送指令(15条),3.4.1 数据传送指令(29条) 16位数据传送指令(1条),MOV DPTR,#data16,外部数据传送指令(4条),MOVX ,,,MOVX,谁知道 内RAM中30H中数据外RAM的1001H中?,MOV A, 30H,MOV DPTR, #1001H,MOVX DPTR, A,片内传送MOV,在A累加器、工作寄存器R0R7、片内RAM与SFR(di
9、rect、Ri)之间传送数据。,单片机与片外RAM之间的数据传送(取数/送数)MOVX,在片外RAM(或外扩I/O口)与A累加器之间传送。仅采用寄存器间接寻址方式。,当采用DPTR做间接寻址,则可寻址整个64K片外RAM,高8位地址(DPH)由P2口输出,低8位地址(DPL)由P0口输出。 采用Ri(i=0,1)作间接寻址,可寻址片外256个单元RAM,8位地址和数据均由P0口输出,可选其他任何输出口线来输出高于8位的地址,一般选用P2口输出高8位的地址。,单片机与ROM之间的数据传送 (查表)MOVC,读取存放在程序存储器ROM中的数据,通常是以表格形式存放。采用变址寻址方式。 MOVC A
10、, A+DPTRMOVC A, A+PCA ROM,例如:(A)=30H,执行1000H处的指令 1000H:MOVC A,A+PC 本指令占用1个单元,下条指令地址为1001H, (PC)=1001H,再加上A种的30H,得1031H,结 果将ROM种的1031H的内容送入A。,单片机与ROM之间的数据传送 (查表)MOVC,优点:不改变特殊功能寄存器及PC的状态,根据A的内容就可以取出表格中的常数。 缺点:表格只能存放在该条查表指令后面的256个单元之内,表格的大小受到限制,且表格只能被一段程序所利用。,单片机与ROM之间的数据传送 (查表)MOVC,MOVC A, A+PC,例如:(DP
11、TR)=8100H,(A)=40H执行指令MOVC A,A+DPTR结果将 ROM 中 8140H 单元内容送入累加器A。,单片机与ROM之间的数据传送 (查表)MOVC,以DPTR作为基址寄存器,A的内容作为无符号整数和DPTR的内容相加得到一个16位的地址,把由该地址指出的程序存储器单元的内容送到累加器A。 例如:MOVC A,A+DPTR本指令的执行结果只和指针DPTR及累加器A的内容有关,与该指令存放的地址及常数表格存放的地址无关。表格的大小和位置可以在64K程序存储器中任意安排,一个表格可以为各个程序块公用。,MOVC A, A+DPTR,例:从程序存储器2000H单元开始存放09
12、的平方值,以DPTR作为基址寄存器进行查表得的平方值, 若用以DPTR作为基址寄存器的查表指令. 程序如下: MOV DPTR,#2000H MOV A,#09H MOVC A,A+DPTR,1)字节交换指令(3条),交换类指令(3条),A,F5,81,内部RAM,2)低半字节交换指令(1条),XCHD A, Ri 这里假设i=0,3)累加器A中高4位和低4位交换指令(1条),SWAP A,PUSH direct,POP direct,PUSH 33H,PUSH 34H,堆栈操作指令(2条),POP 36H,POP 35H,. . . .,堆栈原则:后进先出,数据缓冲堆栈区,堆栈指针 SP,S
13、P 内是存放的是堆栈栈顶的地址,堆栈原则:后进先出,PUSH direct,POP direct,PUSH 33H,PUSH 34H,堆栈原则:后进先出,复位后SP=07H,PUSH direct,POP direct,POP 36H,POP 35H,堆栈原则:后进先出,复位后SP=07H,传送类指令分类,单片机内部数据传送指令: MOV XCH XCHD SWAP PUSH POP 读写单片机外部RAM数据的传送指令:MOVX 单片机ROM的数据传送指令:MOVC,MOVX 和MOVC 以A作中介,为便于理解记忆指令,对数据传送类指令再 作如下分类:,direct,3.4.2算术运算类指令(
14、24条) 加法指令(8条),A ,,Rn,Ri,#data,ADD,direct,A ,,Rn,Ri,#data,ADDC,减法指令(4条),direct,A ,,Rn,Ri,#data,SUBB,ADDC A , B (A+B+CYA ),SUBB A , B (A B CYA ),3.4.2 算术操作类指令(24条),加法指令(8条),0011,0110,1010,1101 + 1010,1100,1101,1100 1110,0011,1000,1001,1010,1101 + 1101,1100 1000,1001,MOV A,#0ADH ADD A,#0DCH MOV 20H,A M
15、OV A,#36H ADDC A,#0ACH MOV 21H,A,BCD码: 0011 0100,BCD码调整指令(1条),DA A,注意:DA A指令只能跟在ADD或ADDC加法指令后,不适用于减法指令。,0001 1000,0001 0110,BCD码,0010 1110,差6,BCD码调整指令,BCD码也叫8421码,就是将十进制的数以8421的形式展开成二进制,大家知道十进制是09十个数组成,这十个数每个数都有自己的8421码: 举个例子: 321的8421码就是 3 2 1 0011 0010 0001 原因:0011=8x0+4x0+2x1+1x1=3 0010=8x0+4x0+2x1+1x0=2. 0001=8x0+4x0+2x0+1x1=1,