80C51虚拟指令执行系统的设计

发布者:心满愿望最新更新时间:2024-03-12 来源: elecfans关键字:80C51  虚拟指令  执行系统 手机看文章 扫描二维码
随时随地手机看文章

  本文以80C51单片机为目标机,基于X86平台的PC机为宿主机,给出了一种在宿主机上构造虚拟目标机指令执行系统的方法。


  1 虚拟指令执行系统简介

  本文所述的80C51虚拟指令执行系统是指用软件来模拟80C51指令的执行过程和执行效果,它主要由虚拟指令执行器虚拟存储器组成。虚拟指令执行器是虚拟指令执行系统的核心模块,它将指令的执行过程分为取指令、分析指令和执行指令三个阶段,模拟这三个阶段的操作并虚拟出指令的执行效果。虚拟存储系统是虚拟指令执行系统必不可少的模块,它反映着虚拟指令执行器执行指令的效果,本文以80C51体系中存储器的结构为依据,虚拟出存储器空间和寄存器,并提供了虚拟指令执行器访问虚拟存储器的接口。

  图1是虚拟80C51指令执行系统的总体结构图,同时图1也显示了系统运行的三个基本过程:

  

a.JPG

 

  (1)加载二进制文件到虚拟存储器的ROM中

  (2)虚拟指令执行器周期性地从虚拟存储器的ROM中取指令、分析指令并且执行指令

  (3)指令在执行过程中通过读写虚拟存储器中的内存和寄存器来反映指令执行效果

  显然,上述过程是围绕着虚拟指令执行器和虚拟存储器进行的。

  2 虚拟存储器的设计与实现

  加载过程和虚拟指令执行器都依赖于虚拟存储器,因此先介绍虚拟存储器的实现是必要的。从访问的角度分析,寄存器和存储器具有同样的属性,可以使用类似的实现方法虚拟它们。本文虚拟存储器的范围包括虚拟的存储空间和寄存器。

  2.1 虚拟80C51存储空间

  80C51的存储空间除了有ROM和RAM之分,还有片内和片外之分。80C51指令在执行的时候访问的数据可以存在于以下四种类型的存储单元中:片内ROM,片外ROM,片内RAM,片外RAM,它们的地址空间见表1。

  

b.JPG

 

  各个存储空间的容量都较小,可以通过开辟相应大小的不同数组来虚拟存储空间:

  

c.JPG

 

  虚拟存储器除了要虚拟出存储空间,还要提供访问的接口:读存储单元和写存储单元。在读写存储单元时需要指出存储单元的类型。

  

d.JPG

 

  使用这两个接口,虚拟指令执行器在执行指令时可以方便地访问虚拟存储器。

  2.2 虚拟80C51寄存器

  80C51的寄存器可以分为三类:特殊寄存器(SFR),工作寄存器(R0~R7),程序计数器(PC),虚拟系统对这三种寄存器有不同的虚拟方式和访问方式。

  1)特殊寄存器的虚拟和访问

  80C51的特殊寄存器的地址空间范围是0x80~0xFF,每一个特殊寄存器在这个地址空间中有一个确定的地址,从虚拟角度可以认为特殊寄存器和RAM具有类似的访问特点,因此可以使用虚拟存储器的方法来虚拟特殊寄存器:

  

e.JPG

 

  这样,可以使用虚拟存储器提供的读写接口来访问特殊寄存器。

  2)工作寄存器的虚拟和访问

  不同于特殊寄存器,工作寄存器R0~R7的地址在指令执行过程是不确定的。它们的地址由特殊寄存器PSW中的RS1位和RS0位的值决定,其物理地址占用片内RAM的地址空间,见表2。图2给出了访问工作寄存器Rn的流程。

  

f.JPG

 

  

g.JPG

 

  3)PC寄存器的虚拟和访问

  80C51的程序计数器PC是一个16位寄存器,在指令执行过程中被CPU改变。PC寄存器对用户是透明的,也即PC寄存器没有映射到存储器的地址空间中,不能借助虚拟存储器的读写接口来访问PC,需要单独虚拟一个16位的PC寄存器,并且提供读写的接口:

  

g.JPG

 

  3 虚拟指令执行器的设计与实现

  一般地,CPU总是不停的取指令、分析指令、执行指令,虚拟指令执行器执行同样的过程,它以模拟上述三个阶段的操作为核心,并模拟出80C51指令系统中每条指令的执行效果。图4给出了虚拟指令执行器的总体设计。

  

