当前位置:文档之家› 基于CPU仿真器的汇编语言学习系统设计与实现_盛羽

基于CPU仿真器的汇编语言学习系统设计与实现_盛羽

第41卷第6期中南大学学报(自然科学版) V ol.41No.6 2010年12月Journal of Central South University (Science and Technology) Dec. 2010基于CPU仿真器的汇编语言学习系统设计与实现

盛羽,余进,陈松乔,王建新

(中南大学信息科学与工程学院,湖南长沙,410083)

摘要:提出一种基于CPU仿真器的汇编语言学习系统设计模型和实现方法。该系统利用JavaBean组件技术实现CPU的仿真;结合多线程技术和锁机制实现组件的数据触发式调度机制,有效地解决了具有复杂关系的组件之间的调度运行问题,保证了微命令的有序执行;基于脉冲信号的事件触发机制,实现了微指令的单步调试;基于所设计的CPU仿真器指令系统,采用现代编译技术设计了一种汇编器,实现了CPU仿真器上汇编指令到机器指令的快速编译。与已有的汇编语言学习系统相比,本系统不仅在通用性、交互性等方面都有较大提高,而且能形象直观地展示虚拟寄存器等各个虚拟芯片的实时状态,记录对应的微指令流,从而更精确地监视汇编指令在CPU仿真器中的执行过程。

关键词:CPU仿真器;汇编语言;编译技术;微指令流

中图分类号:TP391.9 文献标志码:A 文章编号:1672?7207(2010)06?2224?07

Design and implementation of assembly language learning system

based on CPU simulator

SHENG Yu, YU Jin, CHEN Song-qiao, WANG Jian-xin

(School of Information Science and Engineering, Central South University, Changsha 410083, China)

Abstract: An assembly language learning system (ASMLL), which is based on the CPU simulator, was presented.

ASMLL simulated CPU with the JavaBean component technology. By using multi-thread technology and lock mechanism, ASMLL realized a scheduling mechanism based on component data triggered, which is an effective solution to deal with the scheduling problems of these components with complex relationship between each other, and can ensure micro-orders to run in an orderly implementation. Pulse signal based event triggered mechanism can implement the single-step debugging of enables microinstruction. Based on the instruction system of CPU simulator, a kind of assembler with modern compiler technology was designed, which can translate assembly instructions to machine instructions quickly on the CPU Simulator. ASMLL can display the status of virtual register and other virtual chips in real-time, record the corresponding microinstruction flow to monitor the implementation process of compiler command on CPU simulator.

Key words: CPU simulator; assembly language; compiling technique; micro-instructions flow

汇编语言是计算机相关专业的重要基础内容[1]。随着信息技术的快速发展,各种高级语言和应用开发环境日趋完善。但不容忽视的是:在各种消费电子产品的内核程序开发、通信底层协议开发及各种DSP应用中,汇编语言继续起着不可替代的作用[2]。汇编语言面向机器,它能够为程序员操纵机器硬件系统提供最直接的途径,而且可以使程序员编写出在“时间”和“空间”2个方面最具效率的程序[3]。但在实际教学

收稿日期:2009?10?21;修回日期:2009?12?28

基金项目:国家自然科学基金资助项目(60773111);湖南省科技计划项目(2010FJ4052);长江学者和创新团队发展计划项目(IRT0661)

通信作者:王建新(1969?),男,湖南邵东人,博士,教授,从事计算机网络优化算法、虚拟实验环境研究;电话:0731-********;E-mail: jxwang@https://www.doczj.com/doc/b112395900.html,

第6期盛羽,等:基于CPU仿真器的汇编语言学习系统设计与实现2225

