MCS- 51系列单片机的指令系统是一种简明高效的指令系统,其基本指令共有111条,其中单字节指令49条,双字节指令4'5条,三字节指令17条。如果按功能可以讲这些指令分为五类:数据传送类(29条)、算术操作类(24条)、逻辑操作类(24条)、控制转移类(17条)以及位变量操作类(17条)。对于反向设计而言,我们关心的不是它的各种具体指令的多少而是指令的寻址方式。所谓的寻址方式就是寻找确定参与操作的数的真正地址。MCS-51系列单片机的111条指令一共只采用了5种寻址方式。5种寻址方式以及它们的寻址空间如表1所示。
1.寄存器寻址
寄存器寻址方式可用于访问选定寄存器区的8个工作寄存器RO-R7。由指令操作码的低三位指示所用的寄存器,寄存器A, B, DPTR, AB和Cy位(位处理机的累加器)也可作为寻址对象。在这种寻址方式中被寻址的寄存器的内容就是操作数。
在实现这类寻址方式时,确定被寻址寄存器的物理地址时关键。由于选定寄存器区由PSW的相关位来决定,指令的低三位又指示了具体的寄存器,所以可以用下面的VHDL语句来确定相关寄存器的物理地址:
rr_ adr<=unsigned((psw and“00011000”)or(rom_data_i and“00000111”));
其中rr_ adr表示的是寄存器的物理地址,rom_data_i表示的是指令代码。物理地址确定以后,对RAM的操作就很好进行。
2.直接寻址
直接寻址是访问特殊功能寄存器的唯一方法。它也可以用于访问内部RAM(128个字节)。采用直接寻址方式的指令是双字节指令,其中第一个字节是操作码,第二个字节是内部RAM或特殊功能寄存器的直接地址。地址已经给出,显然不需要像寄存器寻址那样先计算地址,直接针对由ROM给出地址就可以对RAM进行相关操作。
3.寄存器间接寻址
寄存器间接寻址可用于访问内部RAM或者外部数据存储器。访问访问内部RAM或者外部数据存储器的低256个字节时,可以采用RO或R1作为间址寄存器。这类指令为单字节指令,其最低为表示采用RO还是R1作为间址寄存器。访问内部RAM和外部数据存储器时采用不同的指令,所以不会引起混淆。
访问外部数据存储器,还可用数据指针DPTR作为间址寄存器,DPTR是16位寄存器,故它可对整个外部数据存储器空Il(64K)寻址。
在执行PUSH(压栈)POP(出栈)指令时,也采用寄存器间接寻址,这时堆栈指针SP用作间址寄存器。
实现这类寻址方式必须分为两步,首先确定4个通用工作寄存器区中可以作为间接寻址寄存器的8个单元的地址,然后读出所选定的寄存器中的值,这个值就是当前指令要寻址的空间的物理地址。确定间接寻址寄存器的地址可以由下面的VHDL语句来实现:
ri_adr<=((psw and“00011000”)or(s-command (7downto 0) and“110000000111”)),
其中ri_ adr表示的是用于间接寻址的寄存器的物理地址,s_command表示的是当前指令的操作码。然后通过另外一个读RAM的进程就可以确定间址寄存器中的值,从而得到指令需要的存储器单元的地址。至千其他特殊功能寄存器作为间址寄存器的情况,由于间址寄存器的地址事先已经能够确定,所以这种方式下寻找存储器单元的地址就仅需要上述两步中的后一个步骤就可以确定指令需要的存储器单元的地址。
4.立即寻址
采用立即寻址方式的指令是双字节的,第一个字节是操作码,第二个字节是立即操作数。因此,这种寻址方式实现起来比直接寻址还要容易,操作数就是放在程序存储器内的常数。
5.基址寄存器加变址寄存器间接寻址
这种寻址方式用于访问程序存储器的一个单元,该单元的地址是基址寄存器(DPTR或PC)与变址寄存器A的内容之和。虽然这类寻址方式也是间接寻址,对于使用DPTR作为基址寄存器的情况,它的实现方法和用数据指针DPTR作为间址寄存器时的间接寻址的情况很相似,因为其间址寄存器事实上还是确定的。与用数据指针DPTR作为间址寄存器时的间接寻址的情况有所不同的是,确认最终需要的地址还要进行一次加法运算,这在使用VHDL语言描述的时候是很容易实现的。
表1 表寻址方式及寻址空间
用PC作为基址寄存器时,需要知道PC当前值,但是PC和DPTR是不同的,DPTR是特殊功能寄存器,利用它的地址就可以读出其值,PC并没有被分配地址,不能使用读RAM的方式取得其值,所以内部有必要设置编写这样一个进程,它用于读出那些位于CPU内部、没有分配地址的辅助寄存器的值。
关键字:单片机 指令系统
引用地址:
8051单片机指令系统剖析详解
推荐阅读最新更新时间:2024-03-16 15:45
利用16C554实现主从式单片机远距离通信扩展
摘要: 通过16C554完成上位主机对多台MODEM的控制,利用背靠背连接实现主机与下位机的远距离通信。该系统已成功地用于城市交通路口的信息传输。
关键词: MODEM 单片机系统 16C554 通信
引言
在交通路口的红绿灯控制系统中,需要将各器口车流量、车速等状态信息时传到主控室,另外,上位主机随时可能下发各种道路控制信息。这种远距离通信常通过MODEM以点对点的方式进行。常用MODEM通信链路的连接方式有两种。第一种是通过电话以拨号方式完成通信链接。采用这种方式,上位主机与各路口机的距离可无限远,但缺点是每个路口占用1个电话号。由于主机与路口机的通信是频繁的,若不采用专线电话,则难以保
[应用]
基于51单片机的可调数字时钟程序
使用51单片机内部定时器中断方式一计算时间,在LCD1602液晶显示小时、分钟、秒,并且可以使用按键调整小时和分钟,每次到整点时整点报时。 代码如下: //============================================================= //功能描述:液晶显示时钟,可调时间,准备整点时报时 //MCU:STC89C51,晶振频率:11.0592MHz //============================================================= #include reg51.h #include stdlib.h #include intr
[单片机]
基于51单片机的数字钟程序
//功能:4位 数码管 可以显示 时分,月日,年份;万年历,整点报时,定时自动(或手动)关闭显示器,空闲模式工作省电 //硬件:2051 单片机 ,P1.6到P1.0分别是 A到G,P1.7=DP,P3.5=D4,P3.4=D3,P3.1=D2,P3.0=D1,P3.7控制直流蜂鸣器(整点报时)。 //.2=0(改时间),P3.3=0(改状态),6M Hz 晶振 。 //使用说明:默认时间为 2010年1月1日,0点0分,状态1显示时分 //按P3.2为0,状态++,状态功能分别为 1:显示时间 2:显示月日 3:显示年 4:修改分钟 5:修改时钟 6:修改年 7:修改月 8:修改日 ; //用DP来表示状态,DP每秒闪烁1次
[单片机]
利用AT89C2051单片机对系统协调控制设计的大气温度采集和记录系统
1 引 言 大气温度的测量具有重要意义, 一般是采用各种温度计进行人工测量, 并定时记录测量结果, 这种方法费时费工, 十分不便。本文提出了一种非常小巧的大气温度测量和记录装置, 能对范围为- 55 ℃ ~ + 125 ℃ 的温度进行定时自动测量, 同时记录测量结果, 精度最高可达0. 0625℃ 。 2 系统原理 系统结构如图1所示。系统主要由AT89C2051单片机和外围电路构成。其基本思想是由串行时钟芯片DS1306 提供时间基准, 由温度传感器DS18B20进行温度测量, 温度数据存储在DS2433中。AT89C2051单片机负责整个系统的协调控制。 AT89C2051是一款低电压, 高性能的CMOS 8位单片机, 片
[单片机]
真正无晶振设计的MCU,改善物联网传输性能
从医疗领域的血糖、血压和血氧饱和度监控器,到楼宇自动化中使用的温度和烟雾探测器,再到楼宇安全中使用的电子锁,无线微控制器在监控和连接领域发挥着至关重要的作用。 无线MCU和无线网络对于整个数据的迁移起到了至关重要吗,通过互联的物联网(IoT)设备桥接最后一英里数据的能力是MCU重要组成部分。 系统设计需要石英晶体的时钟,无线连接应用中的分立时钟和石英晶体可能相对昂贵、耗时且开发复杂,并且在工厂自动化或汽车应用中经常容易受到环境压力的影响。 一种称为体声波(BAW)的新技术正在使MCU时钟开发变得简单,也使更小的MCU设计成为可能,同时又提高了整体性能并降低了成本。 如图1所示(下图),BAW由夹在两个电极之间的压电材料组成,该压电
[物联网]
磁瓦自动倒角机的单片机控制系统设计
引言 随着我国制造业的飞速发展, 生产自动化也得到了快速的发展。基于单片机机电控制系统是生产 自动化的一个重要领域。它控制精度高、功能强大、准确而可靠。磁瓦倒角的生产是大批量的工业生产对象, 人工生产效率低且成品不高, 用单片机控制伺服电机来实现各个工序以完成磁瓦倒角的制作可以大大提高劳动生产率和生产自动化程度。 倒角机的系统原理 该控制系统要求电机带动倒角机的主皮带轮做间歇性运动, 在皮带轮运动时 , 倒角机完成下料和打磨左右端面,在皮带轮停止时,在相应的工位上分别完成工件的左外圆弧、右外圆弧 、左内圆弧 、右内圆弧、外倒角及内倒角的磨削。磁瓦零件如图 l所示。自动倒角机的系统工作原理如图 2所示。 首先,电
[单片机]
C8051与SRAM的高速接口
C8051系列单片机没有与标准的51单片机那样的数据总线(RD、WR、ALE)等,只能采用通用I/O口模拟总线方式访问外部存储器。 因此,C8051访问一次外部存储器需要几十条指令。即便这样,由于C8051的绝大多数指令的执行只需一个机器(振荡)周期,在同样的时钟下与标准的51单片机相当。例如,20MHz的时钟下,在文献 给出的SRAM接口方式中,C8051读或写1个字节需要1.7 s,这就是说可以达到的最大传输率为588KB/s。相比之下,标准51读或写1个字节需要1.2 s。为了充分发挥C8051的能力,本文介绍两种提高访问外部SRAM速度的接口方法。 1 扩展外部SRAM的高速接口电路之一 图1所示电路可提高访问外部SRA
[单片机]
基于单片机和CPLD的高精度大型望远镜伺服控制器设计
设计基于高速单片机C8051F120和CPLD的高精度大型望远镜的伺服控制器,由单片机实现闭环控制算法、上位机通信和LCD显示控制,CPLD实现增量式编码器计数、电机驱动波形发生以及I/O接口。该控制器可独立进行电机控制,也可配合上位机进行控制,具有实时性和抗干扰能力强、成本低、调试方便等特点。 引言 微电子技术和计算机的发展推动着伺服控制技术的进步,控制系统的硬件系统越来越高速化、小型化、模块化,功能也日趋强大完善;而且,伺服控制技术是朝着更开放、更加模块化的控制结构的方向发展的,要求控制器算法实现简单、控制接口灵活,针对不同的伺服控制对象时硬件系统不变,软件系统也可以完成参数的自动调整。 在高精度大型望远镜伺服控制应用
[单片机]