您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 机械/模具设计 > MCS-51单片机的指令系统.
第二章MCS-51单片机的指令系统和时序本章内容:指令的格式;指令的功能;指令在执行时所包含的操作;指令的长度、执行时间。本章目录:2.0震荡器、时钟电路和CPU的时序2.1指令系统概述2.2寻址方式2.3数据传送指令2.4算逻运算和移位指令2.5控制转移和位操作指令2.6位操作指令2.7汇编语言的构成及伪指令MCS-51内部有一个高增益反相放大器.在单片机引脚的XTAL1和XTAL2分别是此放大器的输入和输出端.与作为反馈元件的晶体一起构成了一个自激震荡器。如果使用外部震荡器信号,其外来的信号加在XTAL1的引脚上。XTAL1XTAL2XTAL2XTAL1NC外时钟使用外时钟时的电路连接3.1.1震荡器、与时钟电路:20P20P3.1.2MCS-51单片机的时序关于时序的基本概念:时序:CPU执行指令时所需控制信号的时间顺序。时序图中时间参数的描述:①时钟周期;②机器周期;③指令周期。返回时钟周期T:时序中最小的时间单位,由外接晶体或外输入时钟来决定。其值为石英振荡器频率fosc的倒数。例如:在单片机外接12MH的晶体,则单片机的系统时钟的频率为12M,时钟周期为1/12µs.T机器周期:完成特定功能所需要的时间。机器周期由12个时钟周期构成,为了描述方便将其分6个状态(S1-S6),每个状态又分为P1和P2两拍。既:S1P1,S1P2,S2P1,S2P2,S3P1,S3P2…S6P1,S6P2一种描述时序图时间参数的定标方法TS2S6S5S4S3机器周期P1S1P2指令周期:既执行一条指令所需要的时间,它是时序图中最大的时间单位。在MCS-51系统中,不同的指令它所包含的机器周期数不同.它们分别是:1,单机器周期指令;2,双机器周期指令;3,四机器周期指令。假设:我们使用一个12M的晶体震荡器,那么一个机器周期为:1/12µs×12×1=1µs;两个机器周期为:1/12µs×12×2=2µs;四个机器周期为:1/12µs×12×4=4µs。可见指令的运算速度与它所包含的机器周期数有关.机器周期数越少,执行的速度就越快。(MCS-51单片机的指令系统除了乘、除法指令为四个机器周期外,其余都是单周期和双周期指令)指令的字节数:MCS-51单片机的指令系统有:单字节(占用1个ROM存储单元—1个字节);双字节(占用2个ROM存储单元—2个字节);三字节指令(占用3个ROM存储单元—3个字节)。返回OPROMOP2-2OP2-1ROMOP3-3OP3-2OP3-1ROM单字节指令双字节指令三字节指令问题:1.指令的字节数与指令执行的时间是什么关系?2.指令的字节数越多,其执行的时间就越长?3.指令的字节数越少,执行就越快?要回答此问题,只能从指令执行的时序中寻找答案指令特点:在程序存储器ROM中仅占一个存储单元。1.在ALE第一次有效(S2P1)时,从ROM中读取指令的操作码,送入指令寄存器IR中并译码执行。2.在ALE第二次有效时,封锁PC加一,使第二次读数无效。(一)单字节单周期指令的时序机器周期读操作码一读操作无效ALE返回S1S2S6S5S4S3【注意】:1.每一个机器周期出现两次ALE信号;2.ALE信号对应这从ROM中读指令。所以在一个机器周期中CPU可以完成两次取指操作;3.对于单字节单周期的指令,CPU通过译码后封死PC,取消第二次取指(实际上指令的后半部不做任何工作)。指令特点:指令长度为两个字节,并存储在ROM相邻的两个单元中。要想完整的将这样的指令执行完,必须从ROM中读两次操作码。OP2-2OP2-1n+1n程序ROMPC(二)双字节单周期指令时序返回1.在ALE第一次有效时,CPU从ROM的n单元中取出指令的第一个字节OP2-1,并送入IR译码,通过译码CPU知道这是一条双字节指令,所以使PC加一,指向n+1单元;2.在ALE第二次有效时,从ROM的n+1单元取出指令的第二个字节OP2-2送入IR进行译码,并产生对应的操作,最后在S6P2时完成本条指令的运行。S1S2S6S5S4S3机器周期读操作码一读操作码二ALEOP2-2OP2-1n+1n程序ROMPC指令特点:单字节,却需要两个机器周期运行。如:INCDPTRDPTR为两个8位的寄存器,加一时,必须分两步完成.既第一步DPL加一,如果DPL加一有进位则还要进行第二步对DPH加一.参见教科书:502页附表Ⅱ。(三)单字节双周期指令的时序返回在指令周期的第一个ALE时,将ROM中的操作码OP取出,经IR译码后得知为单字节双周期指令。所以一面执行该指令,同时封锁后面三次ALE有效时的PC+1,在第二个机器周期的S6P2时,完成操作。S1S2S6S5S4S3机器周期1读操作码读无效S1S2S6S5S4S3读无效读无效机器周期2ALE小结在MCS-51的111条指令中,可以分为六种基本的时序:1,单字节单周期指令;4,双字节单周期指令;2,单字节双周期指令;5,双字节双周期指令;3,单字节四周期指令;6,三字节双周期指令.返回2.1MCS-51指令系统的概述MCS-51共有111条指令,其长度(字节数)和执行时间(指令周期)各不相同。2.1.1指令格式2.1.2指令的三种表示形式2.1.3指令的字节数2.1.4指令的分类继续2.1.1指令格式:指令格式:既指令的结构形式。OPDATA或ADDRESS操作码操作数或操作数地址由操作码和操作数(或操作数地址)两部分构成。举例:MOVA,#0FFHADDA,R0返回指令的表示形式是识别指令的标志。1,二进制的表示形式:(以“累加器的内容+08H”为例)00100100B操作码OP(加法)00001000B操作数DATA(08H)特点:直接存储在程序存储器ROM中、被CPU直接识别、运行的指令形式,也称机器码。缺点:不便于人工阅读、记忆和调试修改。2.1.2指令的三种表示形式2,十六进制表示方式:它是对二进制形式的一种简化。00100100B24H00001000B08H在实验室等少数环境下,可以将这种形式作为输入程序的一种辅助手段。但是,这种形式的指令格式必须由对应的监控程序把它们翻译成二进制的“机器码”后存入程序存储器并运行。二进制表示的形式十六进制表示的形式3,指令的“助记符”方式(“汇编格式”):00100100B24H00001000B08HADDA,#08H1.一种由英文单词或字母、数字来表征指令功能的形式。便于阅读、书写和交流;2.这种“汇编”格式的指令必须把它“翻译”为二进制形式“机器码”后才能为CPU所识别和执行;3.编程者首先使用汇编格式书写“汇编语言源程序”,然后借助于汇编程序将其“编译”为二进制机器码并送入到单片机ROM单元中并由CPU执行。二进制表示形式十六进制表示汇编格式返回2.1.3指令的字节数在指令系统中,因寻址方式不同,指令在程序存储器ROM中所占字节数也各不相同。分为单字节、双字节和三字节。单字节指令(49条):分无操作数、有操作数两种。①无操作数:如INCDPTR10100011BINCA00000100B【特点】:操作数隐含在操作码中。②含有操作数寄存器名称的单字节指令:如:MOVA,R011101000BMOVA,R111101001B【特点】:寄存器名以三位数代码的形式在指令的后三位。双字节指令(46条):分两种情况:①指令中含有一个操作数.例如:汇编格式:MOVA,#data机器码:01110100Bdata或:78H、#data程序存储器01110100datann+1mova,#data双字节指令在程序存储器的存放示意图8位的操作数②指令中含有一个8位的操作数的地址。汇编格式:MOVA,direct机器码:E5H、direct如:MOVA,20H;将RAM20H中的数据送A程序存储器11100101directnn+1mova,direct8位的RAM地址三字节指令(16条):①指令中的操作数为双字节。MOVDPTR,#data161001000B,data15-8,data7-0②指令中分别包含1个字节的操作数和1个字节的操作数地址。MOVdirect,#data举例:MOV20H,#0FFHROM10010000data15-8data8-0MOVdptr,#data16ROMOP(75H)direct(20H)data(FFH)MOVdirect,#data三字节指令在存储器中存放的方式示意图指令的字节数与指令的运行时间指令的字节多是否意味着指令周期就长?指令字节数周期数指令说明MOVA,R011R0内容送累加器AMOVA,#0FFH21立即数FFH送AMOV20H,#30H32立即数30H送内存20h单元MULAB14乘法指令INCDPTR1216位寄存器DPTR加一从表中可见,指令的字节数与指令周期不是对等的关系返回2.1.4指令的分类按照指令的功能,可将111条指令分为五大类1,数据传送类指令2,算术运算指令3,逻辑操作和循环移位指令4,控制转移类指令5,位操作指令1,数据传送类指令:完成数据的传送。【特点】:①有8位、16位两种传送指令;②除了以累加器A为目标的传送对奇偶位PSW.P有影响外,其余的传送类指令对PSW无影响。2,算术运算指令:用于操作数的加、减、乘除运算。【特点】:多数情况下:操作数之一在累加器A中,结果也保留在A中,运算结果要影响PSW(进位标志、奇偶和溢出标志等)。3,逻辑操作和循环移位指令:操作数之间的逻辑加、与、取反和异或等操作。【特点】:多数情况下一个操作数在A中,结果也存于A。移位指令分为左移、右移和带进位和不带进位几种情况。逻辑类指令基本不影响PSW的内容。4,控制转移类指令:①无条件转移;②条件转移;③调用和返回。【特点】:通过修改程序指针PC的内容,使CPU发生转移,从而改变程序的流向。这也是唯一一种间接修改程序指针PC的指令。5,位操作指令:①位传送:类似于字节传送,对bit进行传送。②位置位/复位:对某一位置一或清零。③位运算:对某一位进行逻辑与、或、取反等。④位控条件转移:对某一位的状态进行判断,满足条件转移。【特点】:按位操作。指令中所涉及到的地址皆为“位地址”。这类指令基本不影响PSW的内容。继续2.2寻址方式在指令的操作数位置上,用于表征、寻找操作数的方法定义为“寻址方式”。正确的理解、掌握寻址方式,是学习、使用指令的关键。在MCS-51单片机中,共使用了七种寻址方式。继续1,寄存器寻址2,直接寻址3,立即数寻址4,寄存器间接寻址5,变址寻址;6,相对寻址;7,位寻址。七种寻址方式2.2.1寄存器寻址指令中含有一个存有操作数的寄存器Rn(n=0~7)MOVA,Rn返回例如:MOVA,R7;将寄存器R7中的内容送累加器A中MOV20H,R0;将寄存器R0中的数据送内存20H单元【特点】:寄存器寻址方式的指令大多是单字节指令。寄存器的3位代码与操作码OP共同占用一个指令字节。以MOVA,R7为例,使用R7寄存器,所以rrr=111,既指令的机器码为:0EFH11101rrr操作码OP寄存器代码111E8H~EFHMOVA,R7ROM的一个字节2.2.2直接寻址指令本身直接给出操作数在RAM中的地址。MOVA,direct其中:direct为8位的RAM地址如:MOVA,30H;将RAM30H单元数据送累加器A如:MOVA,30H;将RAM30H单元内容送累加器这里30H是操作数在RAM中的地址。直接寻址的指令长度是两个或三个字节。程序ROMOP30H数据RAM操作数xnn+130H累加器A直接寻址示意图使用直接寻址应注意的三个问题:1,指令助记符中direct是用16进制数表示的操作数地址。当地址恰好在SFR区域时,指令也可以用寄存器名来表示。如:MOVA,80H可以写成MOVA,P0后者用SFR中寄存器的名字取代它的物理地址80H,它更容易阅读和交流,所以我们提倡使用SFR中寄存器名称来代替直接地址。如:MOVA,SBUF;串口数据缓冲器数据送AMOVIE,#00H;初始化中断允许寄存器MOV
本文标题:MCS-51单片机的指令系统.
链接地址:https://www.777doc.com/doc-2888169 .html