中,汇编语言一直是个难教难学的课程[4?5]。究其原因,主要有以下3个方面:首先,汇编语言教学重点之一是特定处理器结构的介绍[6],然而,真实处理器的内部结构对外界是不可见、透明的,仅仅通过文字描述和概念讲解的传统教学模式很难使学生对处理器的整体结构产生直观、感性的认识;其次,机器执行汇编指令的过程,即指令的取指、译码、执行全过程,也是个抽象的概念,难以理解[7];此外,目前比较好的汇编语言集成开发环境不多见,而通常上机环境中采用DOS命令行的操作方式十分烦琐。因此,迫切需要一个易于操作、功能完善、交互性强、高度仿真的汇编语言学习平台来辅助教学。目前,针对汇编语言的各类学习平台正在不断开发和研究中,并取得了一定的成果。文献[8]给出了基于多媒体与WEB技术的计算机结构与汇编语言CAL系统,该系统利用FLASH 技术,能较好地演示指令运行过程中的数据流动,但其缺点是不支持用户输入和运行自己的程序,交互性较差;文献[9?12]介绍了基于软件仿真技术的可视化汇编语言学习平台,它们针对特定处理器上的指令集进行了仿真,并且具有较好的交互性和可视化,但它们都没能在微指令级对指令功能进行分解,因此,无法对指令的执行流程作微指令级的单步调试;文献[13]介绍了基于Web的汇编语言仿真实验系统,该系统为用户提供了有针对性特点的示例程序,并支持用户输入程序。此外,Emu8086公司的emu8086以及文献[14]中提到的Sim8086仿真了Intel8086处理器,支持8086汇编语言程序的调试运行。虽然这些仿真软件针对特定处理器实现了汇编语言仿真,但是,它们仅通过寄存器数据变化来描述指令执行效果,而没有对处理器其他重要部件(如控制器等)进行描述,因此,无法体现指令控制下处理器内部数据的流动与处理过程。鉴于现有汇编语言学习环境中存在的不足,本文作者提出基于CPU仿真器(CPU_Simulator)的汇编语言学习平台ASMLL。ASMLL模拟了CPU的内部器件及其运行机制,提供了该CPU仿真器上的指令系统SML,同时实现了一个集汇编语言源程序编辑、汇编、调试功能于一体的学习支撑环境。本平台最大的特点是在指令调试过程中能对微指令流程进行记录,并实时观察处理器内部器件的结构及其状态的变化,让学习者真正体会和理解汇编指令对硬件的控制作用。

1系统架构

ASMLL的系统架构如图1所示。系统采用B/S 模式开发,客户端和服务器通过互联网进行通信连接。Web服务器端主要提供已编译好的Java类文件,并且根据用户的请求将JavaBean组件和普通Java类文件传给客户端。CPU_Simulator所需的虚拟器件以JavaBean组件的方式封装,存于服务器端的组件库中,实验配置文件库用于存储CPU_Simulator装配文件,资源文件库用于存储相关的资源文件。

客户端主要提供汇编语言源程序的编辑、编译环境和目标程序的调试、运行服务。客户端采用浏览器中嵌入Java Applet的方式,用户可以通过客户端提供的菜单栏、代码编辑窗口、调试控制窗口、程序流程记录窗口、CPU_Simulator窗口等,方便地创建、编辑和保存汇编语言源文件,编译加载源文件,调试运行目标程序并观察CPU_Simulator的图形结构及其运行状态。整个系统具有良好的交互性、实时性和灵活性。

平台的功能模块如图2所示。ASMLL主要由编译加载、调试控制、CPU_Simulator三大模块构成。编译加载模块主要为用户提供汇编语言源程序到目标

图1 ASMLL的系统架构Fig.1 System architecture of ASMLL

中南大学学报(自然科学版) 第41卷2226

图2 ASMLL的功能模块

Fig.2 Function modules in ASMLL

程序的汇编功能和目标程序到CPU_Simulator的加载服务。调试控制模块主要在微指令级别对目标程序进行单步调试、对寄存器状态进行实时监控。CPU_Simulator模块主要为目标程序提供模拟运行环境,采用Java2D技术为用户提供机器内部各个单元部件的可视化视图。

整个系统的处理过程如下:用户使用代码编辑窗口创建汇编语言源程序后,通过内置的汇编器对其进行编译,并通知CPU_Simulator加载汇编出的目标程序;CPU_Simulator收到通知后,将目标程序加载到虚拟内存器件中,并等待调试控制模块发出控制信号;调试控制模块通过命令接口通知脉冲发生器产生脉冲,引导程序进入调试运行状态,并接收虚拟器件传回的反馈信息,将实时状态在界面上显示。

2 CPU_Simulator的设计与实现

