当前位置:首页 > 工业控制 > 电子设计自动化
[导读]本文付MCS-51系列单片机的指令系统进行了要的反向解剖,并根据反向解剖的结论,得到用EDA技术实现单片机指令系统的思路

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语言描述的时候是很容易实现的。用PC作为基址寄存器时,需要知道PC当前值,但是PC和DPTR是不同的,DPTR是特殊功能寄存器,利用它的地址就可以读出其值,PC并没有被分配地址,不能使用读RAM的方式取得其值,所以内部有必要设置编写这样一个进程,它用于读出那些位于CPU内部、没有分配地址的辅助寄存器的值。

表1 表寻址方式及寻址空间

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