计算机组成中sub,计算机组成第5章计算机系统概述

《计算机组成第5章计算机系统概述》由会员分享,可在线阅读,更多相关《计算机组成第5章计算机系统概述(65页珍藏版)》请在人人文库网上搜索。

1、1,计算机组成原理教学课件 王 诚 教授 清华大学计算机系 2009年10月,第 5 章 计算机系统概述,(计算机组成原理课程若能和汇编语言程序设计结合起来, 效果会更佳) 5.1 指令格式和指令系统概述 5.2 基本寻址方式概述 5.3 指令系统举例 5.4 计算机的汇编语言程序设计,3,数据运算部件,计算机控制部件,数据存储 部件,接口线路 数据输入设备,接口线路 结果输出设备,数据总线 地址总线 控制总线,计算机主机,计算机 外围设备,计算机的 CPU,计算机硬件系统的 5 个功能部件,DB,AB,CB,4,可以从 6 个层次分析和看待计算机系统的基本组成。 指令系统层处在硬件系统和软件。

2、系统之间,是硬、软件之间的接口部分,对两部分都有重要影响。 硬件系统用于实现每条指令的功能,解决指令之间的连接关系; 软件由按一定规则组织起来的许多条指令组成,完成一定的数据运算或者事务处理功能。 指令系统优劣是一个计算机系统是否成功的关键因素。,指令系统在计算机中的地位,5,计算机系统由硬件和软件两大部分组成。硬件指由中央处理器、存储器以及外围设备等组成的实际装置。软件是为了使用计算机而编写的各种系统的和用户的程序,程序由一个序列的计算机指令组成。 指令是计算机运行的最小的功能单元,是指挥计算机硬件运行的命令,是由多个二进制位组成的位串,是计算机硬件可以直接识别和执行的一个信息体。 一台计算。

3、机提供的全部指令构成该计算机的指令系统。指令用于程序设计人员告知计算机执行一个最基本运算、处理功能,多条指令可以组成一个程序,完成一项预期的任务。,1、指令概述、功能和设计要求,6,具体一点说,可以把设计要求归纳为如下 4 点: 完备性:指令齐全,编程方便 规整性:格式与运算规则统一 高效性:占内存少,运行省时 兼容性:同一系列机软件兼容,计算机硬件只能直接识别和使用二进制编码的信息,为此指令都是二进制的位串,很难有其他选择。而程序员却很难用它(机器语言)设计程序,这可通过计算机厂家提供汇编语言来解决,或者提供直接针对解题算法的高级语言。,对设计指令系统的要求,对指令系统的要求很严格,既要支持。

4、程序设计人员用它设计各种程序,越简单、方便越好,又要容易在计算机中用硬件实现这些指令的处理功能,越节省、高效越好,但这两个方面的要求经常是有矛盾的。,7,3 个层次的程序设计语言,机器语言是计算机硬件能直接识别和运行的指令的集合,是二进制码组成的指令,用机器语言设计程序基本不可行。 汇编语言是对计算机机器语言进行符号化处理的结果,再增加一些为方便程序设计而实现的扩展功能。 在汇编语言中,可以用英文单词或其缩写替代二进制的指令代码,更容易记忆和理解;还可以选用英文单词来表示程序中的数据 (常量、变量和语句标号),使程序员不必亲自为这些数据分配存储单元,而是留给汇编程序去处理, 达到基本可用标准。。

5、 若在此基础上,能够在支持程序的不同结构特性(如循环和重复执行结构,子程序所用哑变元替换为真实参数)等方面提供必要的支持,使汇编语言基本达到可以实用的程度。 汇编程序要经过汇编器翻译成机器语言后方可运行,8,高级语言又称算法语言,它的实现思路,不再是过分地“靠拢”计算机硬件的指令系统,而是着重面向解决实际问题所用的算法,瞄准的是如何使程序设计人员能够方便地写出处理问题和解题过程的程序,力争使程序设计工作的效率更高。 目前常用的高级语言有 BASIC、 PASCAL、 C、C+、JAVA、PROLOG、VHDL等上百种。用这些语言设计出来的程序,通常需要经过一个叫做编译程序的软件先翻译成机器语言。