仿真器是一种用以模拟程序在目标芯片上运行情况的工具,它执行用户输入的源程序,能较为逼真地模拟出程序在芯片上的运行效果。现在的仿真器主要分为硬件仿真器与软件仿真器两大类,而软件仿真器又可细分为结构仿真器与指令仿真器[15]。对CPU_Simulator进行结构仿真,由它来提供汇编语言程序的运行环境。由于CPU_Simulator主要由微程序控制器、时序系统、运算器和存储器等功能部件构成,每个部件又由类型多样、颗粒度更小的芯片构成,采用怎样的芯片模型对这些芯片的物理结构和逻辑功能进行统一描述和管理,以及如何保证机器指令在众多芯片中有序执行成为该模块设计的难点。

2.1 芯片模型的设计与实现

结合Java2D技术和JavaBean组件技术构造了可视化组件DeviceCarrier。该组件定义了虚拟芯片共同的属性和行为,芯片的长宽、名称、位置以及表示输入与输出数据的引脚等属性,同时提供了这些属性的读写接口与2D绘图接口。以DeviceCarrier为芯片父类,在开发具体芯片对象时只需增加组件的特有属性和功能方法来实现其内部逻辑功能。当芯片组件加载时,运行面板上将绘出其物理形态;当芯片组件从引脚处获得控制信号与数据时,它将调用相应功能方法进行数据处理并产生输出。这样,芯片组件在结构、功能和信号传递方式上都对硬件芯片进行模拟,从而达到了一个很好的仿真效果。

以CPU_Simulator中的微控制存储器组件MicroControl为例。SML指令集中的每条指令被译成微指令,形成各自的一段微程序后保存在MicroControl中。经译码器组件译码后,这些微指令产生的微控制信号可控制CPU_Simulator内部数据的传递,进而完成对应指令的功能。其中,MicroControl 的具体工作为:首先根据外部输入信息(如机器指令,节拍脉冲,执行部件反馈的状态标志等),MicroControl 产生微地址,然后从该微地址处读取相应的微指令并输出到译码器组件,同时生成后继微指令地址。由于微控制存储器工作时具有很强的时序性,在CPU_Simulator中,以时钟电路组件的T2和T4脉冲引脚端的输出作为MicroControl的脉冲输入,来实现微控制存储器组件的时序功能。在继承DeviceCarrier 后,MicroControl组件采用一个整型的二维数组来存储微程序,其中一维用来记录微指令地址,二维用来记录微指令,而微控制存储器组件的内部逻辑功能则交由control( )方法来实现。MicroControl的主要实现代码如下所示:

class MicroControl extends DeviceCarrier { //微控制存储器组件

Lead[] leads; //组件的输入输出引脚

int[][] MicroMemoryValue; //存储微程序

第6期盛羽,等:基于CPU仿真器的汇编语言学习系统设计与实现2227

……

public ccp_MicroControl()//构造函数,初始化各个引脚

public void control() {// 微控制存储器组件功能方法

if(T2){ //将当前地址的微指令赋给相应的输出引脚 }

else if(T4) { // T4脉冲到来时,作地址的判别测试

SE[1..5]= getSEvalue(); //根据逻辑表达式来求SE;

……//把产生的后继地址赋值给组件的微地址输入引脚端;}

} }

2.2调度控制模块的设计与实现

CPU_Simulator由大量具有独立逻辑功能的芯片组件按照一定的数据通路构成。芯片间控制信号与数据的传递不是单纯的并行或串行。如何描述组件间的连接关系和调度机制,从而保证CPU_Simulator运行的正确性和稳定性是整个仿真设计的关键。

2.2.1 组件连接关系

组成CPU_Simulator的绝大多数组件都是多输入多输出接口,导致了组件的连接关系复杂。本文采用组件自我记录的方式,为每个组件定义一张连接关系表ConnectTable,用于记录其输出引脚上的所有关联组件信息。由于每个组件的输出引脚个数不等,所以,采用初始为3的可动态扩展的二维数组表示,数组的元素是一个二元组(关联组件,引脚),其中,表的一维代表组件的输出引脚,二维代表组件的关联信息。ConnectTable类定义了为指定的引脚新增连接信息、删除连接信息和获得其所有关联组件信息的3个方法,使表易于扩充和维护。连接关系表有效地记录了组件之间的复杂关系,使得CPU_Simulator在调度的过程中便于对引脚数据进行实时、动态的修改,同时为组件的调度控制提供依据。

2.2.2 组件的调度控制

CPU_Simulator可以看作是由多个功能独立的虚拟元件通过数据流通道互联构成,其每个组件带有若干输入口和输出口。组件的功能是将其输入口的数据进行变换后形成数据流从输出口传递给与之关联的其他组件。为协调控制各个组件的执行次序,实现系统的并行性和实时性,本文采用基于多线程的数据触发式调度机制来控制组件的执行。

基于多线程的数据触发式调度机制是把每个组件都作为一个线程,线程之间的通信采用wait( )和notify( )机制和锁机制来控制[16],线程之间的数据传递采用直接传递方式。初始化时,每个组件会根据模型机内部结构,建立自己的连接关系表。在运行过程中,存储在其引脚中的数据会随着组件功能方法的执行而动态更新。组件产生的结果数据会根据连接关系表中的连接关系从输出引脚传送到与它相连的下一级组件的输入引脚上。这种调度机制有效地保证了数据源不断产生的信号都能被及时接收和处理的实时性。

具体过程如下:调度控制模块把CPU_Simulator 中每个芯片组件构造成一个线程对象,放到运行队列线程组中。在初始状态,所有组件的引脚值为空,标志位为0。当CPU_Simulator启动时,所有线程以等概率的机会抢占CPU得到运行权,除了脉冲组件线程外,其他线程运行时都会先调用wait( )方法使其处于等待状态而迅速放弃CPU的使用权,直到其上级线程调用notify( )方法唤醒并驱动它们运行。按照这种调用过程,当脉冲组件得到运行权后,它将根据连接关系表查找与它相连的所有下级组件,依次检查这些组件的输入引脚的标志位是否全为0。若满足条件,则它先通过JavaBean的反射技术动态获得组件的功能方法,并调用该方法产生输出信号,然后,根据连接关系表依次把输出值赋值给与它相连的下一级等待线程组件的输入引脚上,再唤醒它们,之后自己重新进入等待状态;否则,它将随机等待一段时间,直到下次运行权的获得。下级等待线程被唤醒后便进入可执行状态,并可以再次竞争CPU从而获得运行权。下级线程组件拥有运行权后,进行与脉冲组件相同的上述动作。通过这种数据触发机制建立起各个独立组件之间的因果关联,从而使它们形成一个能够协调工作的有机整体。

3编译加载功能的设计与实现

由于SML汇编语言源程序只是符号化的机器语言程序,无法直接在CPU_Simulator上运行,因此,在ASMLL中设计了SML汇编器,由其完成汇编语言源程序到目标程序的转换任务。该汇编器利用面向对象设计思想,进行模块化设计,并采用递归分析法与工厂模式分别实现了语法分析和代码生成模块。

3.1汇编器的模块化设计

汇编器采用模块化设计,包含主控模块、词法分析、语法分析、目标代码生成、错误处理、表格管理等多个模块。其中,词法分析器模块对源程序进行词

中南大学学报(自然科学版) 第41卷2228

法规则检查、构造Token流。语法分析模块则对Token 流进行语法规则检查,生成语法树并构造符号表。最后,代码生成模块对符合语法规则的每行汇编语句进行目标代码生成。在整个汇编过程中,表格管理模块负责提供符号表、指令表的查找、修改功能,而错误处理模块则负责管理词法、语法分析过程中检测出的错误信息。主控模块负责组织全盘的工作流程,其具体过程为:首先将内部变量L C初始化为0,然后从上向下一次一行地扫描程序,并进行词法和语法分析。每次移到下一行,就将L C加上当前指令长度。因此,L C总是等于当前行的地址。如果在某行的开始发现标号,就将该标号和L C中的当前值输入到符号表中。在第1遍扫描结束时,汇编器已经建立符号表与对应指令的语法树。汇编器然后执行第2遍扫描,使用指令表和符号表中的信息汇编每条汇编指令。主控模块的工作流程如图3所示。

图3主控模块的工作流程

Fig.3Work flow of main_control model

在汇编器的结构中,语法分析和代码生成模块是汇编功能的核心模块。语法分析和目标代码生成过程中反复用到包括Token、语法树、指令表等多种数据结构,因此,用于实现语法分析和汇编机器字的算法是汇编器设计的重点。

递归分析法对Token流进行语法分析的思路是:将语法中每一个非终结符U的语法规则看作是识别U 的一个过程定义,为其构造子程序,以完成该非终结符所对应的语法成分的分析和识别。若U的文法规则的右部只有1个候选式,则按从左向右的顺序依次构造非终结符的识别过程代码;若有终结符号,则判断能否与输入的符号匹配:若相等,则表示识别成功,移动读入指针指向下一个输入符号;若不等,则意味着输入串此时有语法错误;若是非终结符,则简单调用该非终结符的子程序,由这个子程序完成该非终结符所对应的语法成分的分析和识别任务。只有被调用的分析和识别某语法成分的子程序匹配输入串成功,且正确返回时,该语法成分才算真正获得识别。在本系统中,汇编器为每条汇编指令构造了语法规则方法,用来识别该指令中的操作码和操作数。每当识别出1个语法成分,就向语法树中增加1个节点,使得该语句的语法树向下生长,直至语句中所有语法成分识别完毕、生成1棵完整的语法树为止。若语句中出现语法错误,则将相应的信息交由错误处理模块管理。

目标代码生成模块是由Assembler组件完成的。通过对语法树中语法成分的查找,Assembler将找到的操作码和操作数按一定的指令格式汇编成机器字,并将结果返回给调用者。由于SML汇编语言涉及到变长指令和多种寻址模式,不同指令的汇编模式是不同的。如所有转移指令的指令长度均为双字节,它们由寻址模式、操作码、目的寄存器以及位移量4个字段组成;而算术逻辑指令的指令长度则为单字节,它们由操作码、源寄存器以及目的寄存器3个字段组成,因此,需要为不同类型的指令实现各自的汇编功能。Assembler采用工厂模式统一汇编操作接口,为不同类型的汇编操作构建实现模块,交由汇编操作工厂管理。当对语法成分进行汇编时,先由汇编操作工厂来实例化相应的汇编操作对象,然后,调用具体的汇编方法来完成汇编任务。这样,若需要支持新的指令格式,则只需将新的汇编操作实现后加入汇编操作工厂即可,从而使得汇编器具有良好的可扩充性。

3.2目标程序的加载

源程序汇编成功后,汇编器将生成的目标文件保存在本地,而此时CPU_Simulator中内存组件的初始值为0。由于内存组件采用二维整型数组模拟256字节的存储空间,以此来存放目标程序(默认低地址存放代码,高地址存放数据,两段以停机指令HALT为边界),所以,程序的加载即为对该数组进行读写操作。为方便目标程序到内存的加载,编译加载模块将程序汇编功能与加载功能进行了集成。具体过程为:当目标程序保存本地后,汇编器继续对该目标文件读操作,并把读取到的数据传入内存组件的数组读写接口,由

第6期盛羽,等:基于CPU仿真器的汇编语言学习系统设计与实现2229

该接口完成数组中数据的写操作,实现目标程序到内存组件的加载。

4调试模块的设计与实现

微指令流面板、存储器面板以及寄存器面板构成了整个调试界面,其上各种GUI组件的数据显示由控制接口模块负责控制。作为界面与CPU_Simulator之间的桥梁,控制接口模块可被芯片组件直接调用。当芯片组件因新数据到来触发时,控制接口马上被该组件调用并接收到新数据,从而使控制接口模块能实时地得到CPU仿真器内部数据的流动及处理信息。在获得数据后,控制接口模块先判断该数据的来源,再做相应处理:若该数据来自寄存器组件,则将数据直接显示在寄存器面板相应的寄存器显示栏上;若该数据来自内存组件,则在存储器面板中找到对应指令行或数据行,然后将其高亮显示;若该数据来自微控制存储器,则根据微地址查找调试模块中内置的微代码表,在获得微指令、微操作说明以及后继微地址后,将上述信息显示在微指令流面板中。

在程序调试运行时,运行面板上CPU_Simulator 芯片组件的状态将同步更新,其更新效果由芯片组件的绘画接口完成。绘画接口被调用时,1个标注芯片名称的矩形将画在运行面板上,同时该矩形上拥有相应数目的引脚,其引脚值以不同颜色区分(黑色表示低电平,红色代表高电平)。而微控制存储芯片则比较特别,其绘画接口被调用时,除了显示芯片的输入输出引脚值以外,还将在芯片的左侧显示当前微指令的地址。在CPU_Simulator被加载时,绘画接口在运行面板上绘画出各个芯片的初始状态及芯片间连接关系。在程序调试运行、芯片组件因数据到来被激活时,绘画接口将对该芯片进行重画,以显示芯片引脚的当前输入输出值。若该芯片是微控制存储芯片,则在芯片上还将显示出当前微指令的微地址。这样,CPU_Simulator 内部芯片状态以图形化的方式在运行面板上实时显示,大大增加了系统的可视化效果和可理解性。

单步微调是本调试接口设计中的一个特点。由于微程序存储器组件的调度由时钟电路组件的脉冲信号触发,若能控制时钟电路组件产生脉冲的节拍,即可实现微指令的单步调试。本文设计了单脉冲组件PulseSignal,由单脉冲组件PulseSignal发出的脉冲来触发时钟电路,进而触发一次微程序存储器。其中,单脉冲组件PlusSignal信号的由用户按钮事件负责响应。系统的整个调试过程为:CPU_Simulator启动时,从内存组件地址00处取出第1条指令,交由微程序控制器组件准备译码执行,用户通过点击按钮触发脉冲组件,发出信号触发微控制器读取1条微指令,并将其反馈到界面显示该微指令及对应的微操作说明,继而取第2条,以此反复,直到执行停机指令HALT为止。

5 ASMLL系统的运行实例

ASMLL为汇编语言初学者提供了全真的编程环境、强大的调试功能和多种虚拟器件的可视化视图。通过这个平台,学习者能很好地进行汇编语言编程训练,快速掌握常用指令功能以及指令在机器中的执行流程,体会汇编语言控制硬件的本质作用。

用户首先通过浏览器下载嵌有该平台的Applet页面,可获得汇编学习平台所需的class文件,运行后系统将进入客户端主界面。主界面主要分为两部分:上部为工具栏,为用户提供编程和CPU_Simulator加载功能;中间为CPU_Simulator运行面板,用来显示CPU_Simulator可视化结构。当用户点击加载按钮时,CPU_Simulator将被加载到运行面板,同时,系统进入初始状态。用户可继续点击工具栏上的编程按钮,进入汇编语言编程窗口,在该窗口中编写源程序。当程序编写完成后,则可以点击窗口工具栏中的编译加载按钮,利用系统内置的SML汇编器汇编对当前程序进行汇编,并将生成的目标程序加载到CPU_Simulator的内存中。

此时,CPU_Simulator被启动,系统进入目标程序的调试运行状态:当用户每点击1次控制面板中的单步微指令按钮,系统将单步执行1条微指令,同时在左侧的微指令流窗口显示当前微指令和对应的微操作,右侧的寄存器窗口则显示各寄存器中的实时数据。当用户每点击1次单步机器指令按钮,系统将单步执行1条机器指令,寄存器窗口中的程序计数器PC内指针加1,中间的存储器窗口将以高亮显示方式来表达当前指令的跳变过程,左侧的指令流窗口同时将显示对应的微程序流。用户若需要连续运行程序,则可点击运行按钮。而按动停止按钮,则可以停止整个目标程序的运行。该功能只有在程序进行单步机器指令和连续运行时才有效,按动该按钮即可停止程序的运行。

从实际应用情况来看,ASMLL能为用户提供机器指令取值、译码和执行全过程的微指令级单步调试,并记录相应微指令流程,弥补了现有支撑平台无法在微指令级对指令进行跟踪的不足。此外,ASMLL还

中南大学学报(自然科学版) 第41卷2230

提供了一个良好的视图,将CPU及存储器的内容以具体的形式进行展示,让学习者对处理器结构及程序、数据存放方式有更深的认识。

6结论

(1) ASMLL采用JavaBean组件技术实现了CPU_Simulator,结合多线程技术以及锁的同步控制技术,提出了一种组件数据触发调度机制,有效解决了具有复杂关系组件之间的调度运行问题,保证了微命令的有序执行。

(2) ASMLL利用面向对象设计思想和汇编程序两遍扫描机制,设计了基于CPU_Simulator的汇编器,实现了汇编语言源程序到CPU_Simulator上目标程序的快速编译。

(3) 该学习系统支持对程序进行微指令级单步调试,并提供指令执行时CPU_Simulator内部寄存器数据变化的结构视图,使得学生能直观地查看指令的执行情况,有助于学生理解指令功能与程序执行过程。

(4) ASMLL具有功能完整、交互性强、功能模块化清晰的特点,软硬件视图形象直观,能为开发计算机相关课程学习平台如微机原理组成原理等提供很好的参考模型。

参考文献:

[1]Goda B S, Gray D C, Loy J R. Teaching computer architecture in

a pc equipped la

b using turbo and sun assembly language[C]//

Budny D. Proceedings of the Frontiers in Education Conference

on 1995. Washington: IEEE Computer Society, 1995: 14?17. [2]Shi Z M, Cox P T. EasyAssembly: A real visual assembly

language[C]//Proceedings of Newfoundland Electrical and

Computer Engineering Conference (NECEC 2001). St. John’s,

Canada: IEEE, 2001: 31?37.

[3]Martin J J. Integrated software support for a course on computer

organization and assembly language[C]//Cook G E.

SoutheastCon 1999 Proceedings of IEEE. Nashville: IEEE, 1999:

134?137.

[4]Agarwal K K, Agarwal A. Do we need a separate assembly

language programming course[J]. Journal of Computing Sciences in Colleges, 2004, 19(4): 246?251.

[5]Imamura K. Assembly language is more than a teaching tool[J].

Journal of Computing Sciences in Colleges, 2004, 20(1): 49?54. [6]Buckner K. A non-traditonal approach to an assembly language

course[J]. Journal of Computing Sciences in Colleges, 2006,

22(1): 179?186. [7]Quintana F, Herrera L. Tutor68: Educational software for the

learning of the mc68000 assembly language[C]//Budny D.

Proceedings of the Frontiers in Education Conference.

Washington: IEEE Computer Society, 1995: 5?9.

[8]Yip K K R, Li K C D. A web-based call system on computer

architecture and assembly language programming[C]//Kinshuk.

Proceedings of the International Conference on Computers in

Education. Auckland, New Zealand: IEEE Computer Society,

2002: 1313?1314.

[9]Cecile Y, Matzi E, Miky R. Learning computer organization and

assembly language with the easy CPU visual environment[C]//

Demetrios G S. Proceedings of the 3rd IEEE International

Conference on Advanced Learning Technologies. Athens: IEEE,

2003: 491?491.

[10]Barnett B L. A visual simulator for a simple machine and

assembly language[C]//Proceedings of the Twenty-sixth SIGCSE

Technical Symposium on Computer Science Education. New

York: ACM, 1995: 233?237.

[11]Ramirez J M, Navarro A, Gallardo V, et al. A graphical

simulation tool for teaching microprocessors architecture and

assembly language[C]//Budny D. Proceedings of the Frontiers in

Education Conference on 1997. Chicago: IEEE Computer

Society, 1997: 701?701.

[12]Kenneth V, Pete S. Mars: An education-oriented mips assembly

language simulator[C]//Proceedings of the 37th SIGCSE Technical Symposium on Computer Science Education. New

York: ACM, 2006: 239?243.

[13]杨晓晖, 田俊. 基于Web的汇编语言实验仿真[J]. 计算机应

用与软件, 2005, 22(10): 133?134.

YAN Xiao-Hui, TIAN Jun. Web-based experimentation simulation of assembling language[J]. Computer Application and

Software, 2005, 22(10): 133?134.

[14]Andrew W. The development of a computer-aided learning tool

for supporting the teaching of assembly language programming[C]//Bruce D S. Proceedings of the 29th Annual

Hawaii International Conference on System Sciences. Hawaii:

HICSS, 1996: 323?331.

[15]邢文峰, 姚庆栋, 史姗, 等. 一种高速灵活的指令仿真器[J].

计算机工程, 2004, 30(22): 74?76.

XING Wen-feng, YAO Qing-dong, SHI Shan, et al. A fast and

flexible instruction set simulator[J]. Computer Engineering, 2004,

30(22): 74?76.

[16]严晖, 杨路明. 基于多线程的计算机硬件虚拟实验室的设计

与实现[J]. 中南大学学报: 自然科学版, 2004, 35(2): 290?294.

YAN Hui,YANG Lu-ming. Multithread-based design and

implementation of computer hardware system virtual laboratory[J]. Journal of Central South University of Technology:

Natural Science, 2004, 35(2): 290?294.

(编辑赵俊)

相关主题
文本预览
相关文档 最新文档