惠丽+张浩宇
摘 要:“计算机组成原理试验”是《计算机组成原理》理论课程的一个重要辅佐和弥补,在开设试验课程进程中,咱们发现试验体系自带的汇编言语指令体系与学生所学的8086汇编言语指令体系不兼容,影响了试验作用,因而课程组教师开发了一款辅佐软件,经过该软件对两种汇编言语进行转化,提高了学生的学习功率,获得了较好的作用。
关键词:计算机组成原理试验;TH-union+教育试验体系;汇编言语转化器
中图分类号:G642.3 文献标识码:A 文章编号:1002-4107(2015)08-0023-02
一、导言
《计算机组成原理》是计算机科学与技术专业、软件工程专业的专业主干课程,该课程围绕着构成计算机的五大部件全面具体的论述了计算机的组成和各部件的作业原理,并引申出各部件的规划完结办法。
为了能够让学生对《计算机组成原理》这门课程有一个理性的了解,我院于2009年置办了由清华大学计算机学院研制开发的TH-union+教育试验体系,将其应用于《计算机组成原理》试验课程。TH-union+教育试验体系自身就是一台简略的计算机,该试验体系不只能够支撑传统的硬件试验,并且创造性的在试验体系中增加了汇编言语指令体系,使得许多传统硬件试验在连接了硬件电路之后,不再运用手动开关向存储器输入指令和数据的办法验证电路的正确性,而是改用经过输入汇编言语程序对电路的正确性进行验证,大大提高了作业功率,也能够更好的促进学生对理论常识的消化和了解。因而在试验课程的设置中,整体试验大致能够分红两个部分,榜首部分是结合TH-union+教育试验体系现有的汇编言语编写简略的应用程序,以到达了解把握试验体系各部分硬件的意图。第二部分是在榜首部分的基础上由学生运用VHDL言语规划一个8位的CPU,并运用试验体系的汇编言语进行编程,以验证CPU规划的正确性。在整个试验教育进程中,运用试验体系的汇编言语编程是试验的一个重要环节,但在教育进程中,咱们发现,因为学生初度触摸该试验体系,对它的汇编言语指令不了解,常常和现已学过的8086汇编言语指令混杂,导致运用试验体系的汇编言语编程的才能缺乏,对后续试验有必定的影响,因而咱们课程组整体教师就有了规划一个汇编言语转化器的主意。
二、对TH-union+教育试验体系的改善
TH-union+教育试验体系是一个优异的《计算机组成原理》课程试验教育渠道,它开始的受益者是清华大学计算机学院的学生,而咱们黑龙江大学计算机学院软件学院的学生与清华大学计算机学院的学生比较,着手才能、归纳技术还存在必定的距离,正是因为我院学生的这些距离,使咱们有必要对TH-union+教育试验体系进行改善。
TH-union+教育试验体系上有一个汇编言语,它和咱们学过的8086汇编言语没有任何关系。也就是说同学们要做计算机组成原理试验就要再学一次汇编言语。这个汇编言语一共有48条指令,只要4种寻址办法,有16个寄存器,……,一切都变了。因而咱们有必要用一个办法使学生快速学会新的汇编言语,并运用它进行程序规划。
TH-union+教育试验体系的规划者为了使试验体系更挨近实在的计算机在指令体系中规划了与输入输出操作有关的指令,使得程序在规划进程中能够进行输入输出操作。可是惋惜的是,学生在学习8086汇编言语时,一切的输入输出操作都是由DOS体系功用调用函数完结,没有涉及到真实的底层硬件输入输出操作,现在在试验体系上初次自己编写输入输出函数,对学生具有必定的挑战性,这是试验体系的第二点需求改善的当地。
三、解决办法
依据以上两点,课程组整体教师决议自行开发一款辅佐软件,用来完结试验体系的汇编言语程序与8086汇编言语程序彼此转化,进而辅导辅佐学生快速把握TH-union+教育试验体系的汇编言语和相关常识。
本辅佐软件是运用windows下linux模仿环境的flex东西和gcc编写完结的。flex是linux下的一个用来开发编译器的东西,首要用于词法剖析器的规划开发。因为本辅佐软件需求对两种汇编言语的句子进行转化,其进程包含很多的词法剖析作业,因而咱们选用flex东西,以缩短开发周期。
本辅佐软件由两个可执行文件、两个示例程序和一个阐明文件构成,两个可执行文件暂时定名为my和your。my的功用是把TH-union+教育试验体系的汇编言语程序转化成8086汇编言语程序。your的功用是把8086汇编言语程序转化成TH-union+教育试验体系的汇编言语程序。
因为指令格局的原因,试验体系的汇编言语指令操作数的寻址办法悉数隐藏在操作码中,也就是说在指令译码的时分,当指令译码器剖分出指令功用的一起,也知道了指令中各操作数的寻址办法。这就使得试验体系不管在指令数量仍是在寻址办法方面都比8086汇编言语指令体系简略,咱们把试验体系的汇编言语看成是8086汇编指令体系的子集。当my程序扫描到试验体系汇编言语指令时,依据操作码就能够判别出它对应的8086汇编指令是什么,寻址办法是什么,然后转化成8086汇编言语指令即可。经过my对两种汇编言语彼此转化,提示学生留意两种汇编言语的相同点,以便学生在阅览试验体系汇编程序时快速了解它的编程意图。
your的功用是把8086汇编言语程序转化成试验体系的汇编言语程序。在具体操作中,因为8086汇编言语比试验体系的汇编言语杂乱,所以需求做一些简略的约束,以便程序转化。
榜首,咱们约好your只能转化正确的8086汇编言语程序。辅佐软件的规划意图之一是要学生在现已把握8086汇编言语的基础上,不需求再额定学习其他汇编言语就能够在试验体系上编写程序,因而咱们假定学生能够运用8086汇编言语在通用计算机上完结试验程序的规划。为了便于学生运用8086汇编言语规划程序,咱们在软件包中增加了一个示例程序2.asm,它自身也是一个8086汇编言语程序结构,学生运用这个结构编程功率会更高。为了确保程序的正确性,在软件中附带了Boland公司的Turbo Assembler汇编言语编译器(简称tasm),学生编写的汇编言语能够用tasm编译成可执行文件,以确保程序的正确性。
第二,咱们要对8086汇编言语程序做简略的语法剖析。因为试验体系汇编指令的操作数寻址办法都是固定的,而8086汇编言语的指令体系操作数寻址办法是不固定的,这就使咱们不得不对8086汇编言语程序进行简略的语法剖析。
具体操作如下:转化程序your扫描到一条指令首要对指令的操作码部分进行剖析,判别该指令是否能够转化成TH-union+教育试验体系的汇编言语指令,假如能够就在指定变量中设置一个指令对应的数值,假如不能转化就输出一行字符串,提示用户你的程序中运用了不行转化的8086汇编言语指令,在转化进程中把这条指令疏忽。8086汇编言语指令体系是一个杂乱指令体系,指令存在很多的功用冗余,因而辅佐软件选用疏忽指令的办法,在这里也能够选用发现不行转化的指令就宣布过错提示,然后强行完毕转化的办法,但课程组教师考虑到每个人的编程习气不同,所以选用前者比较温文的提示办法。
然后是对操作数寻址办法的判别,相同依据不同的寻址办法在指定变量中设置对应的数值,假如是试验渠道支撑的寻址办法,就直接转化成相应的试验体系汇编言语指令,假如不是试验渠道支撑的寻址办法,体系将提示呈现过错,并强行完毕转化。在这一进程中最费事的是一些寻址办法的转化。例如在8086汇编言语指令体系中,双操作数指令答应意图操作数选用寄存器寻址办法,源操作数选用当即寻址办法。例如:add ax,10,可是试验体系的汇编言语规则双操作数指令的两个操作数都选用寄存器寻址办法,只要MVRD指令支撑当即寻址,因而一旦发现上述指令,转化程序将发生下面四条指令,以确保程序的正确性。
PUSH R15
MVRD R15,10
ADD R0,R15
POP R15
第三,咱们要对输入输出指令独自处理。因为TH-union+教育试验体系有自己的输入输出指令,这些指令与8086汇编言语的输入输出指令彻底不同,为了简化问题,便于学生们敏捷把握串口操作,咱们约好在编写与输入输出操作有关的程序时,有必要选用事前规划的宏。首要咱们在示例程序2.asm中运用DOS体系功用的7号子功用和2号子功用完结根本的输入输出宏。在编程进程中但凡遇到输入输出操作都调用这两个宏。然后咱们把这两个宏名加入到转化程序中,当转化程序扫描到这两个宏名将主动生成对应的试验体系汇编指令。在程序规划进程中,试验体系的输入输出操作选用查询办法,因而每次生成的试验体系汇编程序里边必定要带一个有条件跳转指令和标号,在具体操作时,很可能呈现屡次运用输入输出操作,每次发生的标号都要不同,所以程序中有必要对生成标号进行处理,这是此部分的规划要点。
本辅佐软件初次应用于2012级软件学院的试验教育中,提高了教育功率,获得较好的教育作用,一起也有许多热心的同学对辅佐软件提出了名贵的定见,课程组整体教师将依据师生的反应定见进一步完善辅佐软件,为今后的试验教育供给更多更好的支撑。
参考文献:
[1]王诚,刘卫东,宋佳兴.计算机组成与规划:第三版[M].
北京:清华大学出版社,2008:7.
[2]王诚,刘卫东,宋佳兴.计算机组成与规划试验辅导:第
三版[M].北京:清华大学出版社,2008:8.
[3]John R.Levine.lex与yacc:第二版[M].北京:机械工
业出版社,2003:1.
此文由 科学育儿网-资讯编辑,未经允许不得转载!: 科学育儿网 > 资讯 » 《计算机组成原理》pdf 计算机组成原理试验课程辅佐软件的研讨与规划