6、程序,才能在计算机的硬件系统上予以执行,个别的选用解释执行方案。 高级语言的程序通用性强,在不同型号的计算机之间更容易移植。,3 个层次的程序设计语言,9,确定指令系统的两种思路,从降低硬件系统构成的复杂程度、提高指令执行的速度和并行性考虑,确定指令系统时有两种思路: RISC(Reduced Instruction Set Computer) 通常称为精简指令系统的计算机。提供数目较少、格式与功能简单、运行高效的指令,追求的是计算机控制器实现简单,运行高速,更容易在单块超大规模集成电路的芯片内制做出来。指令并行性好。 CISC(Complex Instruction Set Computer。

7、) 通常称为复杂指令系统的计算机,是相对于RISC一词提出来的。其特点是:指令条数多,格式多样,寻址方式复杂,每条指令的功能强,优点是汇编程序设计容易些,但计算机控制器的实现困难多,很多指令被使用的机会比较少。指令并行度差。,10,指令是用户使用计算机和计算机本身运行的最小的功能单元: 用于设计程序, 指令是由多个二进制位组成的数串, 计算机硬件可直接识别和执行。通常情况下一台计算机需要提供哪些指令呢? 计算机用于计算和处理数据,为此,要在计算机硬件系统中设置 5 种类型的部件:运算器部件、控制器部件、存储器部件、输入设备、输出设备,各自承担数据运算、系统指挥控制、保存当前程序和数据、执行输入。

8、和执行输出的功能。需要在计算机中设置为使用和控制这几个部件运行的相应指令。 也可换一个角度说,写程序要使用哪些指令呢?,2. 计算机中需要配备的指令,11,输入设备,输出设备,入出接口和总线,外存设备,主存储器,高速缓存,控 制 器,运 算 器,使用硬件系统用到的基本指令,ADD SUB AND OR MVRR SHR RCL,OUT,STORE PUSH,JUMP JRC JRNC JRZ JRNZ CALL RET,LOAD POP,IN,12,指令的功能和分类,指令用于设计程序,指令系统构成最低级别的程序设计语言,程序设计人员通过指令直接指挥计算机的硬件完成某一个基本的运算、处理功能,例。

9、如: 对数值数据的算术运算,对逻辑数据的逻辑运算, 在计算机部件之间传送、保存数据, 从外部向计算机内输入数据, 把计算机内部计算结果输出出来, 按照某种条件控制计算机选择执行某段程序, 当然还有另外一些方面的更深层次的要求 等; 可以按照指令执行的功能对它们们进行分类。,13,指令的功能分类-1,算术与逻辑运算指令 加、减、乘、除、变符号 等算术运算 与、或、非、异或 等逻辑运算 移位操作指令 算术移位(一般只右移)、逻辑移位、循环移位 数据传送指令 通用寄存器之间传送 通用寄存器与主存储器存储单元之间传送 主存储器不同存储单元之间传送 输入输出指令 通用寄存器与输入输出设备(接口)之间传送。

10、,14,指令的功能分类-2,转移指令 变动程序中指令执行次序的指令,分为无条件转移指令和条件转移指令 子程序调用与返回指令 子程序调用与返回指令要配合使用,子程序的最后一条指令一定是返回指令,执行结束后返回主程序断点 堆栈操作指令 堆栈(stack)是由若干个连续存储单元组成的先进后出的存储区,有压入(即进栈)和弹出(即退栈)操作 其他指令 置条件码指令、开中断指令、关中断指令 停机指令、空操作指令、特权指令,15,指令应用(示意性汇编程序),IN 寄存器1, 输入设备1 ;从输入设备1 读数到 寄存器1 LOAD 寄存器2, 内存地址n ;从主存单元n 读数到寄存器2 ADD 寄存器1, 寄。

11、存器2 ;两个寄存器内容相加并存结果 STORE 内存地址m, 寄存器1 ; 写寄存器1的内容到主存单元m MOVE 寄存器3, 寄存器2 ;送寄存器2 的内容到寄存器3 OUT 输出设备2, 寄存器3 ;寄存器3 的内容输出到设备2 JUMP 内存地址n ;转去执行地址为 n 的指令 从前面的小程序可看到,每一条指令必须指出它需要完成的功能,通常用几位指令操作码表示; 可能还需要给出用到的累加器,通常用几位寄存器编码表示,或者某一台输入、输出设备,通常选用几位设备端口地址表示,或者存储器某一个单元地址,表示起来略显复杂,与给出地址的方式有关,通常称为寻址方式,放到后面章节进一步说明。,16,。

12、3、指令表示(应提供的信息),指令中的内容,包括指令操作码(指出指令完成的运算处理功能和数据类型)和 操作数或指令的地址(指明用到的数据或地址)两部分。例如: 算逻辑运算中的运算功能,数据来源或结果去向 数据传送指令中的数据原来位置和新的存储位置 输入输出指令中用到的设备和数据来、去的位置 转移指令的转移类别、转移条件和转移地址 等 每一条指令必须指明它需要完成的功能,通常用几位指令操作码表示;还需要指明用到的数据、地址或设备,通常在地址字段给出,可能是: (1) 寄存器编号, (2) 设备端口地址, (3) 存储器的单元地址 (4) 数值 等几种信息。,17,指令格式与指令字长,指令字长是指。

