计算机系统概论第七章
计算机组成原理第七章课件(白中英版)

刷新和扫描
刷新:使电子束不断地重复扫描整个屏幕的过程 不感到闪烁的刷新频率:>30次/秒 模拟电视标准:每秒刷新50帧图像 光栅扫描:光栅扫描是从上至下顺序 扫描整个屏幕
逐行扫描 隔行扫描
扫描频率:完成一帧所花时 间的倒数,也叫刷新频率 ( 每 个像素在一秒内被刷新次数) 刷新频率越高、图像越稳定,感觉越舒服
A3 B3 C3 D3
A校验码 B校验码 C校验码 D校验码
RAID5
I/O系统
块交叉分布式奇偶校验盘阵列 数据以块交叉的方式存于各盘,无专用冗余盘, 奇偶校验信息均匀分布在所有磁盘上
校验码 产生器
A0 A1 A2 A3
4校验码
B0 B1 B2
3校验码
C0 C1
2校验码
D0
1校验码
0校验码
E1 E2 E3 E4
磁盘存储器的主要技术指标 (4/4)
• 误码率:是衡量出错概率的参数,等于出错位数与读写总 信息位数之比。 • 价格:通常用位价格来比较各种外存储器。位价格是用设 备价格除以存储器二进制位总容量。 • 一个常识: 每面信息量=每道信息量柱面数 =每道信息量道密度(外半径-内半径) 总容量=每面信息量面数
系统结构
RAID0
I/O系统
数据分块,即把数据分布在多个盘上 非冗余阵列、无冗余信息 严格地说,它不属于RAID系列
A E I
B F J
C G K
D H L
M
系统结构
N
O
etc...
RAID1
I/O系统
亦称镜像盘,使用双备份磁盘 每当数据写入一个磁盘时,将该数据也写到另 一个冗余盘,形成信息的两份复制品
计算机组成原理(简答题)

计算机组成原理(简单题)第一章概论1、计算机的应用领域:科学计算、数据处理、实时控制、辅助设计、通信和娱乐。
2、计算机的基本功能:存储和处理外部信息,并将处理结果向外界输出。
3、数字计算机的硬件由:运算器、控制器、存储器、输入单元和输出单元。
4、软件可以分成系统软件和应用软件。
其中系统软件包括:操作系统、诊断程序、编译程序、解释程序、汇编程序和网络通信程序。
5、计算机系统按层次进行划分,可以分成,硬件系统、系统软件和应用软件三部分。
6、计算机程序设计语言可以分成:高级语言、汇编语言和机器语言。
第二章数据编码和数据运算1、什么是定点数?它有哪些类型?答:定点数是指小数点位置固定的数据。
定点数的类型有定点整数和定点小数。
2、什么是规格化的浮点数?为什么要对浮点数进行规格化?答:规格化的浮点数是指规定尾数部分用纯小数来表示,而且尾数的绝对值应大于或等于1/R并小于等于1。
在科学计数法中,一个浮点数在计算机中的编码不唯一,这样就给编码带来了很大的麻烦,所有在计算机中要对浮点数进行规格化。
3、什么是逻辑运算?它有哪些类型?答:逻辑运算时指把数据作为一组位串进行按位的运算方式。
基本的逻辑运算有逻辑或运算、逻辑与运算和逻辑非运算。
4、计算机中是如何利用加法器电路进行减法运算的?答:在计算机中可以通过将控制信号M设置为1,利用加法器电路来进行减法运算。
第三章存储系统1、计算机的存储器可以分为哪些类型?答:计算机的存储器分成随机存储器和只读存储器。
2、宽字存储器有什么特点?答:宽字存储器是将存储器的位数扩展到多个字的宽度,访问存储器时可以同时对对个字进行访问,从而提高数据访问的吞吐量。
3、多体交叉存储器有什么特点?答:多体交叉存储器是由对个相互独立的存储体构成。
每个存储器是一个独立操作的单位,有自己的操作控制电路和存放地址的寄存器,可以分别进行数据读写操作,各个存储体的读写过程重叠进行。
4、什么是相联存储器?它有什么特点?答:相联存储器是一种按内容访问的存储器。
教案-计算机组成原理(DOC)

