维普资讯 http://www.cqvip.com 第1O卷第1期 2008年3月 安顺学院学报 JOURNAL OF ANSHUN COLLEGE Vo1.10 No.1 Mmr.2008 汇编语言与计算机组成的关系 田凌云 (广东商学院 信息学院,广东 广州510320) 摘要:“计算机组成与汇编”课程是计算机、软件工程、电子商务、管理信息等专业的一 门十分重要的专业基础课程。也是进一步学习其他后继课程的基础课程。要学好汇编语言, 首先要熟悉机器硬件系统——即计算机的基本组成原理;同时汇编语言又是计算机组成原理 课的先行课程,文章探讨二者在教学中的不同与联系。 关键词:汇编语言;计算机组成愿理;计算机硬件系统;机器指令集 中图分类号:G633.67文献标识码:A引言 文章编号:1673—9507(2008)01—0134—03 的效率都不如汇编语言程序,许多情况下更是远远不及。 一、计算机、软件工程、电子商务、管理信息的专业的学 生,理所当然地需要有较深的计算机基础知识和计算机的 应用能力。该专业的学生不应仅仅满足于利用他人已开发 出来的软件和软件工具来解决实际问题,还应具备有分析、 研究原有软件系统,改进、完善、提高原有系统功能的能 力。因此,计算机组成与汇编课程就成为一门十分重要的 专业基础课程,它可以帮助学生理解和掌握其它计算机课 程的理论。同时汇编语言程序设计将使学生受到更严密、 更系统的程序设计及其思维方法的训练,为深入分析、研 究、开发新的软件系统打下良好的训练基础。 然而汇编语言的是面向机器的语言,与机器关系密切。 汇编语言是计算机能提供给用户的最快而又最有效的语言, 在对于程序的空间和时间要求很高的场合,汇编语言是必 不可少的。而汇编语言程序能获得“时空”高效率的主要 原因是:构成汇编语言主体的汇编格式指令是机器指令的 符号表示,每一条汇编格式指令都是所对应的某条机器指 令的“化身”;另一个重要的原因是汇编语言程序能直接并 充分利用机器硬件系统的许多特性,通过它可最直接和最 有效地操纵机器硬件系统。高级语言程序在上述两点上要 逊色得多。 由此可见汇编语言要求程序员能够比较熟习机器的硬 件系统,要求程序员在使用汇编语言编写程序时,必须考 虑包括寄存器、存储单元和寻址方式在内的几乎所有细节 问题。例如:指令执行对标志的影响,堆栈设置的位置等。 要学好汇编语言,首先要要求学生熟悉机器硬件系统—— 即计算机的基本组成原理;但是在教学中,又要注意与计 算机组成原理课程的区别,汇编语言是计算机组成原理课 的先行课程,在深度广度上都与后者不同。汇编语言课程 在使用高级语言编写程序时,程序员不会遇到这些琐碎却 重要的问题。 中的计算机组成方面的教学在广度上只是介绍与机器指令 系统有关的部分,在深度上只需要讲解到有助于理解机器 指令系统及其编程的程度 二、“汇编语言”与“计算机组成知识”的关系 下面的例子,说明了‘汇编语言’与‘计算机组成’ 是密切相关的。 众所周知计算机是通过执行指令序列来解决问题的, 因而每种计算机都有一组指令集供用户使用,这组指令集 称为计算机的指令系统。目前,一般小型或微型计算机的 汇编语言有两大优势是其它编程语言无法替代的。其 一,汇编语言是能够利用计算机所有硬件特性并能直接控 指令系统可以包括几十种或百余种指令。计算机只能识别 二进制代码,所以机器指令是由二进制代码组成的。机器 指令一般由操作码和操作数两部分构成,操作码在前,操 作数在后。操作码指出要进行的操作或运算,如加、减、 制硬件的唯一语言,对于很多需要直接控制硬件的场合, 则更是非用汇编语言不可了。其二,用汇编语言编写的源 程序在汇编后所得的目标程序效率高。其高效率反映在时 间和空间两个方面:一个是速度快;另一个是目标程序短。 在采用相同算法的前提下,任何高级语言程序在这两方面 收稿日期:2007—03—1 06 传送等;操作数指出参与操作或运算的对象,也指出操作 或运算结果存放的位置,如cpu的寄存器、存储单元和数 作者简介:田凌云(1974~),女,广东商学院信息学院讲师。研究方向:信息系统与决策支持系统,电子商务。 ・134・ 维普资讯 http://www.cqvip.com 据等。例如:要求计算机将10和7相加的机器语言代码如 下: 1011 0000 0000 0000 1111 000 O111 0100 1010 0100 汇编语言教学中不可避免的要讲解计算机的基本组成, 在此处的计算机组成知识的教学与后继课程计算机组成原 理的教学在深度广度,上是不同的。下面我们以处理器为 例做一些探讨。 在汇编语言教学中,必不可少的要讲解处理器,但其 主要是讲解CUP的构造及流水线运作,寄存器的功能,只 是讲到其各组成部件的基本功能这个层面,可选择8086的 CPU进行教学,采用图(1)来进行教学已足够。 几乎没有人能直接看出该程序片段的功能,原因是程 序员难以掌握机器语言。因此程序员难以用机器语言写程 序,更难写出健全的程序;用机器语言编制的程序也不易 为人们理解、记忆和交流。只是在早期或不得已时才用机 器语言写程序,现在几乎没有人用机器语言写程序了。 为了克服机器语言的上述缺点,人们采用便于记忆、 并能描述指令功能的符号(即英文单词缩写)来表示指令 的操作码。这些符号被称为指令助记符。同时也用符号表 示操作数,如CPU的寄存器、存储单元地址等。 用指令助记符、地址符号等符号表示的指令称为汇编 格式指令。而汇编语言是汇编格式指令、伪指令的集合及 其表示、使用这些指令的一组规则。用汇编语言书写的程 序称为汇编语言程序,或称为汇编语言源程序, 利用汇编语言,上述程序片段可表示如下: MOV AL,7 ADD AL,10 HI ’ 图(1)8086CPU 如果希望对此再讲深点,可增加讲解8086CPU的各引 脚的功能,以及最大最小方式系统的总线结构。但在教学 要求上可以作为“了解”的知识来处理。然而不同的是, 在计算机组成原理课中,是要讲处理器的组成与设计的知 识。要讲解上图中的各部件的设计原理,如运算部件ALU 的设计原理、控制器器的设计原理、寄存器堆的设计原理 等等。 ’ 在计算机组成原理课的教学中,对于运算器ALU的教 显然,汇编格式指令比二进制编码的机器指令要容易 掌握得多,用汇编语言编写的程序要比用机器语言编写的 程序容易理解、调试和维护。 事实上要让学生理解上述程序,首先要讲解程序是放 在内存的代码段,用CS、IP寄存器寻址以及内存地址的计 算方法,还要讲清楚CPU里面寄存器的功能,如AX、AL, 还要讲解CPU是如何如何借助内部外部总线系统取出程序 代码、如何译码,如何指挥算术逻辑部件ALU进行计算, 如何存放计算结果,以及设置结果的状态等等。 汇编格式指令是机器指令的符号表示,汇编格式指令 与机器有着密切的关系,因此汇编语言也与机器有着密切 学,一般是使用一个位片结构的4位的定点运算器Am2901 芯片作为实例,完整地讲解运算部件的功能、组成与运行 控制方法,以及Am2901芯片如何实现控制与操作、芯片 的具体线路和管脚信号等,此外还要讲解如何由四片 Am2901芯片,构成一个16位的运算器,即4片Am2901 芯片间的连接、4个Am2901芯片组之外的线路设计等以及 由4片Am2901芯片组成的16位运算器的控制与操作的实 的关系,确切地说汇编语言与机器所带的CPU有着十分密 切的关系。对与不同类型的CPU,要使用各种不同的汇编 语言。于是,对于各种不同类型的CPU,也就有不同的汇 编程序。在教学中首先考虑的是选择那种机型作为学习汇 编语言的教学对象。根据国际上和我国当前计算机的普及 现等。包括它们之间的连接和正确解决其外部数据的入和 出等内容。此部分常使用的Am2901芯片教学实例进行教 学,如图(2)。 而对于控制器器的设计原理,则主要介绍控制器的功 性及发展性,一般选择国际国内的主流机型IBM及其兼容 的机型来进行教学。其次在教学中不可避免的要讲解CUP 的构造及运作原理,寄存器的功能、内存的分配及寻址方 法、总线系统、以及输入输出接口技术等等。 因此,只有具备计算机组成原理知识,才能理解计算 机的指令系统,才能使用这种面向机器的汇编语言编写出 高效的程序。 能、组成与指令执行步骤、及其在整机中的位置等。根据 控制器的具体组成与运行原理的不同,通常控制器又分为 微程序的控制器和组合逻辑(硬布线)的控制器。微程序 的控制器的教学中则常采用Ash2910芯片来讲解微程序定 位器的组成与功能,而计算机微程序控制器的设计与实现, 常结合图(3)讲解。 而组合逻辑控制器,其基本运行原理是用组合逻辑门 线路,直接提供控制计算机各功能部件协同运行所需要的 三、如何在“汇编语言”的教学中正确处理“计算机 组成”的知识 控制信号。其组成与运行原理,可结合图(4)讲解。 ・135・ 维普资讯 http://www.cqvip.com
控髓■ l-.总钱 -I,冀饿椰件 。 该部分学完后,学生可以使用最基本集成电路块及相关线 路部件,设计出一台简单的CPU,甚至可自行设计微程序 的相关指令的。 对于寄存器、内存、总线系统、以及输入输出接口技 术等等方面的教学,:二者也具有类似的不同处。 三、结束语 可见计算机组成原理课程中的“计算机组成”的教学, 兰 釉【2)‘-雠毒片-^nt 揭r3 徽挂序控锚嚣的l麓奉组成 与汇编语言中的“计算机组成”的教学,是在完全不同的 层面上的。计算机组成原理课程的“计算机组成”,讲的更 深、更透、更广,主要着眼于计算机各组成部件的设计; 学完该课,学生不仅懂得计算机是如何工作的,还应该具 有使用最基本的集成电路块,设计出简单CPu、进一步设 计出简单8位或16位计算机,同时编制出其相应的指令代 码的能力,计算机组成原理课程处于教学的底层。而汇编 语言中的“计算机组成”,着眼于计算机各组成部件的最基 本功能,以及各部件组合后的功能,其目的是直接服务于 汇编语言的教学,是处于教学的顶层。同时汇编语言的学 习,又是计算机组成原理课程必备的基础知识。所以汇编 语言教学中,不能追求“对计算机的组成”讲透、讲全, 而是要恰到好处地掌握教学的深度和广度。 图(4) 组合逻辑控制器组成 On the relationship between Assembly langugage amd Computer organization Tiaft Lingyun (Information Science and Technology School,Gomagdo ̄g Business College,Guangzhou 510320,Guangdong,China) Abstract:Computer orgalnization and Assembly Language is one of the basic courses of the Subject of Com. puter,Information Management,Electronic Business and Software Engineering.The assembly language is the ba— sic course for studying other following language courses.Before studying this course,students need to understard hardware system,especially principles of computer organization.The assembly language is the necessary course for studying computer organization.This paper will discusses the different and connections. Key words.Assembly language;Principles of Computer Organizatiom;Hardware System Instruction set. (责任编辑:王德红) ・136・