13、组成一条指令的二进制数的位数,例如 8 bits、16 bits、32 bits、64 bits等,指令格式与指令字长密切相关,指令字越长可以给出的信息越多 。一个指令字通常由指令操作码和操作数地址两部分组成,如何把一个指令字划分成多个字段并分配各字段所表示的内容大有学问。首先简单地看如下两个计算机系统的指令格式,以后还会更仔细进行讲解。,18,指令格式,指令字:完整的一条指令的二进制表示 指令字长:指令字中二进制代码的位数 机器字长:计算机能直接处理的二进制数据的位数 指令字长(字节倍数)0.5、1、2个机器字长 定长指令字结构 vs. 变长指令字结构 指令格式:指令字中操作码和操作数地址的。

14、二进制位的分配方案 操作码:指明本条指令的操作功能, 每条指令有一个确定的操作码 操作数地址:说明操作数存放的地址,有时是操作数本身,19,操作码组织与编码,定长的操作码的组织方案 在指令字最高位部分分配固定若干位用于表示操作码, 有利于简化计算机硬件设计,提高指令译码和识别速度 例如:IBM360机、 TEC-2008的16位机 变长的操作码的组织方案 在指令字最高位部分用一固定长度的字段来表示基本操作码,而对于部分操作数地址位数可以少的指令,则把另外多位辅助操作码扩充到该操作数地址字段,即操作码位数可变。 这种方法在不增加指令字长的情况下,可表示更多的指令,但增加了译码和分析难度,要求更多。

15、的硬件支持 例如:PDP-11计算机、TEC-2000的 8位机,20,假设某机器的指令长度为16位,包括 4位基本操作码和三个 4位地址码段。 15 12 118 7 4 30,4 位基本操作码可表示 16个状态, 如用 4 位操作码,则能表示 16 条三地址指令, 若用 8 位操作码,则可表示 256 条二地址指令, 而用12位操作码,则可表示 4096条一地址指令, 若16位全用作操作码,则可表示 65536条零地址指令,指令操作码的扩展技术,21,若需要在16位字长的指令中能够同时支持三地址、二地址、一地址指令各15条,零地址指令16条,则可以选用如下方案的变长操作码实现:,16条零地。

16、址指令的操作码的高 12位每位均用1, 低 4 位随意, 即: 11111111111100001111111111111111,15条三地址指令的操作码为:0000 1110,15条二地址指令的操作码的高 4 位选用 1111, 低 4 位用 0000 1110, 即得到: 11110000 11111110,15条一地址指令的操作码的高 8位选用11111111, 低 4 位用 0000 1110, 即: 111111110000 111111111110,指令操作码的扩展技术,22,前面介绍的操作码扩展方案中,每次扩展4位并仅保留了一个编码用于接下来的扩展过程,当每次扩展的位数和保留的位。

17、数变化时,后面可扩展的指令条数就可以变化。例如在16位字中的指令字中,可以选用如下方案支持三地址指令、二地址指令、一地址指令和零地址指令14、30、31、16条:,16条零地址为:11111111111100001111111111111111,15条三地址为:0000 1101 (保留1110、1111 两个码),30条二地址为:11100000 11111101 (保留 2个码),31条一地址为:111111100000 111111111110 (保留 1个码),指令操作码的扩展技术,23,指令操作数个数 无操作数指令(零地址指令) 单操作数指令(一地址指令) 双操作数指令(二地址指令)。

18、 三操作数指令(二地址指令) 多操作数指令(多地址指令) 指令操作数来源和去向 CPU内部的通用寄存器 输入输出设备(接口)的一个寄存器 主存储器的一个存储单元,操作数个数与来源,24,操作数类型与数据存储方式,(1) 操作数类型,无符号整数,定点数、浮点数、二_十进制数,ASCII,逻辑运算,bit,(2) 数据在存储器中的存放方式,字地址 为 低字节 地址 Intel,字地址 为 高字节 地址 Motorola,25,存储器中的数据存放 (存储字长为 32 位),地址(十进制),0 4 8 12 16 20 24 28 32 36,字节(地址14),字节(地址15),字节(地址13),字节。