计算机组成原理教案(数字媒体专业)第一章计算机系统概论内容简介:计算机系统的层次结构,冯·诺伊曼计算机的硬件结构和主要功能,计算机的工作步骤以及计算机的主要技术指标。
教学目标:了解计算机系统的层次结构;了解冯·诺伊曼计算机的特点及硬件构成;理解计算机的工作步骤,了解计算机的主要技术指标的含义及其对计算机的影响。
教学重点和难点:虚拟机的概念;计算机的硬件构成;计算机的工作步骤。
教学媒体和教学方法:使用幻灯片在多媒体教室进行教学;教学中采用讲授与讨论相结合的方法。
教学过程:一、计算机系统简介1.计算机的软硬件概念(1)硬件(2)软件(3)软硬件的关系2.计算机系统的层次结构(1)虚拟机的概念(2)各层虚拟机及与真实机器的层次关系3.计算机的基本组成(1)冯·诺伊曼计算机的特点(2)计算机硬件结构,总线的构成。
讨论、分析直连结构的问题,提出总线思想,并简单介绍总线结构。
(3)计算机的工作步骤提出计算机解决问题的基本步骤计算机基本构成部件的介绍(运算器、存储器、控制器)以计算ax2+bx+c为例分析计算机工作的过程4.计算机的主要技术指标(1)机器字长计算机同时处理的二进制位机器字长与数据总线宽度、存储字长的关系(2)存储容量存储容量的单位主存容量辅存容量(3)运算速度几种计算运算速度的方法并对它们进行比较运算速度的表示单位第二章计算机的发展及应用内容简介:计算机的发展史;计算机的应用领域;计算机的发展展望。
教学目标:了解计算机的产生和发展以及发展思路;了解计算机的应用领域;了解计算机的发展趋势。
教学重点和难点:计算机的应用领域。
教学媒体和教学方法:使用幻灯片在多媒体教室进行教学;教学中采用讲授与讨论相结合的方法。
教学过程:一、计算机的发展史1.计算机的产生和发展现代计算机的研究工作第一台电子计算机的产生计算机的发展阶段计算机的发展规律计算机的发展趋势2.微型计算机的出现和发展微型计算机的发展阶段微型计算机的发展带来的工作、学习、生活方式的变化3.软件技术的兴起和发展软硬件的融合,简介嵌入式发展方向二、计算机的应用1.科学计算和数据处理通过ENIAC进行计算的一个案例,直观体会计算机的计算能力2.工业控制和实时控制3.网络技术应用4.虚拟现实介绍虚拟现实技术的一些应用5.办公自动化和管理信息系统6.多媒体技术7.人工智能三、计算机发展的展望第三章系统总线内容简介:总线的概念;总线的分类;总线的特性和性能指标;总线结构;总线控制。
数据库系统概论第五版第七章习题解答及解析