i.JPG

 

  可以看出,虚拟指令执行器的工作流程分为三个阶段:取指令阶段、分析指令阶段和执行指令阶段。

  3.1 取指令阶段

  虚拟的指令执行系统每一周期根据PC的值从虚拟的ROM中取将要执行的指令。在虚拟指令执行器执行指令之前,必须将硬盘上的二进制文件(hex文件格式)加载到虚拟的ROM中,作为指令执行器的输入。装载的过程按照如下描述完成:解析二进制文件的内容,将指令存放在指定的ROM地址处。加载完成后还需要将PC寄存器的值设置为第一条要执行的指令的地址。

  虚拟的指令执行系统每次取的指令长度是不确定的。80C51的指令长度不是固定的,分为单字节、双字节和三字节指令三种,因此取一条指令时需要确定该条指令的长度。通过分析80C51的指令表可以得到,任何一条指令第一个字节都是唯一的。利用这个特点,可以建一个该字节到指令长度的映射表。取指令时,先从PC所指地址处取第一个字节,然后通过查询映射表再取相应的字节数。取指成功后需要更新PC值,使PC就指向下条指令的地址。

  为了后续两个阶段的使用,需要将取到的指令存放在一个缓冲区中。80C51的最长指令为3个字节,因此可以使用一个3个字节长度的数组存放取到的指令,比如unsigned char inst,将取到的指令按顺序填充到inst中。

  3.2 分析指令阶段

  一条指令包括操作码和操作数,操作码决定该条指令对操作数执行什么样的动作。分析指令阶段需要从取到的指令中解析出操作码和操作数。解析的过程为,假设指令已经取到inst中,从虚拟指令执行器的角度可以认为指令的第一个字节为操作码,即inst[0],操作数分别存在inst[1]和inst[2]中,根据操作码到指令长度的映射表确定操作数的个数。

  解析出指令码和操作数后,就需要根据操作码来调用该指令对应的执行函数。每条指令都有自己的执行动作,可以为每条指令设计一个执行函数来模拟该指令的执行动作。指令操作码和指令执行函数也是一一对应的,所以虚拟系统中会有指令操作码到指令执行函数的映射表,当分析出指令的操作码后,就能快速地调用该指令的执行函数来模拟该指令的语义动作。比如,取到的指令为e580,按照前面所述,0xe5为操作码,存放在inst[0]中,0x80为操作数,存放在inst[1]中,通查指令表可知0xe5对应的汇编指令为MOV A,direct,为这条指令设计一个执行函数mov_a_direct0,虚拟的指令执行系统在执行指令e580时,实际上就是调用其执行函数mov_a_direct 0。

  3.3 执行指令阶段

  指令的执行动作是通过调用指令的执行函数来完成的。指令的执行函数是对该条指令的实际执行动作的模拟,主要包括对寄存器、内存的访问,以及对程序状态字中标志位的影响等。比如上面介绍的操作码为0xe5的指令,该指令对应的汇编指令为MOV A,direct,其意义为将direct中的内存数存放在寄存器A中,并且改变PSW中的P标志位,该指令的执行函数mov_a_direct 0实际上就是对上面描述的实现。

  

j.JPG

 

  

k.JPG

 

  80C51指令系统共有111条指令,虚拟指令执行器为每条指令都设计一个类似的执行函数。这些指令可以分为几类:数据传送指令、算术运算指令、逻辑运算和移位指令、控制转移指令和位操作指令。在设计执行函数时有一些需要注意的地方:算术运算指令需要注意运算对PSW的标志位的影响,控制转移指令需要精确改变PC寄存器的值等。


  4 结束语

  本文详细介绍了虚拟80C51指令执行系统的设计与实现,文章给出的方法也适用于存储空间和指令规模与80C51相似的单片机指令系统。虚拟指令执行系统是虚拟目标机其他功能的基础,有广泛的应用,比如可以构造出基于虚拟指令执行系统的目标机代码调试器等。另外根据应用需要.也可增加对80C51单片机的虚拟范围,比如实现对中断和I/O等的虚拟。


关键字:80C51  虚拟指令  执行系统 引用地址:80C51虚拟指令执行系统的设计

上一篇:以C8051F340单片机为核心的红外测温系统设计
下一篇:80c51是几位单片机 80c51单片机有几个中断源

推荐阅读最新更新时间:2024-10-29 22:01