19、(地址12),边界对准,26,寻址方式(又称编址方式)指的是确定本条指令的操作数地址及下一条要执行的指令地址的方法。 不同的计算机系统,使用数目和功能不同的寻址方式,其实现的复杂程度和运行性能各不相同。有的计算机寻址方式较少,而有些计算机采用多种寻址方式。 通常需要在指令中为每一个操作数专设一个地址字段,用来表示数据的来源或去向的地址。在指令中给出的操作数(或指令)的地址被称为形式地址,使用形式地址信息并按一定规则计算出来或读操作得到的一个数值才是数据(或指令)的实际地址(有效地址、物理地址)。在指令的操作数地址字段,可能要指出: 运算器中的累加器的编号或专用寄存器名称(编号) 输入/输出指令。

20、中用到的 I/O 设备的入出端口地址 内存储器的一个存储单元(或一 I/O设备 )的地址 有多种 基本寻址方式 和某些 复合寻址方式 ,简介如下。,4、寻址方式,27,(1) 立即数寻址,所需的一个操作数在指令的地址字段部分直接给出。,Num 即为操作数的值,适用于操作数固定的情况,取指同时取得操作数,指令执行阶段不必到存储器中取操作数,提高了指令执行速度; 当该立即数的值较小(占用位数少)时,可在指令字第一个字中直接给出,否则需要用指令的第二个字提供。,例:Num 1234H,指令的一个操作数就是 1234H 这里的 H 表示 1234 是 16 进制的值,指令的第2个字,28,在指令的地址。

21、码字段,直接给出所需的操作数(或指令) 在存储器中的地址。,Addr 为操作数在存储器中的地址, 或转移指令等用到的指令地址。,(2) 直接寻址,例:Addr = 5718H ,可能是下一条指令的地址或一个操作数的地址,若 5718H = 3,则用 5718H 作地址,从内存储器单元中读出的操作数就是 3。,29,计算机的 CPU中设置有一定数量的通用寄存器,用于存放操作数、操作数地址或中间结果。假如指令地址码字段给出某一通用寄存器的编号(地址),且所需的操作数就在这一寄存器中,这就是寄存器寻址方式;若该寄存器中存放的是操作数在内存储器中所在单元的地址,这就是寄存器间接寻址方式。可通过指令的操。

22、作码或另设一个字段,来区分这两种不同的寻址方式。,(3) 寄存器寻址、寄存器间接寻址,例:RegNo.=2,使用 2# 累加器, 此时若 5# 累加器中的内容为 7,可记为 (R2)=7,,对寄存器寻址,操作数就是寄存器中的数值 7,对寄存器间接寻址,从内存 7# 单元读出来的数才是操作数,30,操作数的地址由指定的变址寄存器(由Reg指定)的内容和指令中的变址偏移量(Disp)相加得到。,(4) 变址寻址,例:Disp=18H,Reg=5,(R5)=5700H 则操作数地址 = 5718H,变址寄存器内容变化,变址偏移量不变,便于读写数组中的元素,是计算机中常用的一种寻址方式。,31,指令的。

23、地址由程序计数器 PC 的内容(即当前执行指令的地址)和指令的相对寻址偏移量相加得到。,(5) 相对寻址,例:Disp = 48H(PC) = 5600H 则实际地址 = 5648H,(1)主要用于转移指令,对浮动程序很有用。 (2)偏移量可正可负,通常用补码表示。,PC,32,指令的地址码字段给出的内容既不是操作数,也不是操作数的地址,而是操作数(或指令)地址的地址,这被称为间接寻址方式,多一次读内存储器的操作。,(6) 间接寻址,存储器,操作数,Addr1,指令中的 Addr 可以用其他寻址方式给出,例如变址寻址,这就成为变址寻址与间接寻址的复合寻址方式,33,在计算机中设置一个专用的基址。

24、寄存器,操作数(或指令)的地址通过基址寄存器的内容和指令中的地址码相加得到。,(7) 基址寻址,基址寄存器,加法器,存储器,操作数,例:Disp= 18H,BS= 5700H 则操作数地址=5718H,主要用于为程序或数据分配存储区,对多道程序或浮动程序很有用,解决了程序在存储器中的定位和扩大寻址空间等问题。,34,堆栈是内存储器中一块按 “后进先出” 原则进行读写的存储区,并通过一个专用的寄存器 (称为堆栈指针 SP ) 给出堆栈的栈顶地址,执行读写堆栈操作通常总在栈顶进行,故不必在指令中给出堆栈地址,而且在读写操作的前后伴随有自动修改 SP 内容的动作,确保使 SP 总是指向堆栈的栈顶。例。

25、如,按字寻址时: 入栈操作: SP -1 SP 和 AR,即 SP 的内容减 1 存回 SP,并送入内存地址寄存器,接下来才可以把数据写到堆栈中,这是因为需要把数据写到新开辟出来的栈顶单元中。 出栈操作: SP AR,完成一次读堆栈操作后,还要执行一次 SP +1 SP 的操作,用于修改 SP 内容,这是因为数据读出后原来它的下一个相邻单元变成为栈顶。,(8) 堆栈寻址,35,堆栈寻址举例,PUSH A 前,PUSH A 后,POP A 前,POP A 后,36,5、指令格式举例,(1) IBM 360指令格式,37,(2) MIPS计算机系统,MIPS是上个世纪八十年代中推出的RISC结构的。

26、计算机系统,获得了很大的成功。 MIPS32是32位字长、典型RISC结构的计算机,其指令格式规范,只有种,用到的寻址方式和指令条数少。 第1种指令称为R型指令,完成寄存器之间数据运算功能,例如,rd rs op rt,rd (rs rs 转移到地址 PC+offset*4 ;否则顺序执行。 第3种指令称为J型指令,完成无条件跳转的操作功能。,38,MIPS指令格式,所有的指令都是32位长度。有 3种指令格式,即寄存器型、立即数型和转移型。 操作数寻址方式有寄存器寻址、变址寻址、立即数寻址3 种,指令地址支持相对寻址、伪直接地址 2种方式。,op rs rt rd shamt funct,寄存。

27、器型,立即数型,转移型,op rs rt address / immediate,op target,例如: add $1, $2, $3 R3R1+R2,例如:lw $1, $2, 100 R2MR1+100 addi $1, $2, 100 R2R1+100,例如: j 8000 转移到 PC31.28 80004,39,(3) TEC-2008 教学计算机指令系统,设计目标 满足教学要求,机器字长16位,有单字和双字指令 完备性 支持监控程序和简单汇编语言程序设计 可以设计出 BASIC 的解释程序 支持常见的寻址方式,分为基本指令和扩展指令两类 高效性 小指令集,实现简单、成本低 规整。

28、性 指令长度基本固定,指令格式比较规整,字寻址方式 兼容性 后来的其它型号的教学都沿用了这套指令系统,40,有单字和双字指令 单字指令分为三个主要部分: 最高 8 位是操作码,是固定长度的操作码, 最多支持 256 条指令。 最低 8 位有多种用法:给出 1 或 2 个寄存器的编号, 或 输入/输出的端口地址, 或 相对转移指令的 8 位的偏移量。 双字指令的第二个字的内容可能是:立即数、直接地址、变址偏移量。,操 作 码,目的寄存器,源寄存器,I/O 端 口 地 址,相对转移指令的偏移量,立即数 / 直接地址 / 变址偏移量,8位 4位 4位,TEC-2008 教学机的指令格式,用到的寻址方。

29、式 寄存器寻址 寄存器间接寻址 立即数寻址 直接地址寻址 变址寻址 相对寻址 堆栈寻址 IO端口地址,41,TEC-2008 16位机基本指令系统,42,TEC-2008 16位机基本指令系统,43,教学计算机的实际组成和运行,教学计算机由完整的硬件 (运算器, 控制器, 存储器, 输入 / 输出接口和 PC机仿真终端) 和 软件(监控程序, PC机仿真终端程序, 交叉汇编程序) 两个子系统组成。 教学机与PC机通过各自的串行接口相互连接在一起。教学机是主机, 在本身的监控程序控制下运行自己的机器码程序,PC机以仿真终端方式作为教学机的输入输出设备,是通过运行自己的一个仿真终端软件 PCEC.。

30、com 实现的。 为此,在系统加电之前,首先把连接两台计算机串行接口的通讯线接上,加电后在PC机上运行 PCEC程序,几次回车后就进入仿真终端状态;教学机正确设置功能开关的状态并加电,按 RESET按钮后再按 START 按钮,PC机屏幕上将出现教学机版权信息和监控命令的提示符 ,至此完成了系统启动过程,接下来可以使用监控命令运行教学计算机。,44,教学计算机硬件系统的组成,计算机 终端,PC机,微程序 控制器,运算器 (16 位),主存储器 (16位),按键 开关 指示灯,串行接口,接口实验 中断实验 内存扩展实验,电 源 +5V,硬布线 控制器,45,微程序 控制器,RESET,START。

31、 按键,运行功能选择开关 单步,手拨,组合逻辑,8位,联机 连续,内存, 微程序,16位,脱机,两个12位的 微型开关,16位的 手拨输入开关,串口接线座,5V电源,电源 开关,组合逻辑 控制器,运算器,内存储器,串口电路,I86 I53 I20 SST SCI SSH A口 B口,TEC-2000教学机,46,双CPU的TEC-2008教学计算机系统,双 CPU 教学计算机系统,控制器部件 (2 种类型),运算器部件,串行口电路,存储器部件,用VHDL描述功能, 用 FPGA器件实现的第2 个 CPU 系统,辅助电路,地址,数据,ALU,IR,Flags,节拍,32位控制信号,按键、功能开关。

32、,16位数据开关,36位控制信号开关,5V 直流电源,微指令下地址,这个系统的优点在于修改已有设计或增加新的指令等,主要表现为修改 ABEL或VHDL 语言的程序源码,编译后重新下载即可,受布线影响小,教学实验效率高,47,教学计算机的监控命令,教学计算机提供 8 个监控命令( 表示回车) A 内存地址 用于输入汇编语句并直接汇编、保存 U 内存地址 用于从指定地址反汇编机器码程序并显示 D 内存地址 用于从指定地址卸出并显示存储器中的内容 E 内存地址 用于从指定地址开始用键盘向内存输入数据 R Reg 用于查看或修改寄存器的内容 G 内存地址 用于运行从指定地址开始的程序(连续) T 内存。

33、地址 用于以单条指令的方式运行程序 P 内存地址 用于以单条指令的方式运行程序, 把 CALL 连同被调用的子程序当作一条指令执行,48,6、教学计算机的汇编语言程序设计,教学计算机可以在监控程序控制下,以单语句方式输入汇编源程序并自动完成汇编操作,之后就能运行这个程序。也可以在作为仿真终端的PC机系统中先建立一个汇编源程序,再用运行在PC机上的交叉汇编程序对源程序完成汇编,当把得到的教学机的执行带码传入教学机内存后即可启动运行。前一种操作更简便,但程序中只能使用直接内存地址,后者提供一些简单伪指令,在设计较长的汇编程序时更常用一些。 经过多年的使用与改进,教学计算机有了多个型号,但所有16位。

34、字长的系统都保持了很好的软件兼容性,即使用相同的基本指令系统、监控程序和对汇编程序设计的支持。,49,用基本的汇编语句写出实现很简单的数据运算功能的小程序,有4个目的: 熟悉计算机各条指令的功能; 进一步体验汇编语句的格式和使用方法; 学习组织一些基本汇编语句实现用户所期望的运算处理功 能的过程和需要解决的一些问题; 了解教学计算机能提供的功能以及使用和操作的方式。 要设计汇编程序必须首先知道有哪些汇编语句可用,每个语句实现的功能和具体使用方法,可能用到的数据或主存地址的书写方式;这涉及到最常用的程序流程控制,包括顺序执行,必转或者条件转移执行,循环执行,子程序调用与返回执行等,这些程序的流程。

35、结构对任何程序设计语言都是类似的。 程序设计的主导思想是如何用一种语言写出解决问题的过程和具体算法,切不可变成试用各种语句的一个操作过程。,31,50,典型的汇编程序执行流程,(C=1),(Z=1),51,典型的汇编程序执行流程,(i+1),52,TEC-2008 机的基本指令和汇编语句规则,数据移动指令 MVRR、MVRD、LDRR、STRR 堆栈操作指令 PUSH、POP、PSHF、POPF 输入输出指令 IN、OUT 算术逻辑运算指令 ADD、SUB、AND、XOR、TEST、 CMP、 OR、DEC、 INC、SHL、SHR 转移指令 JMPA、JR、JRC、JRNC、JRZ、JRNZ。

36、 子程序调用与返回指令 CALA、RET,MV: MOVE LD: LOAD ST: STORE SH: SHIFT JMP: JUMP CAL: CALL RET: RETURN JR: JUMP RELATIVE,R: REGISTER D: DATA A: ADDRESS F: FLAG,指令命名规则,53,教学机的汇编程序的例子,例1:在屏幕上输出显示一个字符6。 A 2000 ;地址从16进制的2000开始 (内存RAM区的起始地址) 2000: MVRD R0, 36 ;把字符 6的ASCII码送入R0 2002: OUT 80 ;输出显示字符6, 80为串口地址 2003: RE。

37、T ;每个用户程序都必须用RET指令结束 2004: (按回车键即结束源程序的输入过程) 提示: 在本计算机中,IN、OUT指令处理的只能是字符型数 据,用到的通用寄存器默认使用R0;,54,教学计算机中的汇编程序的例子,例2:设计一个程序,完成 16进制的 22+120 的计算。 A 2000 ; 从内存RAM区的起始地址 16进制的2000 开始 2000: MVRD R0, 0022 ;把被加数送入R0 2002: MVRD R1, 0120 ;把加数送入R1 2004: ADD R0, R1 ;执行加法运算并保存运算结果 2005: RET ;每个用户程序都必须用RET指令结束 200。

38、6:(按回车键即结束源程序的输入过程) 说明:1、程序中给出的数是16进制的,使得实现汇编器程序可以更简单; 2、要完成数据运算,被运算数据要送到寄存器中之后才能进行计算; 3、用户程序选用 RET 语句结束,与监控程序处理用户程序方法有关。,33,55,教学机汇编程序的例子,例3:计算1到10的累加和。 A 2060 MVRD R1,0000 ;置累加和的初值为0 MVRD R2,000A ;最大的加数 SUB R3,R3 ;预置参加累加的数为0 (2065) INC R3 ;得到下一个参加累加的数 ADD R1, R3 ;累加计算 CMP R3, R2 ;判断是否累加完 JRNZ 2065。

39、 ;未完,开始下一轮累加 RET 运行过后,可以用R命令看R1中的累加结果。,56,教学机汇编程序的例子,例4:用次数控制在屏幕上输出0到9十个数字符。 A 2020 MVRD R2,000A ;送入输出字符的个数 MVRD R0,0030 ;0字符的ASCII码 (2024) OUT 80 ;输出保存在R0低位字节的字符 DEC R2 ;输出字符个数减 1 JRZ 202E ;判全部字符输出完否,已完则转到程序结束处 PUSH R0 ;未完,保存R0的值到堆栈中 (2028) IN 81 ;查询接口状态,判字符的串行输出过程结束否 SHR R0 ; JRNC 2028 ;未完成,则循环等待 。

40、POP R0 ;已完成,准备继续输出下一字符,从堆栈恢复 ; R0 的值 INC R0 ;得到下一个要输出的字符 JR 2024 ;转去输出字符 (202E) RET,57,教学机汇编程序的例子,例5:从键盘上键入多个属于0到9的数字符并在屏幕上显示,遇非数字符结束程序。 A 2040 MVRD R2,0030 ;用于判数字符的下界值 MVRD R3,0039 ;用于判数字符的上界值 (2044) IN 81 ;判键盘上是否按了一个键 SHR R0 ;即串行口是否有了输入的字符 SHR R0 JRNC 2044 ;尚没有输入则循环测试 IN 80 ;把输入字符读到R0低位字节 MVRD R1,。

41、 00FF AND R0, R1 ;将 R0的高位字节清 0 CMP R0, R2 ;判输入的字符 字符0否 JRNC 2053 ;是,则转到程序结束处 CMP R3, R0 ;判输入的字符 字符9否 JRNC 2053 ;是,则转到程序结束处 OUT 80 ;输出刚输入的数字符 JMPA 2044 ;转去程序前边 2044 处等待输入下一个字符 (2053) RET,58,教学机汇编程序的例子,例6:设计一个有读写内存和子程序调用指令的程序,功能是读出指定内存中的大写字母字符,将其显示到屏幕上,转换为小写字母后再写回存储器的原存储单元。 用 E 命令送入 6个字符AF到内存 20F0 开始的。

42、存储区域中,运行后用 D 命令查看 A 2080 MVRD R3, 0006 ;指定被读数据的个数 MVRD R2, 20F0 ;指定被读、写数据内存区首地址 (2084) LDRR R0, R2 ;读内存中的一个字符到R0寄存器 CALA 2100 ;调用子程序,入口地址为2100, DEC R3 ;检查输出的字符个数 JRZ 208B ;完成输出则结束程序的执行过程 INC R2 ;未完成,修改内存地址 JR 2084 ;转移到程序的2084处,循环执行规定的处理 (208B) RET A 2100 ;输入用到的子程序到内存2100开始的存储区 OUT 80 ;输出保存在R0寄存器中的字符。

43、 MVRD R1, 0020 ;转换保存在R0中的大写字母为小写字母 ADD R0, R1 STRR R2, R0 ;写R0中的字符到内存,地址同 LDRR 所用的地址 (2105) IN 81 ;测试串行接口是否完成输出过程 SHR R0 JRNC 2105 ;未完成输出过程则循环测试 RET ;结束子程序执行过程,返回主程序,59,汇编程序中可以调用监控程序中的子程序,用户可以在自己的程序中巧妙地调用监控程序中的大部分的子程序,类似于同学习 PC 机汇编程序中用到的系统调用功能(INT n),完成诸如: 输入一个字符,输入一个 16 进制的整数,输入以回车结束的一行字符; 输出一个字符,输。

44、出 2 个字符,输出一个 16 进制的整数,输出一个以数值 0 字结束的字符串; 寄存器的内容左移、右移 4 位或者 8 位; 大、小写英文字母转换,ASCII 码转成 2 进制码; 也包括调用例如 D、U 等更强大功能的子程序。,39,60,监控程序中可用的子程序举例,INCH 0524 ; 从键盘读入一个字符到 R0 低位字节并清 0 高位字节 OUT1CH 056B ; 把 R0 低位字节中的字符输出到显示器屏幕 WSTR1CH 057F ; 把 R2 中内容为首地址、以内容为 0 值的字结束的字符串输出到屏幕上 ; 在教学计算机中,不特殊处理时,每个字符占用一个内存字(2个字节) LN。

45、LNE 0589 ; 从键盘读入一个以回车键结束的字符串到 R2 内容为首地址的内存区 SHDW 0654 ; R0 的内容右移 8 位 SHD4 0656 ; R0 的内容右移 4 位 SHUP 065B ; R0 的内容左移 8 位 SHU4 065D ; R0 的内容左移 4 位 NUMASC 0664 ; 把 R15 中的一个整数值以 4 位十六 进制形式显示到屏幕上 UPCASE 05E9 ; 把 R0 低位字节中的小写英文字母转换成大写字母 INDAT 05F7 ; 从键盘输入 4 个十六进制的数字符,存到首地址为 2620 的 4 个 ;字的内存区 ,并转换成一个整数值存入 由 。

46、R15 指向的内存单元,61,A 2000 A2020 2000:MVRD R1,7E 2020:MVRD R2,2100 MVRD R0,20 PUSH R2 CALA 056B ;输出一字符 CALA 0589 ;读入字符串 CMP R0,R1 POP R2 JRZ 200A CALA 057F ;输出字符串 INC R0 RET JR 2004 (200A) RET,例8、从键盘输入一个以回车符结束的字符串,并将其显示到屏幕上。,例7,在屏幕上显示 95 个字符,调用监控程序中的子程序设计程序,62,A2040 2040:MVRD R15,2100 CALA 057F ; 例9、输入4 。

47、位十六进制数字符到内存 RET ; 首地址为 2620 的 4 个单元中,并转 ; 成整数值存到 R15 指向的内存单元 A 2060 (例10、连续输入 09 十的数字符,遇非数字符结束) 2060: MVRD R2,0030 ; 用于判数字符的下界值 MVRD R3,0039 ; 用于判数字符的上界值 CALA 0524 ; 输入一个字符并清高位字节 CMP R0, R2 ; 判输入的字符字符 0否 JRNC 206E ; 是,则转到程序结束处 CMP R3, R0 ; 判输入的字符字符9否 JRNC 206E ; 是,则转到程序结束处 CALA 056B ; 输出刚输入的数字符 JMPA。

48、 2064 ; 转去 2064 处输入下个字符 (206E) RET,63,A2020 MVRD R1, 2606 SUB R15, R15 PUSH R1 CALA 0079 POP R1 LDRR R15, R1 MVRD R2, 087D CMP R2, R15 JRC 2023 RET 调用U命令反汇编监控程序,例11、用实现D、U命令的子程序,A2000 MRRD R1, 2603 MVRD R2, 087D SUB R0, R0 STRR R1, R0 PUSH R2 PUSH R1 CALA 01CB POP R1 POP R2 LDRR R3, R1 CMP R2, R3 JR。

49、C 2006 RET 调用D命令卸出完整监控程序,存放被卸出程序起始地址的内存单元,存放被反汇编程序起始地址的内存单元,卸出 120 个内存字,结束后把下个要卸出字的地址存到2603 单元,Z=1时到此单元找地址, 否则到 R15 找,程序运行过程中,按任何键会停下,再按一个键会继续,从此单元找地址,反汇编 15 条指令, 结束后把下次要反汇编语句的地址存到2606单元,64,教学机的交叉汇编程序,实现与运行:采用高级语言编写,PC机上运行 功能:翻译教学机的汇编程序为教学机的机器码 支持汇编语句标号 支持伪指令 支持表达式 支持扩展指令 支持不同机型 后续操作:通过仿真终端程序传送机器码到教学机的内存中,有兴趣的同学可以阅读参考资料,不作为课程要求,65,交叉汇编程序支持的伪指令,写在程序中的、指示汇编程序如何对该程序执行汇编操作的命令叫做伪指令。例如: ORG : ORG exp 指定程序执行的开始地址 END : 指定程序执行的结束地址 EQU : var EQU exp 定义变量的值 var = exp DW : adr DW exp 以 adr 为首地址, 在存储器中写入指定的值 BLK : BLK n 保留 n 个存储单元。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值