数据库系统概论第五版第七章习题解答及解析(总14页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--第七章习题解答和解析1. 试述数据库设计过程。
答:这里只概要列出数据库设计过程的六个阶段:(1) 需求分析;(2) 概念结构设计;(3) 逻辑结构设计;(4) 数据库物理设计;(5) 数据库实施;(6) 数据库运行和维护。
这是一个完整的实际数据库及其应用系统的设计过程。
不仅包括设计数据库本身,还包括数据库的实施、运行和维护。
设计一个完善的数据库应用系统往往是上述六个阶段的不断反复。
解析:希望读者能够认真阅读《概论》的内容,了解并掌握数据库设计过程。
2.试述数据库设计过程中结构设计部分形成的数据库模式。
答:数据库结构设计的不同阶段形成数据库的各级模式,即:(1) 在概念设计阶段形成独立于机器特点,独立于各个 DB MS 产品的概念模式,在本篇中就是 E-R 图;(2) 在逻辑设计阶段将 E-R 图转换成具体的数据库产品支持的数据模型,如关系模型,形成数据库逻辑模式,然后在基本表的基础上再建立必要的视图(View),形成数据的外模式;(3) 在物理设计阶段,根据 DB MS 特点和处理的需要,进行物理存储安排,建立索引,形成数据库内模式。
读者可以参考《概论》上图。
图中概念模式是面向用户和设计人员的,属于概念模型的层次;逻辑模式、外模式、内模式是 DBMS 支持的模式,属于数据模型的层次,可以在DBMS 中加以描述和存储。
3.需求分析阶段的设计目标是什么调查的内容是什么答需求分析阶段的设计目标是通过详细调查现实世界要处理的对象(组织、部门、企业等),充分了解原系统(手工系统或计算机系统)工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。
调查的内容是“数据”和“处理”,即获得用户对数据库的如下要求:(1) 信息要求,指用户需要从数据库中获得信息的内容与性质,由信息要求可以导出数据要求,即在数据库中需要存储哪些数据;(2) 处理要求,指用户要完成什么处理功能,对处理的响应时间有什么要求,处理方式是批处理还是联机处理;(3) 安全性与完整性要求。
计算机组成原理总复习

当真值为负时,原码、补码和反码的表示形式不同,但其符号
位都用“1”表示,而数值部分则是:
• 反码是原码的“每位求反” • 补码是原码的“求反加一”
由于“零”在补码中只有一种表示形式,故补码比原码和反码 可以多表示一个负数。
Computer Engineering Dr. Lin
n+1位定点数的数值范围
主存地址(S+w位) 标志Tag 索引(块地址) 块内字地址 Cache地址(r+w位) Cache的 内容 Tag 字0
块地址
选中1行 字1
块内字地址
选中行内1个字
……
字 n-1
Computer Engineering
Dr. Lin
组相联映射
Cache 0组 0块 1块 0块 1块 共分8组 … 0块 1块
若Cache已满,则按照某种替换策略把该行替换进Cache。
• CPU与Cache之间的数据交换以“字”为单位。
•主存与 Cache之间的数据传输以数据“块”为单位。要求 总线和主存支持多字(块)同时传输。一块由若干个字组 成,块是定长的。
Computer Engineering Dr. Lin
三种地址映射方式
非格式化容量是磁记录表面可以利用的磁化单元总数。
磁道的(非格式化)存储容量=最内层的磁道长度×内层位密度 磁道的(格式化)存储容量 = 扇区容量×每磁道扇区数 磁盘组的存储容量 = 每个磁道的存储容量×柱面数×存储面数
Computer Engineering Dr. Lin
磁盘存储器的寻址时间
磁盘存储器属于直接存取存储器 Direct-Access Storage。 寻址时间包括:寻道时间(找道时间),等待时间 不同磁道的找道时间不一样。
上海大学《计算机组成原理》笔记概要总结

计算机组成原理第一章—计算机系统概论1.1计算机系统的简介1. 计算机系统由硬件与软件两大部分组成2. 将高级程序语言翻译成机器语言的程序称为翻译程序,翻译程序有两种,一种是编译程序,一种是解释程序,编译与解释的区别在于,编译程序是将高级语言程序一次性翻译为机器语言程序,而解释程序是翻译一句,执行一句。
3. 高级语言经过编译程序翻译为汇编语言,汇编语言经汇编程序,翻译为机器语言程序1.2计算机的基本组成1.1945年冯诺依曼提出了"存储程序"的概念,冯诺依曼机特点:1. 计算机由存储器,运算器,控制器,输入设备与输出设备组成2. 指令与数据以同等地位存放在存储器内,按地址寻访3. 指令与数据均按二进制数表示4. 指令由操作码与地址码组成,操作码用来表示操作的性质,地址码用来表示操作数在存储器中的位置5. 指令在存储器内按顺序存放6. 计算机以运算器为中心,输入设备与输出设备的数据传送通过运算器来完成2.冯诺依曼机是由运算器为中心的,现代计算机是以存储器为中心的3.计算机的工作过程(必考)涉及的元器件:MAR(地址寄存器),MDR(指令寄存器),ALU(算数逻辑单元),ACC(累加器),MQ(乘商寄存器),PC(程序计数器),IR(指令寄存器)(掌握执行指令的全过程)4.机器字长:机器字长是指CPU一次能处理数据的位数,通常与CPU的寄存器位数有关5.存储容量:存储容量存储单元个数存储字长6.运算速度(可能出计算):Vm = 1 / Tm 单位MIPS(百万指令每秒)CPI (执行每条指令所需要的时钟周期)= 1 / IPC(CPU每一周期执行指令的条数,一旦CPU设计完成,IPC的值不会变)第三章—系统总线3.1总线的基本概念总线是连接多个部件的信息传输线,是各部件共享的介质(总线的每条传输线可以传输1位二进制代码)3.2总线的分类总线按照数据传送方式可分为两类:1. 并行传输总线2. 串行传输总线按连接部件的不同可以分为三类(掌握加粗部分):1. 片内总线(指芯片内部的总线)2. 系统总线3. 通信总线3.2.1片内总线概念:片内总线是指芯片内部的总线3.2.2系统总线系统总线是指CPU,I/O设备,主存各大部件的信息传输线按照系统总线的传输信息不同,可分为三类:1. 数据总线2. 地址总线3. 控制总线1.数据总线:双向传输总线,与机器字长与存储字长有关2.地址总线:单向传输总线,由CPU发出,主存的地址线位数与存储单元的个数有关3.控制总线:从单个来说传输是单向的,从总体来说传输的双向的3.2.3通信总线(了解即可)这类总线用于计算机系统之间或计算机系统与其他操作系统之间的通信3.3总线特征与性能指标3.3.2总线性能指标1.总线宽度:总线宽度可以数据总线的宽度,用位来表示,例如8位,16位,32位2.总线带宽(要求会计算,且掌握提高总线速率的方式):总线带宽可以理解为总线的传输速率,即单位时间上的传输数据的位数,通常用每秒传输的字节数来衡量,单位Mbps(兆字节每秒)例子:总线的频率为33Hz,总线宽度为32位,求总线带宽?33*(32/8)=132MBps3.总线复用:一条信号线上传输两种线号,例如,一条总线上即可传输地址信号,又可传输数据信号,此称之为总线复用3.3.3总线标准(掌握PCI,USB)1.PCI总线:为了提升总线性能,由Intel首先提出,PCI中文名称为外围部件互连,其最出名的特性为即插即用,即任何扩展卡插入系统便可直接工作,现在已推出了PCI-ExpressB总线:通用串行总线,真正的即插即用,这里的串行指的是串行通信,即使用一条数据线,将数据1位1位的进行传输,不可同时传输2位数据3.5总线控制1.为何使用总线控制?由于总线上连接着多个部件,什么时候由哪个部件发送信息,如何给信息传送定时,如何防止信息丢失,如何避免多个部件同时发送,如何规定接受信息的部件等一系列问题,都需要由总线控制器统一管理。
操作系统 题库 判断题

第一章计算机系统概论1.操作系统类似于计算机硬件和人类用户之间的接口。
答案:T。
2.处理器的一个主要功能是与内存交换数据。
答案:T。
3.一般用户对系统程序无障碍,对应用程序有障碍。
答案:F4.数据寄存器一般是通用的,但可能局限于像浮点数运算这样的特定任务。
T5.程序状态字(PSW)通常包含条件码等状态信息。
条件码是由程序员为操作结果设置的位。
答案:F6.一个单一的指令需要的处理称为执行周期。
答案:F(称为指令周期)7.取到的指令通常被存放在指令寄存器中(IR)。
答案:T8.中断是系统模块暂停处理器正常处理过程所采用的一种机制。
答案:T9.为适应中断产生的情况,必须在指令周期中增加一个额外的读取阶段。
F10.在处理器控制控制例行的中断处理器之前,需要储存的最少信息有程序状态字和当前指令地址。
答案:F11.多中断的一个处理方法是在处理一个中断时禁止再发生中断。
答案:T12.多道程序设计允许处理器使用长时间等待的中断处理的空闲时间。
答案:T13.在两级存取优先级中,命中率定义为对较慢存储器的访问次数与对所有存储器访问次数的比值。
答案:F14.高速缓冲存储器的开发利用了局部性原理,即在处理器与主存储器之间提供一个容量小而快速的存储器。
T15.在高速缓冲存储器的设计中,块大小与高速缓冲存储器和主存储器间的数据交换单位有关。
答案:T16.可编程I/O的一个主要问题是,处理器必须等到I/O模块准备完毕,并且在等待的过程中必须反复不停的检查I/O模块的状态。
答案:T第二章操作系统概述1.操作系统是控制应用程序执行的程序,并充当应用程序和计算机硬件之间的接口。
(对)2.在多用户系统中,操作系统管理那些用作重要目的的资源。
(对)3.操作系统通常在它的专用O/S处理器上并行应用程序。
(错)4.操作系统演化的动力之一就是基本硬件技术的进步。
(对)5. 早期的计算机中没有操作系统,用户直接与硬件打交道。
(对)6 在一个批处理系统,“control is passed to a job”意味着处理器正在取指令和执行用户程序。
计算机组成原理期末试题及答案

第一章电脑系统概论电脑的硬件是由有形的电子器件等构成的,它包括运算器、存储器、控制器、适配器、输入输出设备。
早起将运算器和控制器合在一起称为CPU〔中央处理器〕。
目前的CPU包含了存储器,因此称为中央处理器。
存储程序并按地址顺序执行,这是冯·诺依曼型电脑的工作原理,也是CPU自开工作的关键。
电脑系统是一个有硬件、软件组成的多级层次结构,它通常由微程序级、一般程序级、操作系统级、汇编语言级、高级语言级组成,每一级上都能进行程序设计,且得到下面各级的支持。
习题:4冯·诺依曼型电脑的主要设计思想是什么?它包括那些主要组成部分?主要设计思想是:存储程序通用电子电脑方案,主要组成部分有:运算器、逻辑控制装置、存储器、输入和输出设备5什么是存储容量?什么是单元地址?什么是数据字?什么是指令字?存储器所有存储单元的总数称为存储器的存储容量。
每个存储单元都有编号,称为单元地址。
如果某字代表要处理的数据,称为数据字。
如果某字为一条指令,称为指令字7指令和数据均存放在内存中,电脑如何区分它们是指令还是数据?每一个基本操作称为一条指令,而解算某一问题的一串指令序列,称为程序第二章运算方法和运算器按对阶操作。
直接使用西文标准键盘输入汉字,进行处理,并显示打印汉字,是一项重大成就。
为此要解决汉字的输入编码、汉字内码、子模码等三种不同用途的编码。
1第三章 内部存储器即CPU 能直接访问内存〔cache 、主存〕,双端口存储器和多模块交叉存储器属于并行存储器结构。
cache 是一种高速缓冲存储器,是为了解决CPU 和主存之间速度不匹配而采用的一项重要的硬件技术,并且发展为多级cache 体系,指令cache 与数据cache 分设体系。
要求cache 的命中率接近于1适度地兼顾了二者的优点又尽量防止其缺点,从灵活性、命中率、硬件投资来说较为理想,因而得到了普遍采用。
习题: 1设有一个具有20位地址和32位字长的存储器,问:〔1〕该存储器能存储多少个字节的信息? 〔2〕如果存储器由512K ×8位SRAM 芯片组成,需要多少片;〔3〕需要多少位地址做芯片选择?(1)字节M 4832*220= (2)片84*28*51232*1024==K K (3)1位地址作芯片选择 2 已知某64位机主存采用半导体存储器,其地址码为26位,假设使用4M ×8位DRAM 芯片组成该机所允许的最大主存空间,并选用内存条结构形式,问:〔1〕 假设每个内存条16M ×64位,共需几个内存条?〔2〕每个内存条共有多少DRAM 芯片? 〔3〕主存共需多少DRAM 芯片?CPU 如何选择各内存条?(1). 共需模块板数为m :m=÷2^24=4(块)(2). 每个模块板内有DRAM 芯片数为32 (片)(3) 主存共需DRAM 芯片为:4*32=128 (片)每个模块板有32片DRAM 芯片,容量为16M ×64位,需24根地址线(A23~A0) 完成模块板内存储单元寻址。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第七章汇编语言到目前为止,我们已经有点厌倦了用1和0来编程,我们需要知道0001表示“加”;1001表示“非”。
如果我们采用一些有意义的符号表示“地址”,而不用去记忆它的16位地址,这岂不是更好吗?并且如果我们能够用一些易于理解的方式来代替那些指令,而无需记住各个指令的二进制表示传达了什么信息,这该是多么好的一件事啊!事实上,已经有了这样的机制。
本章里,我们将介绍汇编语言,它不仅实现了上述目标,还扩展了一些功能。
7.1 汇编语言程序设计——向上一个层次回忆一下我们在第一章的1.6节中提到的层次的转换。
我们把算法转化成用机械语言描述的程序。
这些机械语言,可以是像我们在第五章中所学习的特定计算机上的机器语言。
回忆一下,如果一个程序的每个指令都是来源于该计算机的指令集结构(ISA),那么这个程序就是用计算机的机器语言来编写的。
另一方面,机械语言的用户友好程度也可以更高一些。
我们通常把机械语言分成两个级别:高级语言与低级语言。
二者之中,高级语言要比低级语言的用户友好程度更高。
例如C++、C、Fortran、COBOL、Pascal,加起来超过一千种之多。
在高级语言中几乎所有的指令(也不尽然)都类似于自然语言,如英语。
高级语言倾向于独立于指令集结构(ISA)。
这就是说,一旦你学会如何用针对某个ISA 上的C语言(或Fortran或Pascal)编程,对于其他ISA 上的C语言(或Fortran或Pascal)编程来说,你只需要迈出一小步就可以了。
一个用高级语言编写的程序执行之前,它首先必须被翻译成适合于期望执行的那台特定计算机的ISA的程序。
通常,高级语言的一条语句可以表示为ISA上的几条指令。
在第十一章,我们将给大家介绍一种高级语言——C语言,并且在第十二章到第十九章,我们将给大家介绍C语言中各种语句和它们转换成相应的LC-3代码之间的关系。
但是,在本章,我们只从第五章的ISA往上移动一小步。
这一小步是从一个机器的ISA到该ISA的汇编语言,汇编语言是一种低级语言。
请不要混淆英语中低级语言的指令和语句两个单词。
通常每个汇编语言的指令指的是一条ISA的指令。
与高级语言不同的是,高级语言是独立于ISA的,而低级语言是要依赖于ISA的。
事实上,每一个ISA通常只有一套汇编语言。
汇编语言的目的是使程序设计的用户友好性比机器语言(即我们正在涉及的计算机的ISA)更强,但是,它同样能使程序员详细的控制计算机能执行的指令。
也就是说,我们既能控制计算机能执行的详细指令,又不必记住1001表示什么操作码,0001又是代表的什么操作码,或者在地址0011111100001010中存储的是什么,什么内容会被存储到0011111100000101中。
汇编语言让我们可以用一些便于记忆的符号表示操作码,例如ADD 和NOT;用一些有意义的符号表示存储单元,例如用SUM和PRODUCT,而不再是16位地址来表示,这将使我们更容易区别用SUM和用PRODUCT表示的地址。
我们称其为“符号地址”。
我们将会看到,从第十一章开始,当我们向上移动了一大步到一种高级语言(如C语言)时,编写程序对用户来说将会更加的友好,但是使用高级语言会让我们放弃了对准备执行的详细指令的精确的控制。
7.2 一个汇编语言程序我们使用一个例子来学习LC-3汇编语言。
图7.1中的这个程序用自加6次实现把一个整数乘以6。
举个例子,如果这个整数是123,程序将会通过完成123+123+123+123+123+123,计算出结果。
这个程序由21行代码构成。
我们已经给每行代码添加了“行号”来使我们能容易地找到每一行。
这是个普遍的做法。
这些行号不是程序的一部分。
以分号开头的共10行,表明它只是为了让人阅读的目的,稍后再讲。
06,07,08,0C,0D,0E和10这7行是汇编语言指令,将被翻译成LC-3的机器语言指令,是当程序运行时真正被执行的指令。
剩下的4行05,12,13和15包含了伪操作,是程序员为翻译程序给出的有助于翻译过程的消息。
翻译程序被称为汇编器(本书中称为LC-3汇编器),翻译过程被称为汇编。
01 ;02 ;用6乘以一个整数的程序。
03 ;执行之前,该整数存储于NUMBER中。
04 ;05 .ORIG x305006 LD R1, SIX07 LD R2, NUMBER08 AND R3,R3,#0 ;R3清零,它将09 ;包含乘积。
0A ;内部循环0B ;0C AGAIN ADD R3,R3,R20D ADD R1,R1,# -1 ;R1跟踪0E BRp AGAIN ;循环次数0F ;10 HALT11 ;12 NUMBER .BLKW 113 SIX .FILL x000614 ;15 .END图7.1 一个汇编语言程序7.2.1 指令汇编语言的指令不再是LC-3的ISA中的0和1的组合,在汇编语言中,一条指令包括四个部分,如下所示:标记(LABEL)操作码(OPCODE)操作数(OPERANDS);注释(COMMENTS)其中的两个部分(标记和注释)是可选的,稍后会讲。
操作码和操作数这两个部分是必不可少的。
一条指令必须有一个操作码(这条指令是做什么的),还要有适当数目的操作数(对谁进行操作)。
不必感到惊讶,这正是我们在第五章学习LC-3 ISA所遇到的。
对于对应的LC-3指令的操作码来说,OPCODE只是一个符号名。
记住符号名ADD,AND和LDR所表示的操作要比记住4位的0001,0101或0110要容易的多。
图5.3(图A.2同样)列出了15种LC-3指令的OPCODE。
从526页到541页显示了15种指令所对应的汇编语言的表示。
操作数的数目取决于正在执行的操作。
例如,ADD指令(0C行)需要3个操作数(两个获取加数的源操作数,和一个被指定用来存放结果的目标操作数)。
3个操作数必须在该指令中被明确的标识出来。
AGAIN ADD R3, R3, R2从寄存器2和寄存器3获得的操作数被相加,结果被放在寄存器3中。
我们用R0,R1,…,R7来表示寄存器0到7。
LD指令(07行)需要2个操作数(被读取的数值所在的存储单元,和指令执行结束后,包含那个数值的目标寄存器)。
我们看到该存储单元通过称为标记的符号地址给出。
在此,被读取的数值所在的存储单元被标记NUMBER给出。
那个数值的目标是被加载进寄存器2。
LD R2, NUMBER正如我们在5.1.6节中讨论的,操作数可以通过寄存器、存储器或指令中的字面值(即立即数)获得。
在寄存器操作数的情况下,寄存器被明确的表示出来(如0C行中的R2和R3)。
在存储器操作数的情况下,存储器的符号名称被明确的表示出来(如07行中的NUMBER和06行中的SIX)。
在立即数操作数的情况下,实际的值被明确的表示出来(如08行中的数值0)。
AND R3, R3, #0 ; R3清零,它将包含乘积。
一个字面值必须包含一个表明该数的基的符号。
我们用“#”表示十进制,用“x”表示十六进制,用“b”表示二进制。
有时,例如3F0A的值不存在含糊性,它表示十六进制。
虽然如此,我们仍把它写作x3F0A。
有时,例如1000的值存在含糊,x1000表示十进制数4096,b1000表示十进制数8,而#1000表示十进制数1000。
标记标记是程序中用来明确的标识存储单元的符号名。
在LC-3汇编语言中,标记由1到20个字母、数字(即字母表中的大、小写字母,或十进制数位)组成,并且以字母表中的字母开头。
NOW,Under21,R2D2和C3PO都是LC-3汇编语言的标记的例子。
使用标记表示存储单元的原因有两个:1、该单元为某个分支指令的目标(如0C行中的AGAIN);2、该单元包含的是某个被加载或存储的值(如12行中的NUMBER,13行中的SIX)。
单元AGAIN被0E行的分支指令所引用。
BRp AGAIN如果ADD R1,R1,#-1的结果是正数(通过P条件码被设为1而证实),那么程序跳转到被AGAIN明确标识的存储单元,从而执行又一次的循环。
单元NUMBER被07行的加载指令所引用。
存储在NUMBER被明确标识的存储单元中的值,被加载到R2中。
如果某个单元在程序中未被引用,那么就不需要为它设一个标记。
注释注释只是给人看的信息。
对于翻译过程没有影响,事实上,LC-3汇编器对它不起作用。
在程序中,注释通过分号被标识出来。
分号表示该行的分号后面的部分是注释,被汇编器忽略。
如果分号是某行的第一个非空字符,那么整行都被忽略。
如果分号位于一条指令的操作数之后,那么,只有注释被汇编器忽略。
注释的目的是为了让程序更好的被读者理解。
它们帮助解释一条或一组指令的非直观上的表象。
在08行和09行,注释“R3清零,它将包含乘积”,让读者知道08行的指令是在计算两个数的乘积之前先对R3初始化。
08行的目的对于今天的程序员可能是明显的,但是如果两年后,在该程序员又写了3万行代码后,他/她不可能记得为什么写下ADD R3,R3,#0。
另一种可能的情况是,两年后,该程序员不在该公司工作了,而公司为了产品的升级,需要修改程序,如果这个任务被指派给一个以前没看过这段代码的人,注释对于提高理解力大有帮助。
做注释不是重申一个显而易见的表象,重要的是提供补充的理解。
这有2个原因,第一,重申一个显而易见的表象的注释,是浪费人的时间,第二,重申一个显而易见的表象,会给程序增加混乱,而使那些重要的注释不明显了。
例如,0D行,如果注释“R1减1”就是个坏主意。
它不能为指令提供补充的理解,只是增加的页面的混乱。
注释的另一个目的,也就是在一行中明智的使用空格,可以使程序的可视化的表现更易于被理解。
例如,注释可以被用来将程序分割为一个个片断,使程序更具可读性。
也就是说,为了计算出某一个结果而一起工作的代码行被放在连续的行中,而产生不同的结果的程序片断相互分隔开来。
例如,0C到0E行,被0B和0F两行与其他代码分隔开,在0B和0F两行除了分号什么都没有。
被汇编器忽略的空格也为程序对齐提供了机会,从而更易读。
例如,所有操作码都开始于页面中的相同的列。
7.2.2 伪操作(汇编指令)LC-3汇编器把输入的字符串,作为一个使用LC-3汇编语言写的计算机程序,并将其翻译为LC-3的ISA程序。
伪操作有助于汇编器实现其任务。
实际上,对于伪操作的更正式的名字是汇编指令。
之所以被称为伪操作,是因为它们不是在程序执行过程中被执行的操作,相反地,伪操作只是在汇编过程中,为了帮助汇编器而发给汇编器的信息。
一旦汇编器处理了这个信息,伪操作就被抛弃掉。
LC-3汇编器包括5个伪操作:.ORIG, .FILL, .BLKW, .STRINGZ和.END。
所有的都把“点”作为第一个字符,可以容易的被识别出来。