MCS51指令系统及汇编语言程序设计(2).ppt
《MCS51指令系统及汇编语言程序设计(2).ppt》由会员分享,可在线阅读,更多相关《MCS51指令系统及汇编语言程序设计(2).ppt(117页珍藏版)》请在三一办公上搜索。
1、第三章 MCS-51指令系统及汇编语言程序设计,第3章 MCS-51指令系统及汇编语言程序设计 3.1 指令系统简介 3.2 寻址方式 3.3 指令系统 3.4 汇编语言程序设计基础 3.5 程序设计实例,3.1 指令系统简介,3.1 指令系统简介 指令系统是一种CPU所能直接执行的所有命令的集合,CPU的主要功能是由它的指令系统来体现的。MCS-51系列单片机指令系统共有111条指令,其中有49条单字节指令、45条双字节指令和17条三字节指令。MCS-51的指令系统中有64条指令的执行时间为一个机器周期(12个振荡周期),45条指令的执行时间为两个机器周期,2条指令的执行时间为四个机器周期。
2、,3.1 指令系统简介,一、指令格式MCS-51指令系统中的每一条指令都有两级指令格式:CPU可直接识别并执行的机器语言指令。汇编语言指令(简称汇编指令)。机器语言指令由二进制数“0”和“1”编码而成,也称目标代码,执行速度最快。汇编语言指令是在机器语言指令的基础上,用英文单词或英文单词缩写表示机器语言指令的操作码(助记符),用符号表示操作数或操作数的地址。汇编语言指令实际上是符号化的机器语言。,3.1 指令系统简介,MCS-51汇编语言指令格式由以下几个部分组成:标号:操作码 目的操作数,源操作数;注释其中,中的项表示为可选项。标号:又称为指令地址符号,一般是由16个字符组成,以字母开头的字
3、母数字串,与操作码之间用冒号分开。操作码:是由助记符所表示的指令的操作功能。操作数:是指参加操作的数据或数据的地址。注释:是为该条指令作的说明,以便于阅读。操作码是指令的核心,不可缺少,其他几项根据不同指令为可选项。,3.1 指令系统简介,汇编语言指令格式:标号:操作码 操作数1,操作数2;注释 换行表示一条指令结束。例:LOOP:MOV A,#40H;取参数,1.标号:指令的符号地址。2.操作码:指明指令功能。3.操作数:指令操作对象。数据、地址、寄存器名及约定符号。4.注释行:说明指令在程序中的作用。操作码和操作数是指令主体。,MOVmove 传送XCHexchange 交换ANLand
4、logic 与逻辑运算XRLexclusive or 异或运算MULmultiply 乘法RRrotate right 右循环SJMPshort jump 短跳转RETreturn 子程序返回,3.1 指令系统简介,机器语言指令格式:,操作码 操作数1 操作数2有单字节、双字节和三字节指令。,汇编语言指令中操作码和操作数是指令主体,称为指令可执行部分,指令表中可查出对应指令代码。,举例:汇编语言:机器语言:MOV A,R0E8HMOV R6,#32H7E 32HMOV 40H,#64H75 40 64H,11101000,3.1 指令系统简介,二、MCS51系列单片机指令系统分类 按寻址方式分
5、为以下七种:按功能分为以下四种:寻找操作数或指令的地址的方式.1、立即寻址 1、数据传送指令2、直接寻址 2、算术运算指令3、寄存器寻址 3、逻辑运算指令4、寄存器间接寻址指令 4、控制转移类指令5、相对寻址 5、位操作指令6、变址寻址7、位寻址,3.1 指令系统简介,1、功能分类MSC-51的指令系统共有111条指令,分为五大类:(1)数据传送指令:片内RAM、片外RAM、程序存储器的传送指令,交换及堆栈进出指令。(2)算术运算类:加、带进位加、减、乘、除、加1、减1指令。(3)逻辑运算类:逻辑与、或、异或、非及移位指令。(4)控制程序转移类:无条件转移与调用、条件转移、空操作指令。(5)布
6、尔变量操作类:分为位数据传送、位与、位或、位转移指令。,3.1 指令系统简介,2、符号说明,Rn(n=07)-当前选中的工作寄存器组中的寄存器R0R7之一;Ri(i=0,1)-当前选中的工作寄存器组中的寄存器R0或R1;-间址寄存器或基址寄存器的前缀;#data-8位立即数;#data16-16位立即数;direct-片内低128个RAM单元地址及SFR地址(可用符号名称表示);,3.1 指令系统简介,addr11-11位目的地址;addr16-16位目的地址;rel-补码形式表示的8位地址偏移量,值在128127范围内;用于SJMP和所有的条件转移指令中。bit-片内RAM位地址、SFR的位
7、地址(可用符号名称表示);/-位操作数的取反操作前缀;()-表示 地址单元或寄存器中的内容;-将箭头右边的内容送入箭头左边的单元中。,3.1 指令系统简介,DPTR:为数据指针,可用作16位的地址寄存器。A:累加器ACC。B:专用寄存器,用于MUL和DIV指令中。C:进位/借位标志位,也可作为布尔处理机中的累加器。$:当前指令的首地址。,3.2 寻址方式,3.2 寻址方式,是寻找操作数或指令的地址的方式。,80C51的寻址方式有七种。即:寄存器寻址、直接寻址、寄存器间接寻址、立即寻址、基址寄存器加变址寄存器变址寻址、相对寻址和位寻址。,若不特别声明,我们后面提到的寻址方式均指源操作数的寻址方式
8、。,3.2 寻址方式,3.2 寻址方式,(一)操作数类型:位(bit)位寻址区中的一位二进制数据字节(Byte)8位二进制数据字(Word)16位双字节数据,(二)寻址方式:1.立即寻址方式:指令中给出的是实际操作数据(立即数),一般用于为寄存器或存储器赋常数初值。举例:8位立即数:MOV A,#40H;A40H 16位立即数:MOV DPTR,#2100H;DPTR2100H,3.2 寻址方式,2.直接寻址方式:,指令操作数是存储器单元地址,数据放在存储器单元中。MOV A,40H;A(40H),直接寻址方式对数据操作时,地址是固定值,而地址所指定的单元内容为变量形式。,例:设存储器两个单元
9、的内容如图所示,执行指令 MOV A,40H 后 A=?,思考题:直接寻址方式指令和立即寻址方式指令的形式有什么不同?,56H,3.2 寻址方式,3.寄存器寻址方式:,4.寄存器间接寻址方式:指令的操作数为寄存器名,寄存器中为数据地址。存放地址的寄存器称为间址寄存器或数据指针。例:MOV A,R0;A(R0)设指令执行前 A=20H,R0=40H,地址为40H存储器单元内容如图所示。执行指令后,A=?,R0=?,(40H)=?,34H,40H,34H,0100 0000,A,R0,0010 0000,A,20H,R0,40H,例:MOV A,R0;A(R0)设指令执行前 A=20H,R0=40
10、H,执行指令后,A=?,R0=?,指令操作数为寄存器名,数据在寄存器中。,40H,40H,3.2 寻址方式,5.变址间接寻址方式:,例:MOVC A,A+DPTR;A(A)+(DPTR)设指令执行前 A=09H,DPTR=2000H,存储器单元内容如图所示。执行指令后,A=?DPTR=?,12H,2000H,数据在存储器中,指令给出的寄存器中为数据的基地址和偏移量。数据地址=基地址+偏移量。说明:1、只对程序存储器;2、指令形式:MOVC A,A+DPTR MOVC A,A+PC JMP A+DPTR,3.2 寻址方式,指令给出位地址。一位数据在存储器位寻址区。(1)内部RAM中的位寻址区:字
11、节地址为20H2FH;(2)专用寄存器的可寻址位:11个(83位)表示方法:1)直接使用位地址;如:PSW的位6可表示为0D6H 2)位名称表示;或AC 3)字节地址加位数表示;或0D0H.6 4)专用寄存器符号加位数表示。或PSW.6 例:MOV C,40H;Cy(位地址40H)设指令执行前 Cy=1,位地址40H存储器单元如图,执行指令后,Cy=?,0,6.位寻址方式:,3.2 寻址方式,7.相对寻址方式:,目的地址=转移指令地址+转移指令字节数+rel(rel为偏移量),当前PC值加上指令中规定的偏移量 rel,构成实际的操作数地址例:SJMP rel 操作:跳转到的目的地址=当前16位
12、PC值+rel,注意:1)“当前PC值”指程序中下一条指令所在的首地址,是一个16位数;2)符号“rel”表示“偏移量”,是一个带符号的单字节数,范围是:-128+127(80H7FH)。,在实际编程中,“rel”通常用标号代替。,3.3 指令系统,3.3 指令系统,一、数据传送类指令(29条),传送类指令占有较大的比重。数据传送是进行数据处理的最基本的操作,这类指令一般不影响标志寄存器PSW的状态。,传送类指令可以分成两大类。一是采用MOV操作符,称为一般传送指令;二是采用非MOV操作符,称为特殊传送指令,如:MOVC、MOVX、PUSH、POP、XCH、XCHD及SWAP。,3.3 指令系
13、统,一般传送指令,3.3 指令系统,1、16位传送,这条指令的功能是将源操作数data16(通常是地址常数)送入目的操作数DPTR中。源操作数的寻址方式为立即寻址。,例如:执行指令 MOV DPTR,#1234H 后(DPH)=12H,(DPL)=34H。,3.3 指令系统,2、8位传送,在5种源字节中,只有data不能用作目的字节。所以可以用4种目的字节为基础构造4类指令。相应的源字节选择依据是:源字节与目的字节不相同(除direct外);寄存器寻址与寄存器间接寻址间不相互传送。,片内数据传送指令,3.3 指令系统,(1)以A为目的操作数,这组指令的功能是把源字节送入累加器中。源字节的寻址方
14、式分别为直接寻址、寄存器间接寻址、寄存器寻址和立即寻址四种基本寻址方式。例:若(R1)=20H,(20H)=55H,执行指令 MOV A,R1 后,(A)=55H。,3.3 指令系统,(2)以Rn 为目的,这组指令的功能是把源字节送入寄存器Rn中。源字节的寻址方式分别为立即寻址、直接寻址和寄存器寻址(由于目的字节为工作寄存器,所以源字节不能是工作寄存器及其间址方式寻址)。例:若(50H)=40H,执行指令 MOV R6,50H 后,(R6)=40H。,3.3 指令系统,(3)以direct 为目的,这组指令的功能是把源字节送入direct中。源字节的寻址方式分别为立即寻址、直接寻址、寄存器间接
15、寻址和寄存器寻址。例:若(R1)=50H,(50H)=18H,执行指令MOV 40H,R1 后,(40H)=18H。,3.3 指令系统,(4)以Ri为目的,这组指令的功能是把源字节送入Ri内容为地址的单元,源字节寻址方式为立即寻址、直接寻址和寄存器寻址(因目的字节采用寄存器间接寻址,故源字节不能是寄存器及其间址寻址)。例:若(R1)=30H,(A)=20H,执行指令 MOV R1,A 后,(30H)=20H。,3.3 指令系统,特殊传送指令,特殊传送指令的操作符为:MOVC、MOVX、PUSH、POP、XCH、XCHD和 SWAP。功能分别为:ROM查表、外部RAM读写、堆栈操作和交换指令,3
16、.3 指令系统,3.3 指令系统,1、ROM查表(程序存储器数据传送指令),(1)DPTR内容为基址 MOVC A,A+DPTR;A(A)+(DPTR)该指令首先执行16位无符号数加法,将获得的基址与变址之和作为16位的程序存储器地址,然后将该地址单元的内容传送到累加器A。指令执行后DPTR的内容不变。(P49例),(2)PC内容为基址MOVC A,A+PC;A(A)+(PC)取出该单字节指令后PC的内容增1,以增1后的当前值去执行16位无符号数加法,将获得的基址与变址之和作为16位的程序存储器地址。然后将该地址单元的内容传送到累加器A。指令执行后PC的内容不变。(P48例),3.3 指令系统
17、,2、读写片外RAM(数据存储器数据传送指令),(1)读片外RAM,MOVX A,DPTR;A(DPTR)MOVX A,Ri;A(Ri)第一条指令以16位DPTR为间址寄存器读片外RAM,可以寻址整个64K字节的片外RAM空间。指令执行时,在DPH中的高8位地址由P2口输出,在DPL中的低8位地址由P0口分时输出,并由ALE信号锁存在地址锁存器中。,3.3 指令系统,第二条指令以R0或R1为间址寄存器,可以读整个256字节的片外RAM空间。指令执行时,低8位地址在R0或R1中由P0口分时输出,ALE信号将地址信息锁存在地址锁存器中(多于256字节的访问,高位地址由P2口提供)。,读片外RAM的
18、MOVX操作,使P3.7引脚输出的信号选通片外RAM单元,相应单元的数据从P0口读入累加器中。,3.3 指令系统,(2)写片外RAM,MOVX DPTR,A;(DPTR)(A)MOVX Ri,A;(Ri)(A)第一条指令以16位DPTR为间址寄存器写外部RAM,可以寻址整个64K字节的片外RAM空间。指令执行时,在DPH中高8位地址由P2口输出,在DPL中的低8位地址,由P0口分时输出,并由ALE信号锁存在地址锁存器中。,3.3 指令系统,第二条指令以R0或R1为间址寄存器,可以写整个256字节的片外RAM空间。指令执行时,低8位地址在R0或R1中由P0口分时输出,ALE信号将地址信息锁存在地
19、址锁存器中(多于256字节的访问,高位地址由P2口提供)。,写片外RAM的“MOVX”操作,使P3.6引脚的信号有效,累加器A的内容从P0口输出并写入选通的相应片外RAM单元。(外部I/O口操作类同),3.3 指令系统,3、堆栈操作,堆栈是在内部RAM中按“先进后出”的规则组织的一片存储区。此区的一端固定,称为栈底;另一端是活动的,称为栈顶。栈顶的位置(地址)由栈指针SP指示(即SP的内容是栈顶的地址)。在80C51中,堆栈的生长方向是向上的(地址增大)。,系统复位时,SP的内容为07H。通常用户应在系统初始化时对SP重新设置。SP的值越小,堆栈的深度越深。PUSH direct;SP(SP)
20、1,(SP)(direct)POP direct;direct(SP),SP(SP)1 例:若(SP)=07H,(40H)=88H,执行指令 PUSH 40H 后,(SP)=08H,(08H)=88H。,3.3 指令系统,4、数据交换,例:若(R0)=80H,(A)=20H。执行指令 XCH A,R0 后,(A)=80H,(R0)=20H。,对于单一的MOV类指令,传送通常是单向的,即数据是从一处(源)到另一处(目的)的拷贝。而交换类指令完成的传送是双向的,是两字节间或两半字节间的双向交换。,(1)字节交换,3.3 指令系统,(2)半字节交换,XCHD指令的功能是间址操作数的低半字节与A的低半
21、字节内容互换。SWAP指令的功能是累加器 的高低4位互换。,例:若(R0)30H,(30H)67H,(A)20H。执行指令 XCHD A,R0 指令后,(A)27H,(30H)60H。若(A)30H,执行指令SWAP A后,(A)03H。,3.3 指令系统,说 明:,只有指令表中的指令才有对应指令代码,计算机才能执行。编程时,不能随意创造发明指令。,1.一条指令中不能同时出现两个工作寄存器:非法指令:MOV R1,R2MOV R2,R0,2.间址寄存器只能使用 R0、R1。非法指令:MOV A,R2,3.SFR区只能直接寻址,不能用寄存器间接寻址。非法指令:MOV R0,#80H MOV A,
22、R0,4.指令表(P236):B:指令字节数,M:机器周期数,3.3 指令系统,习题:找出指令错误并改正:,1MOV A,#1000H;A1000H(A装1个字节数)2MOVX A,1000H;A(1000H)片外RAM(DPTR、Ri)3MOVC A,1000H;A(1000H)片外ROM(DPTR、PC)4MOVX 60H,A;片外RAM(60H)A(应为MOV)5MOV R0,60H;片内RAM:(61H)(60H)MOV 61H,R0(片内RAM可直接寻址)6.XCH R1,R2;R1R2(必须有A参加)7.MOVX DPTR,#2000H;DPTR2000H(应为MOV)8.MOVX
23、 60H,DPTR;片内RAM片外RAM(必须有A参加),3.3 指令系统,二、算术运算类指令(24条),算术运算指令可以完成加、减、乘、除及加1和减1等运算。这类指令多数以A为源操作数之一,同时又使A为目的操作数。,3.3 指令系统,3.3 指令系统,算术运算操作将影响PSW中的OV、CY、AC和P等。进位(借位)标志CY为无符号整数的多字节加法、减法、移位等操作提供了方便;溢出标志OV可方便的控制补码运算;辅助进位标志AC用于BCD码运算。,3.3 指令系统,1、加法,(1)不带进位加,CY:和的D7位有进位时,(CY)=1;否则,(CY)=0。AC:和的D3位有进位时,(AC)=1;否则
24、,(AC)=0。OV:和的D7、D6位只有一个有进位时,(OV)=1;溢出表示运算的结果超出了数值所允许的范围。如:两个正数相加结果为负数或两个负数相加结果为正数时属于错误结果,此时(OV)=1。P:累加器ACC中“1”的个数为奇数时,(P)=1;为偶数时,(P)=0。,3.3 指令系统,例 若(A)=84H,(30H)=8DH,执行指令 ADD A,30H 之后,由于:,即:(A)=11H,(CY)=1,(AC)=1,(OV)=1(D7有进位,D6无进位),(P)=0。,3.3 指令系统,(2)带进位加,指令的功能是把源操作数与累加器A的内容相加再与进位标志CY的值相加,结果送入目的操作数A
25、中。加的进位标志CY的值是在该指令执行之前已经存在的进位标志的值,而不是执行该指令过程中产生的进位。,3.3 指令系统,(3)增1,指令的功能是把源操作数的内容加 1,结果再送回原单元。这些指令仅 INC A 影响P标志。其余指令都不影响标志位的状态。,3.3 指令系统,(4)十进制调整,指令的功能是对累加器A中刚进行的两个BCD码的加法的结果进行十进制调整。两个压缩的BCD码按二进制相加后,必须经过调整方能得到正确的压缩BCD码的和。,DA A,3.3 指令系统,调整要完成的任务是:,(1)当累加器A中的低4位数出现了非BCD码(10101111)或低4位产生进位(AC=1),则应在低4位加
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MCS51 指令系统 汇编语言 程序设计
链接地址:https://www.31ppt.com/p-2408411.html