MCS-51系列和80C51系列单片机是否相同
MCS是Intel公司单片机的专用系列符号。Intel公司现今已经推出有MCS-48、MCS-51、MCS-96三个系列单片机。 MCS-51系列包括三个基本型8031、8051、8751,以及对应的低功耗型号80C31、80C51、87C51。 在计算机领域,系列机是指同一厂家生产的具有相同系统结构的机器。20世纪80年代中期以后,Intel以专利转让的形式把8051内核给了许多半导体厂家,如AMTEL、PHILIPS、ANANOG DEVICES、DALLAS等。这些厂家生产的芯片是MCS-51系列的兼容产品,准确地说是与MCS-51指令系统兼容的单片机。这些单片机与8051的系统结构(主要是指令系统)相同,采用CMOS工艺,
[单片机]
C8051F020与80C51单片机的异同点
1 引言 80C51系列单片机及其衍生产品在我国乃至全世界范围获得了非常广泛的应用。单片机领域的大部分工作人员都熟悉80C51单片机,各大专院校都采用80C51系列单片机作为教学模型。随着单片机的不断发展,市场上出现了很多高速、高性能的新型单片机,基于标准8051内核的单片机正面临着退出市场的境地。为此,一些半导体公司开始对传统8051内核进行大的构造,主要是提高速度和增加片内模拟和数字外设,以期大幅度提高单片机的整体性能。其中美国Cygnal公司推出的C8051F系列单片机把80C51系列单片机从MCU时代推向SoC时代,使得以8051为内核的单片机上了一个新的台阶。 C8051F系列单片机是完全集成的混合信号系统级芯片,具
[单片机]
80C51单片机的指令系统(一)程序设计语言和指令
学习指令系统重点要掌握以下几点: 指令功能 寻址方式 操作数的位数和存储结构 对PSW的影响 指令与存储区的对应关系 各类指针及其指向的地址范围 转移指令的转移范围 指令字节数和机器周期数 & 本章主要介绍单片机的寻址方式及指令系统,是必须掌握的内容。 & 一台计算机所有指令的集合, 称为该计算机的指令系统。 & 各种计算机都有专用的指令系统。 4.1.1 程序设计语言和指令: 程序设计语言是实现人机交换信息的重要工具。机器语言指令是单片机能直接识别、分祈和执行的二进制码,用机器语言写的程序称为目标程序。 例如, 要做 10+20 的加法, 在51中可用机器码指令编程: 01110100
[单片机]
<font color='red'>80C51</font>单片机的<font color='red'>指令</font><font color='red'>系统</font>(一)程序设计语言和<font color='red'>指令</font>
80C51和CH375的USB打印机驱动设计
引 言   本课题来源于北京普析通用公司的一个项目。由于公司现有单机版光谱仪器产品(如1810、T6等)采用的是并行口打印技术,而随着USB打印机技术的逐渐普及,并行口打印机越来越不好买到,而且有些用户的打印机只是USB接口而非并行口,因此现有仪器产品对打印机的支持变得不能适应用户需要。为了实现能将公司的并行口仪器直接和USB打印机相连进行打印,决定设计开发一款LPT-USB打印机的驱动器,负责并口仪器和USB打印机的连接。   本文利用单片机和USB总线接口芯片实现LPT-USB打印机的驱动器设计。利用该设计将能够实现并行打印口数据可以在USB打印机上的直接打印工作,克服了有些并口仪器必须连接并口打印机才能打印的弊端,极大地方
[应用]
80C51复位标志位的设置与应用研究
引言   设置复位标志位便于区分不同原因引发的复位,作为一种新技术被越来越多的新型单片机所采纳。例如Philips公司的P87LPC700和 P89LPC900系列、Freescale公司(原Motorola半导体部)的MC68HC05系列和MC68HC08系列、Sunplus公司的 SPMC65系列、Microchip公司的PIC系列等,内部都设计了专门用于记录各种复位标志的状态寄存器。   MC68HC08系列有一个复位状态寄存器,负责记录6种复位标志位:上电复位、引脚复位、看门狗复位、非法指令复位、非法地址复位和欠压复位。SPMC65系列有一个系统控制寄存器,负责记录5种复位标志位:上电复位、外部复位、看门狗复位、非法地
[单片机]
80C51和CH375的USB打印机驱动设计
摘要:介绍基于80C51和CH375的LPTUSB打印机驱动器的设计与实现方法,介绍USB总线的通用接口芯片CH375的特点及工作原理,给出80C51单片机通过CH375控制USB打印机的硬件设计及其C语言软件实现。利用该设计能够实现并行打印口数据在USB打印机直接打印,极大的克服了有些并口仪器必须连接并口打印机才能打印的弊端,可极大方便用户的使用。 关键词:CH375 LPT USB 打印机 80C51 单片机 引 言   本课题来源于北京普析通用公司的一个项目。由于公司现有单机版光谱仪器产品(如1810、T6等)采用的是并行口打印技术,而随着USB打印机技术的逐渐普及,并行口打印机越来越不好买到,而且有些用户的打印机只是U
[单片机]
51上移植ucosii的心得
  自嵌进式系统开发以来,很长时间都采用前后台系统软件设计模式:主程序为一个无穷循环,单任务顺序执行。通过设置一个或多个中断来处理异步事件。   这种系统对于简单的应用是可以的,但对于实时性要求比较高的、处理任务较多的应用,就会暴露出实时性差、系统可靠性低、稳定性差等缺点。    μC/OS-II 是一种基于优先级的抢占式多 任务实时操纵系统,包含了实时内核、任务治理、时间治理、任务间通讯同步(信号量,邮箱,消息队列)和内存治理等功能。它可以使各个任务独立工作,互不干 涉,很轻易实现准时而且无误执行,使实时应用程序的设计和扩展变得轻易,使应用程序的设计过程大为减化。而且它内核源代码公然,可移植性强,为编程职员提 供了很好的一
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved