一种模型微处理器的汇编器设计与应用

作者: 张伟涛 任爱锋 孙小超

一种模型微处理器的汇编器设计与应用0

[摘 要] “微机原理”课程是大多数理工科高校学生的必修课程,当前“微机原理”教学常常被限制在x86指令集架构及其典型芯片的框架内,针对教学缺乏灵活性的问题,课程组在x86的基础上开发了一种模型微处理器,为了配合模型微处理器开展“微机原理”教学,通过设计并实现了一种模型微处理器的汇编器,具有源程序输入、编辑、汇编、调试及仿真等功能,可以顺利地将模型微处理器应用于“微机原理”教学中。通过教师的教学应用和学生上机编程练习,证明了模型机汇编器设计方案的有效性,极大地推动了“微机原理”课程教学改革的实施。

[关键词] 微处理器;微机原理;汇编器

[基金项目] 2021年度教育部产学合作协同育人项目“开源架构下的微机原理与数字逻辑基础融合教学改革实践”(202102278057);2021年度西安电子科技大学教育教学改革研究项目“数电与微原课程打通的教学模式改革探索与实践”(A21002)

[作者简介] 张伟涛(1983—),男,陕西西安人,工学博士,西安电子科技大学电子工程学院副教授,博士生导师,主要从事机器学习、嵌入式系统开发与应用研究;任爱锋(1974—),男,河北迁安人,工学博士,西安电子科技大学电子工程学院教授,博士生导师,主要从事电子设计自动化及SOPC技术研究;孙小超(1984—),男,陕西西安人,工学硕士,西安现代控制技术研究所飞控与惯导事业部高级工程师,主要从事多功能一体化集成微系统研究。

[中图分类号] G642.0 [文献标识码] A [文章编号] 1674-9324(2024)29-0029-04 [收稿日期] 2023-06-05

在“微机原理”课程教学中,国内大部分高校以8086或8088 CPU为蓝本来开展教学工作,学生对汇编语言程序设计的练习则主要在Intel开发的宏汇编程序MASM或其他衍生的软件中完成,这种以8086 CPU和MASM共同支撑的“微机原理”教学使学生能够很好地掌握CPU的工作原理、微机的结构与组成、存储器与I/O接口的设计方法等内容[1]。然而这种教学模式也容易导致学生的思维局限于由x86指令集架构形成的知识壁垒,甚至错误地认为CPU能执行的指令只有x86指令,汇编语言程序必须通过宏汇编程序来完成编译,因此这种教学模式严重束缚了学生在微处理器设计中的创新意识,对于面向未来培养解决我国“卡脖子”问题的创新型人才是极其不利的[2]。

鉴于以8086 CPU和MASM为核心的“微机原理”教学缺乏足够的灵活性,学生只能掌握已有处理器的应用,无法深入理解微机本质,更无法为国产指令集架构生态的建立贡献力量,课程组在x86的基础上开发了一种模型微处理器,其指令集与x86架构类似[3-4]。为了打破x86架构和宏汇编程序的思维禁锢,设计的模型机对x86指令集架构进行了大量修改,删除了其中不常用的指令,同时将原有的8种寻址方式精简到常用的4种,并对寄存器的数量、位宽以及功能均进行了重新定义,使设计的模型机指令集更偏向于精简指令集架构(RISC),指令执行效率和利用率更高。以设计的模型机开展“微机原理”教学将使学生跳出x86和宏汇编的限制,站在更高的角度认识微处理器和汇编语言[5-6]。

由于模型机的指令集已与传统x86指令集不同,宏汇编程序已无法满足模型机的汇编语言源程序汇编要求。因此,本文提出了一种模型微处理器的汇编器设计方案,并实现了在“微机原理”课程教学中的应用,通过教师的教学使用和学生上机编程练习,证明了模型机汇编器设计方案的有效性,极大地推动了“微机原理”课程教学改革的实施。

一、模型机汇编器设计

(一)汇编器总体结构

汇编器采用模块化的设计思想,汇编器的设计主要包括功能设计和用户界面设计,总体架构如图1所示。其中,功能设计包括文件输入输出功能、编译功能和调试功能。用户界面设计包括三个人机交互界面,汇编源程序设计窗口可用于源程序代码的输入、编辑与保存;编译信息窗口用于显示编译器和调试器的输出提示信息;信息显示模块用于显示程序运行过程中的各类信息,包括用于显示寄存器内容的寄存器显示区,可以查看指定变量信息的变量查看表,用于模拟简单I/O端口的I/O端口表,用于显示程序运行结果的输出窗口,以及内存数据显示窗口。

汇编器的总体设计流程如图2所示,汇编器启动后,首先,用户进入主界面模块,该模块的主要功能是加载各子窗口项,显示各个窗口以供用户使用。用户可以加载汇编源程序,并在编辑框中对其进行编辑和设计。其次,用户可以选择对源程序进行编译操作。在编译模块中,汇编器会完成对汇编源程序的编译操作,并检查源程序中的语法错误。如果程序出错,汇编器会在窗口界面中输出相应的错误信息;如果程序没有报错,则通过编译后可以进入调试模块。调试模块中,汇编器可以对编译后的汇编源程序执行调试和运行操作,并实时根据当前程序执行的状态,更新并显示各个窗口界面的内容。调试模块是汇编器的核心功能之一,可以帮助用户进行程序的调试和运行,从而更好地理解程序的执行过程并分析程序中可能存在的问题。

汇编器主要包含三大模块:主界面模块、编译模块和调试模块。主界面模块负责提供汇编器的主要界面,编译模块完成对汇编源程序的编译操作,而调试模块则提供程序的调试和运行功能。三个模块相互配合,共同完成汇编器的各项功能,为用户提供便捷高效的汇编程序设计与调试服务。

(二)编译模块设计

编译的主要目的和功能是检查汇编源程序中的语法错误并生成可执行机器码,与传统汇编器不同的是,本汇编器实现的是虚拟编译,虚拟计算机的工作流程,通过编译后不会生成可执行机器码,而是生成可供调试运行的一系列工作列表,如图3所示。因此,模型微处理器汇编器的编译目的有两个:查错和生成数据区、变量列表、指令列表和标号列表,为调试运行做准备。在建立指令列表的时候,汇编器将指令进行分类编号处理。

汇编器的编译流程如图4所示,汇编器在运行过程中,首先会对源代码进行预处理,然后对源程序进行分段。如果汇编语言源程序结构正确,则进行语法分析、词法分析等操作,并建立一系列工作列表。在进行分段和语法检查的过程中,如果没有错误,则将当前段的编译标志置为真;反之,则置为假。

在所有程序编译完后,依次判断各个段的编译标志,所有标志为真,则输出编译通过信息;如果有编译标志为假,则输出出错信息。

(三)调试模块设计

调试模块设计了两种调试运行方式:单步执行和断点运行。在单步执行方式下,每次只执行一条指令,并更新界面显示;在断点运行方式下,每次都运行至下一个断点处,并更新界面显示。

调试过程中主要执行的是取指令和执行指令两个步骤,取指令即获取指令的属性信息。对于模型微处理器指令集来说,指令拥有4个属性:指令类型、操作类型、目的操作数和源操作数。在设计调试模块时,为了调试方便,增加两个属性:指令所在行号和断点标志。在取指令过程中,指令类型和操作类型都在编译阶段进行了编号处理,因此可以通过相应编号获取,而目的操作数和源操作数信息则需要进行解码。

二、模型机汇编器教学应用

在“微机原理”课程教学中,模型微处理器汇编器可以作为一个非常有用的教学工具,通过上机仿真实验,可以帮助学生更好地理解指令集、寄存器、内存,中断处理和I/O编程的相关知识。同时,汇编器也可以帮助学生进行程序的调试和优化。学生可以使用汇编器提供的调试工具来找出程序中的错误,优化程序的性能并提高可靠性。

图5给出了汇编器界面,学生可通过其完成程序编辑、文件保存、汇编、调试的操作,也能观察内存、寄存器、变量、I/O端口等信息的变化。图5中的示例程序是三个有符号数的排序,程序通过编译之后,会在内存窗口显示当前内存的值,同时在寄存器窗口显示当前寄存器和PSW的值,并在调试运行过程中标红变化的值。用户还可以通过查询的方式查找相应的变量,并在窗口中实时显示其相应的变化。此外,汇编器会在下方的内存窗口显示相应程序的内存,方便用户进行查看调试。

汇编源程序能够通过编译,但是并不代表在调试运行过程中不会出现错误。编译错误和运行错误是不同的错误。编译错误指的是汇编语言语法不通过,而运行错误则是由程序设计者考虑不周到所致,比如堆栈溢出、访问未开辟空间、跳转地址不合法等。当遇到以上程序错误,汇编器在汇编过程中会弹出错误提示窗口,方便学生定位和纠正错误。此外,汇编器可以生成可供下载到FPGA模型机的HEX文件,配合相应的模型机,学生可将其下载到模型机中进行检验。软硬结合的方式能更好地帮助学生理解课堂的教学内容,提高学生的动手能力和解决实际问题的能力。

结语

为了解决“微机原理”课程教学常常被限制在x86架构中的问题,课程组开发了一种模型微处理器,本文给出了模型微处理器汇编器的设计方案,实现了模型机汇编语言源程序的编辑、汇编、调试、机器码生成等功能。汇编器可以帮助学生更好地理解微处理器的工作原理,有助于学生进一步探究指令集架构的设计问题。

参考文献

[1]姚静.基于Proteus的微机原理实验教学研究[J].信息通信,2020(10):99-101.

[2]龚琴.“新工科”背景下《微机原理与接口技术》实践教学改革研究[J].新型工业化,2021,11(12):23-24+27.

[3]李晓飞,吴薇.“微机原理与接口技术”课程实践教学环节改革[J].教育教学论坛,2019(17):133-134.

[4]苗曙光,马玉红,邵丹,等.基于自制实验平台的微机原理实验教学探索与实践[J].商丘师范学院学报,2022,38(9):84-87.

[5]王晨旸.新工科背景下应用型本科院校微机原理与接口技术教学建设研究[J].电脑知识与技术,2021,17(17):143-144.

[6]毕翔,石雷,卫星,等.面向系统能力培养的微机原理课程教学改革研究[J].计算机教育,2020(5):127-132.

Design and Application of an Assembler for a Model Microprocessor

ZHANG Wei-tao1, REN Ai-feng1, SUN Xiao-chao2

(1. School of Electronic Engineering, Xidian University, Xi’an, Shaanxi 710071, China; 2. Flight Control and Inertial Navigation Division, Xi’an Institute of Modern Control Technology, Xi’an, Shaanxi 710061, China)

Abstract: The course of Microcomputer Principles is a compulsory course for most students of science and engineering colleges. The current teaching of Microcomputer Principles is often limited within the framework of the x86 instruction set architecture and its typical chips. To solve the problem of lack of flexibility in teaching, the course team develops a model microprocessor on the basis of x86. In order to cooperate with the model microprocessor to carry out the teaching of Microcomputer Principles, this paper designs and implements a model microprocessor assembler, which has the functions of source program input, editing, assembly, debugging, and simulation. The model microprocessor can be successfully applied to the teaching of Microcomputer Principles. Through the teacher’s teaching application and the students’ computer programming exercises, the effectiveness of the model machine assembler design scheme is proved, which greatly promotes the implementation of the teaching reform of the Microcomputer Principle course.

Key words: microprocessor; Microcomputer Principle; assembler

经典小说推荐

杂志订阅