当前位置:文档之家› 指令系统及汇编语言程序设计

指令系统及汇编语言程序设计

指令系统及汇编语言程序设计
指令系统及汇编语言程序设计

指令系统及汇编语言程序设计

2.4 伪指令

伪指令本身不会产生可执行的机器指令代码,它仅仅是告诉汇编程序有关源程序的某些信息,或者用来说明内存单元的用途。伪指令在汇编过程中由汇编程序进行处理。

2.4.1 数据定义伪指令

数据定义伪指令用于定义变量的类型、给存储器赋初值或给变量分配存储单元。常用的数据定义伪指令有DB、DW和DD等。

格式: [变量名] 伪指令助记符数据表项

功能:定义一个数据存储区,其类型由所定义的数据定义指令而指定。

操作说明:方括号中的变量名为任选项,变量名后面不跟冒号“:”。数据表项可以包含多个数据之间用逗号分隔开。数据定义伪指令助记符有以下三种:

(1) DB定义变量类型为字节(BYTE),DB后面的每个数据占一个字节。

(2) DW 定义变量类型为字(WORD),DW后面的每个数据占一个字,即两个字节。在内存中,低字节在前,高字节在后。

(3) DD 定义变量类型为双字(DWORD),后面的每个数据占两个字。在内存中,低位字在前,高位字在后。

例如,有下列数据定义语句

D1 DB 1,-12

D2 DW 1,2010H

D3 DD 1,10203040H

数据表项中除了常数、表达式和字符串外,还可以是问号“?”,它仅给变量保留相应的存储单元,而不给变量赋初值。相同的操作数重复出现时,可用重复符号“DUP”表示。

其格式为:

n DUP(初值[,初值,……]);n表示重复的次数,圆括号中为重复的内容。

下面是用问号或DUP表示操作数的例子:

ARRAY DB 1000 DUP(0)

VAR DW ?,?

2.4.2 符号定义伪指令

1. 赋值伪指令

格式:变量名 EOU 表达式

功能:将右边表达式的值赋给左边的变量。

操作说明:表达式可以是一个常数、符号、数值表达式或地址表达式。

需要注意的是:EQU伪指令不允许对同一符号重复定义。

EQU伪指令具体应用举例如下:

CR EQU ODH ;定义CR为常数(回车的ASCII代码)

TAB EQU TABLE-ASCII ;定义变量

DIS EQU 1024*768 ;定义数值表达式

ADR EQU ES:[DI+3] ;定义地址表达式

M EQU MOV ;定义助记符

2.等号(=)伪指令

格式:变量名=表达式

功能:将右边表达式的值赋给左边的变量。

操作说明:等号(=)伪指令的功能与EQU伪指令相仿,它可以对同一个名字重复定义。

利用等号(=)伪指令可以使程序设计更加灵活。

例如下面的程序段:

TABLE=1

MOV AX,TABLE

RRRR:ADD AX,1

TABLE=TABLE+1

MOV AX,TABLE

CMP AX,100

JNE RRRR

3. 定义符号名伪指令LABEL

格式:符号名 LABEL 类型

功能:定义一个标号或变量名,并指定其类型。

操作说明:其中符号名可以是标号或变量,LABEL伪指令通常要与指令语句或DB、DW、DD伪指令语句连用。与指令连用时,类型属性有NEAR和FAR两种;与DB等伪指令语句连用,可以使同一个数据区既有BYTE属性,又有WORD属性和DWORD属性,这样在以后的程序中根据不同的需要分别以字节或字为单位存取其中的数据。LABEL伪指令具体使用如下:

DATAW LABEL WORD ;变量DATAW类型为WORD

DATAB DB 20 DUP(?) ;变量DATAB类型为BYTE

MOV DATAW,AX ;按字存入

MOV DATAB[2],AL ;按字节存入

LABEL伪指令也可以将属性已经定义为NEAR的标号再定义为FAR属性。例如:

ABCF LABEL FAR ;过程入口(远程调用)

ABC MOV AX,0000H ;过程入口(段内调用)

上面的过程既可用标号ABC在本段调用,也可以用标号ABCF被其他段调用。

2.4.3 段定义伪指令

段定义伪指令在汇编语言源程序中定义逻辑段。常用的段定义伪指令有ASSUME、SEGMENT和ENDS等。

1. 段定义伪指令SEGMENT和ENDS

SEGMENT和ENDS伪指令用于定义一个逻辑段,给逻辑段赋予—个段名,并在后面的任选项中给出这个逻辑段的其他特性,如定位类型、组合类型和类别。

段定义伪指令格式如下:

段名SEGMENT [定位类型][组合类型][‘类别’]

段名 ENDS

说明: SEGMENT伪指令定义一个逻辑段的开始,ENDS伪指令则表示一个逻辑段的结束,这两个伪指令总是成对出现,而且前面的段名必须一致。两个伪指令语句之间的部分是该逻辑段的内容。汇编语言的逻辑段包括代码段、数据段和堆栈段等。代码段主要是程序指令和某些伪指令;数据段用于定义数据和存储单元;堆栈段为堆栈操作预留出存储空间。

SEGMENT伪指令后面可以有三个任选项:

1)定位类型定位类型任选项是告诉汇编程序如何确定逻辑段的边界在存储器中的位置,定位类型有四种:

① BYTE表示逻辑段边界可以从任何一个字节开始。

② WORD 表示逻辑段边界从字地址开始,这样该逻辑段的起始地址必须是偶数。

③ PARA 表示逻辑段边界从节地址开始,16个字节称为一个节。如果省略定位类型任选项,汇编语言程序默认该逻辑段为PARA。

④ PAGE表示逻辑段边界地址从页边界开始,256个字节称为一个页。

2)组合类型 SEGMENT伪指令的第二个任选项是组合类型,它告诉连接程序,装入存储器时各个逻辑段如何进行组合。组合类型有6种。

① NONE 此项为不组合,如果编程时省略SEGMENT伪指令的组合类型。

② PUBLIC 汇编程序连接时,将不同程序模块中具有相同的类别名的逻辑段顺序连接成一个逻辑段装入内存。

③ STACK 组合类型为STACK时,编译程序把所有同名段连接成一个连续的堆栈段。

④ COMMON该组合类型产生一个覆盖段。模块连接时,如果有相同的类别名,则都从同一个地址开始装入,因而连接的逻辑段将发生重叠。连接以后段的长度等于原来最长的逻辑段的长度,重叠部分的内容是最后一个逻辑段的内容。

⑤ MEMORY组合类型为MEMORY时,表示本段在存储器中应定位在所有其他段的最高地址。

⑥ AT AT组合类型表示本段可以定位在表达式所指示的边界上。如:

AT 0830H ;本段的地址从0830H开始。

3)类别名类别名必须用单引号括起来,类别名可由程序设计人员自己选定任何字符串组成,但它不能再作为程序的标号,变量名或其他定义的符号。在连接处理时,LINK程序把类别名相同的所有段存放在连续的存储区内。

下面是一个分段结构的源程序框架:

DATAl SEGMENT

DATAl ENDS

STACK1 SEGMENT PARA STACK

STACK1 ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATAl,SS:STACKl

BEGIN:……

CODE ENDS

END BEGIN

2. 指定段址伪指令ASSUME

格式:ASSUME 段寄存器名:段名[,段寄存器名:段名,……]

功能:指定段寄存器与某个逻辑段建立对应关系。

操作说明:其中段寄存器名是指四个段寄存器CS、SS、DS、ES中的一个,段名是指逻辑段的段名。

需要注意的是:ASSUME伪指令只是告诉汇编程序段寄存器与逻辑段的关系,并没有给段寄存器赋予实际的初值。

若要给段寄存器赋值,可参考下面程序:

CODE SEGMENT

ASSUME CS:CODE,DS:DATA1,SS:STACKl

MOV AX,DATA1

MOV DS,AX

MOV AX,STACKl

MOV SS,AX

CODE ENDS

2.4.4 过程定义伪指令

程序设计中,我们常常把具有一定功能的程序段设计成一个子程序。汇编程序用“过程”来构造子程序。

格式:过程名 PROC [NEAR/FAR] ;NEAR与FAR只选一个,或都不选

RET

过程名 ENDP

功能:定义一个过程(子程序)。

操作说明:其中,过程名不能省略,过程的开始和结束应使用同一个过程名。过程名也就是子程序的程序名,可以通过CALI指令调用,它类同于一个标号的作用,具有三个属性:段、偏移量和类型。类型可以选择NEAR或FAR,如果没有选择距离类型,则默认为NEAR。

2.4.5 定位伪指令ORG和当前位置计数器$

格式:ORG 数值表达式

功能:指定在它之后的程序段或数据块所存放的单元起始地址的偏移量。

当前地址计数器‘$’它表示当前地址,即地址计数器的值。例如:

DATA SEGMENT

ORG 20H

D1 DB 12H,13H

ORG $+01H

D2 DB 61H,62H,63H

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,……

ORG 100H

BEGIN: MOV AX,DATA

CODE ENDS

上面的数据段中,D1的段内偏移量为0020H而不是0000H,D2的段内偏移量是0023H。代码段里,指令代码从偏移量0100H处开始。

2.4.6 结束汇编指令END

格式: END 标号

功能:通知汇编程序结束汇编。

操作说明:标号为主程序执行时的入口标号。注意,该指令并表示执行程序结束,只是汇编程序结束汇编。而要计算机停止执行程序而退回到DOS操作系统,需用DOS调用:

MOV AH,4CH

INT 21H

第2章指令系统及汇编语言程序设计

2.5 汇编语言程序设计

2.5.1 汇编语言程序

1. 汇编语言的基本概念

使用助记符号来表示二进制格式的指令代码和变量地址的指令称为符号指令。汇编语言程序运行之前要将其转换成机器代码,转换的过程是由编译程序完成。

2. 汇编语言源程序的格式

汇编语言源程序采用分段式结构,一个汇编语言源程序由若干个逻辑段组成,每个逻辑段以SEGMENT语句开始,以ENDS语句结束,整个源程序以END语句结束(表示结束汇编)。

下面给出一个简单的汇编语言源程序。

DATA SEGMENT ;定义一个名字为DATA的段

DAT DB 1,2,0 ;在DATA段内定义3字节数据

DATA ENDS ;DATA段结束

;---------------------------------------------------------

STACK SEGMENT PARA STACK ;定义名字为STACK的堆栈段

DW 20 DUP(0) ;堆栈段大小为20个字

STACK ENDS ;堆栈段结束

;---------------------------------------------------------

CODE SEGMENT ;定义一个名为CODE的程序代码段

ASSUME CS:CODE,DS:DATA,SS:STACK

BEGIN: MOV AX,DATA

MOV DS,AX ;给DS赋数据段初值

MOV AL,DAT

ADD AL,DAT+1 ;前两个数据相加

MOV DAT+2,AL ;和存入第三个数据的位置

MOV AH,4CH

INT 21H ;使用系统调用返回操作系统

CODE ENDS ;代码段结束

;----------------------------------------------------------

END BEGIN ;源程序结束,入口地址为BEGIN

从上面的例子可以看出,汇编语言源程序由若干段组成,最上面是数据段,接下来是堆栈段,最后是代码段。

2.5.2 顺序程序设计

顺序结构是解决简单问题的一种程序设计方法, 它按语句书写的先后次序执行一系列操作。程序中没有分支、循环和转移指令。顺序结构程序在设计上比较简单,这种程序也称为直线程序。下面举例对顺序结构程序的设计作具体说明。

【例2.54】对两个4位十进制数进行求和运算,十进制数用BCD码表示(1234+5678)。

解:根据题意,在程序的数据段放置BCD码形式的十进制数。在计算中考虑到多位运算,高位使用带进位加法指令,并注意进行十进制加法调整。

程序如下:

DATA1 SEGMENT

DATl DB 12H,34H

DAT2 DB 56H,78H

SUM DB ?,?

DATA1 ENDS

STACKl SEGMENT PARA STACK

DW 20 DUP(0)

STACKl ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA1,SS:STACK1 BEGIN:MOV AX,DATA1

MOV DS,AX

MOV AL,DAT1+1

ADD AL,DAT2+1

DAA

MOV SUM+1,AL

MOV AL,DAT1

ADC AL,DAT2

DAA

MOV SUM,AL

MOV AH,4CH

INT 21H

CODE ENDS

END BEGIN

【例2.55 】试编制汇编语言程序,并按公式Z=((X+Y)*8-X)/4计算Z值,并将结果保存在RESULT中。

分析:按题意,本题为典型的顺序结构。在已知X、Y的情况下,只需按公式计算Z值即可,故在数据段设定了X、Y的值。

编制程序如下:

DATA1 SEGMENT

X DW 2

Y DW 4

RESULT DW ?

DATA1 ENDS

STACKl SEGMENT PARA STACK

DW 20 DUP(0)

STACKl ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA1,SS:STACK1 BEGIN MOV AX,DATA1

MOV DS,AX

MOV BX,X

ADD BX,Y

MOV CL,3

SAL BX,CL

SUB BX,X

MOV CL,2

SAR BX,CL

MOV RESULT,BX

MOV AH,4CH

INT 21H

CODE ENDS

END BEGIN

2.5.3 分支程序设计

1.分支程序设计的结构形式

分支程序结构形式如图2.16所示。其中(a)、(b)为二分支结构,(c)为多分支结构。

2. 分支程序的设计方法

测试分支程序设计方法:选用影响状态标志的指令和条件转移指令来设计分支程序的方法。

跳转表法分支程序设计方法:选用间接寻址的无条件转移指令来选择转向不同的程序分支。

(1)测试法分支程序设计

【例2.56】设有单字节无符号数X、Y、Z,若X+Y>255,则求X+Z,否则求X-Z,运算结果放在F1中。

分析:因为X,Y均为无符号数,所以当X+Y>255时则会产生进位,即CF=1,所以可以用进位标志来判断。程序流程图如图2.17所示。

程序段如下:

;…………数据段…………

DA TA SEGMENT

X DB 128

Y DB 90

Z DB 50

F1 DB ?

DA TA ENDS

;…………代码段…………

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:MOV AX,DATA

MOV DS,AX

MOV AL,X

ADD AL,Y

JC P1

MOV AL,X

SUB AL,Z

JMP EXIT

P1:MOV AL,X

ADD AL,Z

EXIT:MOV F1,AL

MOV AH,4CH

INT 21H

CODE ENDS

END START

(2)跳转表法分支程序设计

1)分支地址表法

用分支地址表法实现分支程序设计的思想是:将一系列的转移地址(即各分支处理子程序的首地址)存放在一段连续的存储区中,构成跳转表,采用间接转移指令来实现多分支转移。

【例2.57】设计多路分支程序,现有5个程序段,各程序段的首地址分别为P1,P2,P3,P4,P5,要求根据给定的参数转入相应的程序段。

分析:根据题意,本题采用分支地址表法实现的多路分支结构程序设计,也是一种较常见的分支结构设计方法。将5个程序段的入口地址作成表TABLE放入数据段,程序根据给定的参数计算出欲转入的程序段的首地址在TABLE中的位置后,取出该地址,跳转至该程序段。由于表中按“字”存放数据,则每个数据的位移量是:0、2、4、6、8。对于给定参数N,计算位移量的公式是:N=(N-1)* 2。编制程序如下:

例如:

TABLE DW P1,P2,P3,P4,P5 ;转移地址表

DAT DB 3 ;转移地址表

CHARl DB ‘1’;结果显示字符

CHAR2 DB ‘2’

CHAR3 DB ‘3’

CHAR4 DB ‘4’

CHAR5 DB ‘5’

DATA1 ENDS

STACKl SEGMENT PARA STACK

DW 20 DUP(0)

STACKl ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA1,SS:STACKl

BEGIN: MOV AX, DATA1

MOV DS,AX

MOV AL,DAT

MOV AH,00H

DEC AL

SHL AL,1

LEA BX,TABLE

ADD BX,AX

JMP [BX]

P1:MOV DL,CHAR1

JMP P6

P2:MOV DL,CHAR2

JMP P6

P3:MOV DL,CHAR3

JMP P6

P4:MOV DL,CHAR4

JMP P6

P5:MOV DL,CHAR5

JMP P6

P5:MOV DL,CHAR5

JMP P6

P6:MOV AH,02H

INT 21H

MOV AH,4CH

INT 21H

CODE ENDS

END BEGIN

运行后在屏幕上输出3,即运行了P3程序段。该程序利用了分支地址表法设计程序的走向。实际应用时,可以在各程序段中放入实际程序。

2)转移指令表法

转移指令表与上述的分支地址表法相比有两点区别:其一,构成跳转表里不是n个分支程序入口处的偏移地址,而是转向n个分支程序的无条件转移指令:

JMP BRi

(i=0,1,2,3,……,n-1);其二,跳转表不是用DW或DD指令定义,而是作为代码段的一段程序,该跳转表的首址BASE不是变量而是标号。当需要跳转到第i个分支时,只需将标号BASE的偏移地址与2*i之和送BX,然后使用指令:

JMP BX

即使程序转向

JMP BRi

进而转向BRi分支。

【例2.58】根据键盘输入数字0,1,2和3分别显示信息“8086/8088”,“80386”,“80486”,“Pentium”。

分析:将4条无件短转移指令(该指令占2个字节)依次存放在基地址为BASE的跳转表中,这些指令的功能分别是转向显示信息“8086/8088”,“80386”,“80486”及“Pentium”的分支程序。

程序如下:

;…………数据段…………

DSEG SEGMENT

MESS0 DB ‘8086/8088’,’$’

MESS1 DB ‘80386’,’$’

MESS2 DB ‘80486’,’$’

MESS3 DB ‘Pentium’,’$’

DSEG ENDS

;…………堆栈段…………

SSEG SEGMENT

DB 80 DUP(0)

SSEG ENDS

;…………代码段…………

CSEG SEGMENT

ASSUME DS:DSEG,SS:SSEG,CS:CSEG

START: MOV AX, DSEG

MOV DS, AX

MOV AH,01H

INT 21H ;从键盘输入’0’,’1’,’2’,’3’的ASCII码到AL

AND AL, 0FH ;将输入’0’,’1’,’2’,’3’的转换为数字i

SHL AL, 1 ;AX←2*i

CBW

MOV BX, OFFSET BASE

ADD BX,AX

JMP BX

转移指令表

BASE: JMP SHORT M0

JMP SHORT M1

JMP SHORT M2

JMP SHORT M3

M0: MOV DX, OFFSET MESS0

JMP DISP

M1: MOV DX, OFFSET MESS1

JMP DISP

M2: MOV DX, OFFSET MESS2

JMP DISP

M3: MOV DX, OFFSET MESS3

DISP: MOV AH,09H

INT 21H

MOV AH, 4CH

INT 21H

CSEG ENDS

END START

当需要实现超出短转移范围的近转移,或需要实现远转移时,跳转表中的指令就应该相应改为无条件近转移指令或无条件远转移指令,这两种指令分别占用3个字节和5个字节。对于上例来说,应该对BX的内容的设置作相应的修改。具体如何修改,请读者自己思考。

2.5.4 循环结构程序设计

1.循环结构的组成

循环结构主要有三部分组成:

1)1)初始化部分包括设置地址指针、计数器及其它变量的初值等为循环做的准备工作;

2)2)循环体部分这是主要部分,即对问题的处理;

3)3)循环控制部分包括每次执行循环体之后或之前参数的修改,对循环条件的判断等。

循环程序结构如图2.20所示,其中图2.18(a)是“先工作后控制”的结构,这种结构下,循环工作部分至少被执行一次;图2.18(b)是“先控制后工作”的结构,这种结构下允许“0”次循环。

2.循环的分类

按照“先判断”还是“先执行”,可以分成“当型循环”与“直到型循环”;按照循环条件,可以分成“循环次数已知”与“循环次数未知”。汇编语言程序设计中更主要的是按照是否已知循环次数来区分,分别写成不同形式的程序代码。

另外,按照是否有循环嵌套,还可分成单重循环结构与多重循环结构。

3. 单循环程序的设计方法

(1)“循环次数已知型”的程序设计

这种程序设计方法很直观、流程比较清晰,但必须在循环次数已知的的条件下才能采用。

【例2.59】在以NUM为首址的存区中存有n个带符号的字节类型的数据,从中找出最大数并送入MAX 单元。

分析:编程方法是首将先第1单元内容送AL中,然后将AL中内容与后面余下的n-1个数据进行比较,若AL中内容大于内存单元中内容,则保持AL中内容不变,否则将内存单元中内容送AL中。最后AL中就为最大数并送MAX单元,程序流程图如图2.19所示。

程序如下:

;…………数据段…………

DATA SEGMENT

NUM DB 7,9,-10,0,100,-27,99,-23,56,53

COUNT DB 10

MAX DB ?

DATA ENDS

;…………代码段…………

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:MOV AX,DATA

MOV DS,AX

MOV CL,COUNT

DEC CL

MOV BX,OFFSET NUM

MOV AL,[BX]

LP1:INC BX

CMP AL,[BX]

JGE NEXT

MOV AL,[BX]

NEXT:DEC CL

JNZ LP1

MOV MAX,AL

MOV AH, 4CH

INT 21H

CODE ENDS

END START

【例2.60】试编一个程序统计出字单元BUF中所含1的个数存入COUNT单元中。

分析:要测出BUF字单元所含1的个数,首先将BUF中的数送给寄存器AX,然后将AX寄存器逻辑左移一次,最高位移入CF中,如果CF=1,则表明AX中的最高位为1,则计数器BX计数1次,如果CF=0,表明AX最高位为0,这样依次将各位移入CF中去测试,便可统计出1的个数。

程序如下:

;…………数据段…………

DATA SEGMENT

BUF DW 2345H

COUNT DW ?

DATA ENDS

;…………代码段…………

CODE SEGMENT

ASSUME CS:CODE,DS:DA TA

START:MOV AX,DATA

MOV DS,AX

MOV AX,BUF

MOV CX,16

MOV BX,0

LP1:SHL AX,1

JNC NEXT

INC BX

NEXT:LOOP LP1

MOV COUNT,BX

MOV AH, 4CH

INT 21H

CODE ENDS

END START

(2)“循环次数未知型”的程序设计

在循环程序设计中,有时对循环次数无法预知,对此可根据循工作部分的执行所产生的条件来确定是否继续执行循环体。

在例2.62中无论变量BUF中有没有1,均要循环16次,很显然可以进行一些改进。

【例2.61】题目与例2.60一致。

分析:要测出BUF字单元所含1的个数,首先将BUF中的数送给寄存器AX,然后将AX寄存器逻辑左移一次,最高位移入CF中,如果CF=1,则表明AX中的最高位为1,则计数器BX计数1次,如果CF=0,表明AX最高位为0,这样依次将最高位移入CF中去测试。移位之后,判断AX的值是否为0,如果为0则结束循环,不为0,则继续循环。

程序如下:

;…………数据段…………

DATA SEGMENT

BUF DW 2345H

COUNT DW ?

DATA ENDS

;…………代码段…………

CODE SEGMENT

ASSUME CS:CODE,DS:DA TA

START:MOV AX,DATA

MOV DS,AX

MOV AX,BUF

MOV BX,0

LP1:AND AX,AX

JZ EXIT

SHL AX,1

JNC NEXT

INC BX

NEXT:JMP LP1

EXIT:MOV COUNT,BX

MOV AH,4CH

INT 21H

CODE ENDS

END START

4. 多重循环程序设计

在实际工作中,一个循环结构常常难以解决实际应用问题,在一个循环结构的循环体中又包含有循环程序时,就形成了多重循环,这些循环是一层套一层的,因此又称为循环的嵌套。

【例2.62】统计一个班级中每个学生各门课程的总成绩。

分析:对于每个学生而言,需要循环累加各门课程的总成绩;对于班级而言,需要对每个学生进行循环操作。

程序如下:

;…………数据段…………

DA TA SEGMENT

;假设有三个学生,五门功课

X1 DB 70,90,80,76,89

DW ?;存放第1个学生总成绩

X2 DB 89,70,67,90,100

DW ?;存放第2个学生总成绩

X3 DB 90,90,98,100,79

DW ?;存放第3个学生总成绩

DA TA ENDS

;…………代码段…………

CODE SEGMENT

ASSUME CS:CODE,DS:DA TA

START:MOV AX,DATA

MOV DS,AX

MOV BX,OFFSET X1

MOV CX,3

LP2:

PUSH CX

MOV DI,0

MOV CX,5

XOR AX,AX

LP1:

MOV DL,[BX][DI]

MOV DH,0

ADD AX,DX

INC DI

LOOP LP1

MOV [BX][DI],AX

POP CX

ADD BX,7 ;移到下一个学生成绩单元首址

LOOP LP2

MOV AH,4CH

INT 21H

CODE ENDS

END START

在某些时候,多重循环的循环次数是未知的,这个时候一般在数据段中事先设定一些结束标志来控制程序循环。

2.5.5 DOS系统功能调用

DOS操作系统为程序设计人员提供了许DOS多功能调用,即功能子程序,供用户调用。调用时使用中断指令:

INT n

其中,n为中断调用类型号,其范围是10H--0FFH。在使用INT指令前,应将调用的功能号送入AH寄存器,有关入口参数送入指定的寄存器中。若有出口参数,中断返回后,放在指定的寄存器或存储单元中,用户可以

取出使用。

下面对部分常用功能调用举例说明。

1.带显示的键盘输入(AH=01H)

该功能调用是等待键盘输入,按下一个键(字符键)后,将字符的ASCII码送入寄存器AL,并在屏幕上显示输入的字符。按下CTRL+C组合键,将中断程序运行,返回DOS。功能调用没有入口参数,出口参数放在寄存器AL中。

【例2.63】从键盘输入一个字符,并在显示器上输出,按下CTRL+C组合键时结束。程序设计如下:DATAl SEGMENT

PROMPT DB ‘PRESS ANY KEY TO DISPLAY!’,0DH,0AH

DB ‘PRESS CTRL+C TO EXIT!’,0DH,0AH,‘$’

DATA1 ENDS

STACK1 SEGMENT PARA STACK

DW 20 DUP(0)

STACK1 ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA1,SS:STACK1

BEGIN:MOV AX,DATA1

MOV DS,AX

MOV ES,AX

LEA DX,PROMPT

MOV AH,09H

INT 21H

AGAIN:MOV AH,01H

INT 21H

JMP AGAIN

CODE ENDS

END BEGIN

2.不带显示的键盘输入(AH=08H)

该功能调用与01H号功能基本相同,差别是键盘输入的字符不在屏幕上显示,AL寄存器中存放键入字符的ASCⅡ码。功能调用格式如下:

MOV AH,08H

INT 21H

3.字符串输入(AH=0AH)

该功能调用是从键盘上输入一行字符。使用前,应在内存中建立一个输入缓冲区,存放键盘输入的数据。缓冲区的第一个字节存放1-255之间的数,定义该缓冲区的大小;第二个字节存放用户本次调用时实际输入的字符个数,这个数在中断返回时,由操作系统自动填入;输入的字符串从第三个字节开始存放。键盘输入时,由回车键结束字符串,并将回车代码(0DH)放在字符串的末尾。如果输入字符个数超过缓冲区的最大容量,后面的字符将被略去(铃声提示),缓冲区的最后一个单元为回车符。调用前必须缓冲区首地址装说入DX中。

【例2.64 】从键盘上输入字符串,以回车作为结束,字符串存入BUFFER+2开始的单元中。

程序设计如下:

DATAl SEGMENT

PROMPT DB ‘PRESS RETURN KEY TO EXIT’,0DH,0AH,’$’

BUFFER DB 80,0

DB 81 DUP(0)

DB ‘$’

DATA1 ENDS

STACK1 SEGMENT PARA STACK

DW 20 DUP(0)

STACK1 ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA1,SS:STACK1

BEGIN: MOV AX,DATAl

MOV DS,AX

LEA DX,PROMPT

MOV AH,09H

INT 21H

LEA DX,BUFFER

MOV AH,0AH

INT 21H

MOV AH,4CH

INT 21H

CODE ENDS

END BEGIN

上例中最多可输入80个字符,BUPFER中第81个内存单元可存放回车代码。

4.字符显示(AH=02H)

在屏幕上显示单个字符,调用时将需显示字符的ASCⅡ码存入DL中。例如,要在屏幕上显示字符‘Y’,可以进行如下调用:

MOV DL,‘Y’

MOV AH,02H

INT 21H

5.字符打印(AH=05H)

该功能调用是把DL寄存器的内容(ASCII码)送到打印机输出,使用时可以如下调用:

MOV DL,‘N’

MOV AH,05H

INT 2lH

6.字符串显示(AH=09H)

该功能调用是在显示器上显示字符串。调用前要把字符串存入缓冲区,在字符串的结尾存入‘$’符号(显示结束符号),并将缓冲区的首址送DX寄存器,段基址送DS寄存器。

调用的格式如下:

DATAl SEGMENT

STRING DB ‘ABCDEFG’,‘$’

DATAl ENDS

MOV DS, SEG STRING

MOV DX, OFFSET STRING

MOV AH,09H

INT 21H

7. DOS调用应用举例

【例2.65】将16位二进制数转换为十进数的ASCII码形式

解:根据题意,16位二进制数的最大为65536,故程序中设置十进制的位权10000,1000,100,10和1以常数的形式存放在DDEC中,并采用减位权的方法转换成十进制数,对某一权数减法次数的计数值就是十进制数的对应位的值。计数器BL记录减法次数。为了转换成ASCII码,该值还要加上30H。程序运行后,屏幕上显示65535。

程序设计如下:

DATAl SEGMENT

DBIN DW 1111111111111111B

DDEC DW 10000,1000,100,10,1

DSC DB 0,0,0,0,0,0DH,0AH

DATA1 ENDS

STACK1 SEGMENT PARA STACK

DW 20 DUP(0)

STACK1 ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA1,SS:STACK1

BEGIN: MOV AX,DATAl

MOV DS,AX

MOV CX,5

LEA SI,DDEC

LEA DI,DSC

MOV AX,DBIN

CONV:MOV BL,0

RRR:SUB AX,[SI]

JC NEXT

INC BL

JMP RRR

NEXT:ADD AX,[SI]

OR BL,30H

MOV [DI],BL

INC SI

INC SI

INC DI

LOOP CONV

LEA DX,DSC

MOV AH,09H

INT 21H

MOV AH,4CH

INT 21H

CODE ENDS

END BEGIN

第2章指令系统及汇编语言程序设计

2.6 汇编语言程序的上机过程及调试

汇编语言的源程序需要编译和连接后才能在计算机上执行。

汇编语言源程序扩展名规定为.ASM。

用MASM编译源程序后,将产生源程序的目标程序文件,其扩展名为.OBJ。

再经过连接程序(LINK)把目标程序文件与库文件或其他目标文件连接在一起形成可执行文件(扩展名为.EXE)。

这时就可以运行该程序了。DOS下可直接键入可执行程序的文件名从而运行该程序。

2.6.1 编辑汇编语言源程序

编辑一个汇编语言源程序,可以使用各种文本编辑软件,如Windows记事本、MS-DOS自带的EDIT软件等。使用EDIT时可在DOS提示符下键入:

C:\MASM>EDIT 文件名.ASM(回车)

【例2.66】下面给出一个汇编语言源程,它是求1+2+3+……+50的和并存入SUM单元中。其源程序文件为ex66.asm。

程序如下:

DATA SEGMENT

ORG 100H

SUM DW ?

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

MOV CX,32H

MOV BX,1

MOV AX,0

LP:ADD AX,BX

INC BX

LOOP LP

MOV SUM,AX

MOV AH,4CH

INT 21H

CODE ENDS

END START

用户编写好上面程序后,在DOS下键入命令:

C:\MASM> EDIT EX66.ASM

进入编辑程序中输入上述程序并保存于磁盘(编辑与保存的方法请参见DOS操作系统中EDIT的使用)。

2.6.2 汇编源程序

对汇编语言源程序进行汇编时,汇编程序对.ASM文件进行扫描,若源程序中有错,则结束汇编后,指出源程序中的错误。这时,可通过屏幕上提供的信息修改源程序(回到EDIT编辑状态),再经过汇编,直到得到无错误的目标程序。注意,目标程序的扩展名为.OBJ。

汇编命令的格式是:

C:\MASM>MASM 文件名(回车)

或 C:\MASM>MASM 文件名;(回车)

这里,MASM是存放汇编程序MASM.EXE的子目录。编译、连接和调试汇编程序时,要求在计算机上要装有MASM.EXE、LINK.EXE和DEBUG.EXE程序,可以将这些程序放入MASM子目录下。如果子目录不同,可以设置具体路径。下面就以程序EX66.ASM为例,对汇编过程作—个具体介绍。

首先键入:C:\MASM>MASM EX66(回车)

屏幕上将出现如下提示信息:

Microsoft (R) Macro Assembler Version 5.00

Copyright (C) Microsoft Corp 1981—1985,1987. All right sreserved,

Object filename[EX66.OBJ](回车)

Source listing [NUL.LST]:(回车)

Cross-reference[NUL.CRF]:(回车)

51610+437910 Bytes symbol space free

0 Warning Errors

0 Severe Errors

屏幕各行表示的含义如下:

Object filename[EX66.OBJ]:表示要求输入目标程序名,方括号里的内容是程序默认的文件名,如果不改变,可直接输入回车。

SourcelistingINUL.LST]:要求输入列表文件名,列表文件给出源程序和汇编后的机器语言程序清单,并给出符号表,这样便于程序的调试。方括号里缺省的内容是不建立该文件,如果认可,可直接输入回车。如果需要列表文件,可输入列表文件名(扩展名可以省略)。

Cross-reference[NUL.CRF]:要求输入索引文件名,方括号里的内容是不建立该文件,如果认可,可直接输入回车。如果需要索引文件,可输入索引文件名(扩展名可以省略)。:三个提示输入完毕,如果程序无误,则出现:

51610+437910Bytessymbolspacefree

0 Warning Errors

0 Severe Errors

表示汇编成功。在该目录下可以看到EX66.OBJ文件(使用DOS下的DIR命令)。

汇编时,不需要系统提示上述过程,在使用命令的:

C:\MASM>MASM 文件名;(回车)

如果源程序有语法错误,则汇编程序提示源程序有错,必须回到编辑源程序下,根据提示的错误信息重新修改源程错误,然后再进行汇编,直到汇编没有错误为止。

2.6.3 连接程序

经过汇编产生的目标程序并不是可执行的程序,必须经过连接才可以执行。连接程序可以将若干个目标模块连同库子程序连接在一起,连接程序可以使用DOS下的LINK.EXE,具体的命令格式是在DOS提示符下键入:C:\MASM>LINK文件名(回车)

C:\MASM>LINK文件名;(回车)

连接后,产生扩展名为.EXE的可执行文件。下面是E66.OBJ文件连接的具体过程:

首先键入:

C:LMASM>LINK EX66(回车)

屏幕上将出现如下提示信息:

Microsoft (R) OverlayLinker Version 3.60

Copyright (C) MicrosoftCorp 1983—1987. Allrightsreserved.

Run File[EX66.EXE]:(回车)

List File[NUL.MAP]:(回车)

Libraries [.LIB]:(回车)

其中:

Run Filel EX66.EXE]:要求输入可执行文件的名称,默认是EX66.EXE,一般采用默认文件名,直接回车。

List File[NUL.MAP]:表示是否要建立连接影像文件,若要建立,则输入文件名:若不建立,则直接按回车键。

Libraries[.LIB]:表示是否用到库文件,若不需要,则直接输入回车键。

连接时,不需要系统提示上述过程,使用命令:

C:\MASM>LINK 文件名;(回车)

2.6.4 程序的执行

当建立了可执行文件后,就可以在DOS下输入该文件名,

C:LMASM>文件名(回车)

对于E21文件,可以键入:

C:\MASM>EX66(回车)

2.6.5 调试程序

1. DEBUG操作命令

表2.5 DEBUG主要命令格式、功能表

计算机组成原理课程设计(微程序)报告

微程序控制器的设计与实现

目录 1设计目的 (3) 2设计内容 (3) 3具体要求 (3) 4设计方案 (3) 5 调试过程 (11) 6 心得体会 (12)

微程序控制器的设计与实现 一、设计目的 1)巩固和深刻理解“计算机组成原理”课程所讲解的原 理,加深对计算机各模块协同工作的认识 2)掌握微程序设计的思想和具体流程、操作方法。 3)培养学生独立工作和创新思维的能力,取得设计与调 试的实践经验。 4)尝试利用编程实现微程序指令的识别和解释的工作 流程 二、设计内容 按照要求设计一指令系统,该指令系统能够实现数据传送,进行加、减运算和无条件转移,具有累加器寻址、寄存器寻址、寄存器间接寻址、存储器直接寻址、立即数寻址等五种寻址方式。 三、设计要求 1)仔细复习所学过的理论知识,掌握微程序设计的思 想,并根据掌握的理论写出要设计的指令系统的微程 序流程。指令系统至少要包括六条指令,具有上述功 能和寻址方式。 2)根据微操作流程及给定的微指令格式写出相应的微 程序 3)将所设计的微程序在虚拟环境中运行调试程序,并给 出测试思路和具体程序段 4)尝试用C或者Java语言实现所设计的指令系统的加 载、识别和解释功能。 5)撰写课程设计报告。 四、设计方案 1)设计思路 按照要求设计指令系统,该指令系统能够实现数据传送,进行加、减运算和无条件转移,具有累加器寻址、寄存器寻

址、寄存器间接寻址、存储器直接寻址、立即数寻址等五种寻址方式。从而可以想到如下指令:24位控制位分别介绍如下: XRD :外部设备读信号,当给出了外设的地址后,输出此信号,从指定外设读数据。 EMWR:程序存储器EM写信号。 EMRD:程序存储器EM读信号。 PCOE:将程序计数器PC的值送到地址总线ABUS上。 EMEN:将程序存储器EM与数据总线DBUS接通,由EMWR 和EMRD决定是将DBUS数据写到EM中,还是 从EM读出数据送到DBUS。 IREN:将程序存储器EM读出的数据打入指令寄存器IR 和微指令计数器uPC。 EINT:中断返回时清除中断响应和中断请求标志,便于下次中断。 ELP: PC打入允许,与指令寄存器的IR3、IR2位结合,控制程序跳转。 MAREN:将数据总线DBUS上数据打入地址寄存器MAR。 MAROE:将地址寄存器MAR的值送到地址总线ABUS上。 OUTEN:将数据总线DBUS上数据送到输出端口寄存器OUT 里。 STEN:将数据总线DBUS上数据存入堆栈寄存器ST中。 RRD:读寄存器组R0-R3,寄存器R?的选择由指令的最低两位决定。 RWR:写寄存器组R0-R3,寄存器R?的选择由指令的最低两位决定。 CN:决定运算器是否带进位移位,CN=1带进位,CN=0不带进位。 FEN:将标志位存入ALU内部的标志寄存器。 X2:X1:X0: X2、X1、X0三位组合来译码选择将数据送到DBUS上的寄存器。具体如下: X2 X1 X0 输出寄存器 0 0 0 IN_OE 外部输入门 0 0 1 IA_OE 中断向量 0 1 0 ST_OE 堆栈寄存器 0 1 1 PC_OE PC寄存器

DSP汇编指令学习笔记

Knowledge 问题 谁在DSP的汇编语言中加入了NOP指令? NOP指令加入的条件是什么? About DSP 1.DSP是实时数字信号处理的核心和标志。 2.DSP分为专用和通用两种类型。专用DSP一般采用定点数据结构(一般不支持小数), 数据结构简单,处理速度快;通用DSP灵活性好,但是处理速度有所降低。 3.DSP采用取指、译码、执行三个阶段的流水线(Pipeline)技术,缩短了执行时间,提高了 运行速率。DSP具有8个Functional unit,如果并行处理的话,以600MHz的时钟计算,如果执行的指令是single cycle指令,则可以4800MIPS(指令每秒)。 4.DSP的8个functional Unit,具有独特的功能,对滤波、矩阵运算、FFT(傅里叶变换) 具有 哈弗结构 把指令空间与数据空间隔离的存储方式。 这样实现是为了实现指令的连续读取,而实现pipeline流水线结构。 传统哈弗结构:两个独立的存储空间,还使用独立总线。让取指与执行存储独立,加快执行速度。 改进型哈弗结构:指令与数据的存储空间还是独立的。但是使用公共的总线(地址总线与数据总线)。这样实现的原因是因为出现了CACHE,数据的存储动作大部分被内部的CACHE 总线承接了,所以总线冲突的情况会大大减少。同时让总线的结构与控制变得简单,CACHE 存储的速度也明显快于外设存储器。 冯诺依曼结构:是指令空间与数据空间共享的存放方式。它不能实现pipeline的执行过程。 Pipeline(流水线)技术 是把指令的取指-译码和指令的执行独立开来的技术。虽然每条指令的过程还是要经过取指-译码-执行三个阶段最少3个CPU Cycle。但是多个指令同时并行先后进行,保证总体的指

计算机体系结构试题库—简答题

计算机体系结构试题库 简答题(100题) 1.简述CISC结构计算机的缺点。 答: ●在CISC结构的指令系统中,各种指令的使用频率相差悬殊。据统计,有20%的指 令使用频率最大,占运行时间的80%。也就是说,有80%的指令在20%的运行时 间内才会用到。 ●CISC结构指令系统的复杂性带来了计算机体系结构的复杂性,这不仅增加了研制 时间和成本,而且还容易造成设计错误。 ●CISC结构指令系统的复杂性给VLSI设计增加了很大负担,不利于单片集成。 ●CISC结构的指令系统中,许多复杂指令需要很复杂的操作,因而运行速度慢。 ●在CISC结构的指令系统中,由于各条指令的功能不均衡性,不利于采用先进的计 算机体系结构技术(如流水技术)来提高系统的性能。 2.RISC结构计算机的设计原则。 答: A.选取使用频率最高的指令,并补充一些最有用的指令; B.每条指令的功能应尽可能简单,并在一个机器周期内完成; C.所有指令长度均相同; D.只有load和store操作指令才访问存储器,其它指令操作均在寄存器之间进行; E.以简单有效的方式支持高级语言。 3.影响现代微处理器主频提升的主要原因由哪些? 答:线延迟、功耗。 4.指令集格式设计时,有哪三种设计方法? 答:固定长度编码、可变长编和混合编码)三种设计方法。

5.简述存储程序计算机(冯·诺依曼结构)的特点。 答: (1)机器以运算器为中心。 (2)采用存储程序原理。 (3)存储器是按地址访问的、线性编址的空间。 (4)控制流由指令流产生。 (5)指令由操作码和地址码组成。 (6)数据以二进制编码表示,采用二进制运算。 6.在进行计算机系统设计时,一个设计者应该考虑哪些因素对设计的影响? 答: 在进行计算机系统设计时,设计者应该考虑到如下三个方面因素的影响: ●技术的发展趋势; ●计算机使用的发展趋势; ●计算机价格的发展趋势。 7.简述程序翻译技术的特点。 答: 翻译技术是先把N+1级程序全部变换成N级程序后,再去执行新产生的N级程序,在执行过程中N+1级程序不再被访问。 8.简述程序解释技术的特点。 答: 解释技术是每当一条N+1级指令被译码后,就直接去执行一串等效的N级指令,然后再去取下一条N+1级的指令,依此重复进行。 9.经典体系结构的定义是什么? 计算机体系结构是机器级程序员所看到的计算机的属性,即概念性结构与功能特性。10.“线延迟墙”指的是什么?

吉林大学 计算机系统结构题库 第二章

第二章计算机指令集结构 知识点汇总: 指令集设计、堆栈型机器、累加器型机器、通用寄存器型机器、CISC、RISC、寻址方式、数据表示 简答题 1.增强CISC机器的指令功能主要从哪几方面着手?(CISC) (1) 面向目标程序增强指令功能。 (2) 面向高级语言和编译程序改进指令系统。 (3) 面向操作系统的优化实现改进指令系统。 2.简述CISC存在的主要问题。(知识点:CISC) 答:(1)CISC结构的指令系统中,各种指令的使用频率相差悬殊。 (2)CISC结构指令系统的复杂性带来了计算机系统结构的复杂性,这不仅增加了研制时间和成本,而且还容易造成设计错误。 (3)CISC结构指令系统的复杂性给VLSI设计增加了很大负担,不利于单片集成。 (4)CISC结构的指令系统中,许多复杂指令需要很复杂的操作,因而运行速度慢。 (5)在CISC结构的指令系统中,由于各条指令的功能不均衡性,不利于采用先进的计算机系统结构技术来提高系统的性能。 3.简述RISC的优缺点及设计RISC机器的一般原则。(知识点:RISC) 答:(1)选取使用频率最高的指令,并补充一些最有用的指令。 (2)每条指令的功能应尽可能简单,并在一个机器周期内完成。 (3)所有指令长度均相同。 (4)只有load和store操作指令才访问存储器,其它指令操作均在寄存器之间进行。 (5)以简单、有效的方式支持高级语言。 4.根据CPU内部存储单元类型,可将指令集结构分为哪几类?(知识点:堆栈型机器、累加器型机器、通用寄存器型机器) 答:堆栈型指令集结构、累加器型指令集结构、通用寄存器型指令集结构。 5.常见的三种通用寄存器型指令集结构是什么?(知识点:通用寄存器型机器) 答:(1)寄存器-寄存器型。 (2)寄存器-存储器型。 (3)存储器-存储器型。

计算机组成原理课程设计微程序设计

《计算机组成原理》课程设计报告 ——微程序设计 指导老师:丁伟 学院:计算机学院 班级:软件 1501 姓名: 学号:

一、项目任务 本项目的任务是针对第2章所述的OpenJUC-II教学机模型机,设计控制器的微程序,实现该模型机的指令系统。通过课程设计理解指令的执行过程,指令系统与硬件的关系,进而加深对计算机的结构和工作原理的理解。 二、项目设计 本项目预期分为6个上机设计步骤: Day1:熟悉微程序的设计和调试方法 Day2:双操作数指令的设计与调试 Day3:条件转移指令的设计与调试 Day4:移位指令的设计与调试 Day5:堆栈相关指令的设计与调试 Day6:中断系统的设计与调试 通过上述实践步骤,初步达成微程序设计要求,针对不同产品提出的不同要求,通过编写相应符合的微程序汇编指令,达到预期效果和收益。 三、项目需求 OpenJUC-II模型机、Quartus II软件、虚拟实验板软件、Windows计算机、预先编写完成的.sof和.scc文件。

取指令字段 取目的操作数入口取源操作数 寄存器寻址入口 寄存器间接 寄存器自增间接 立即寻址 直接寻址 间接寻址 变址寻址 相对寻址 进入取目阶段

取目的操作数阶段 从微地址028至02F依次为寄存器寻址,寄 存器间接寻址,寄存器自增间接寻址,02B 为空,直接寻址,间接寻址,变址寻址,相 对寻址 进入执行阶段 从41开始为 MOV,ADD,ADDC,SUB,SUBB,AND,OR,XOR,CMP, TEST的入口地址

保存结果的控存 SAR,SHL,SHR,ROL,ROR,RCL,RCR控存 JC,JNC,JO,JNO,JZ,JNZ,JS,JNS控存 转移的控存

DSP汇编指令总结

DSP汇编指令总结 一、寻址方式: 1、立即寻址: 短立即寻址(单指令字) 长立即数寻址(双指令字) 第一指令字 第二指令字 16位常数=16384=4000h 2、直接寻址 ARU 辅助寄存器更新代码,决定当前辅助寄存器是否和如何进行增或减。N规定是否改变ARP值,(N=0,不变)

4.3.1、算术逻辑指令(28条) 4.3.1.1、加法指令(4条); 4.3.1.2、减法指令(5条); 4.3.1.3、乘法指令(2条); 4.3.1.4、乘加与乘减指令(6条); 4.3.1.5、其它算数指令(3条); 4.3.1.6、移位和循环移位指令(4条); 4.3.1.7、逻辑运算指令(4条); 4.3.2、寄存器操作指令(35条) 4.3.2.1、累加器操作指令(6条) 4.3.2.2、临时寄存器指令(5条) 4.3.2.3、乘积寄存器指令(6条) 4.3.2.4、辅助寄存器指令(5条) 4.3.2.5、状态寄存器指令(9条) 4.3.2.6、堆栈操作指令(4条) 4.3.3、存储器与I/O操作指令(8条)4.3.3.1、数据移动指令(4条) 4.3.3.2、程序存储器读写指令(2条) 4.3.3.3、I/O操作指令(2条) 4.3.4、程序控制指令(15条) 4.3.4.1、程序分支或调用指令(7条) 4.3.4.2、中断指令(3条) 4.3.4.3、返回指令(2条) 4.3.4.4、其它控制指令(3条)

4.3.1、算术逻辑指令(28条) 4.3.1.1、加法指令(4条); ▲ADD ▲ADDC(带进位加法指令) ▲ADDS(抑制符号扩展加法指令) ▲ADDT(移位次数由TREG指定的加法指令) 4.3.1.2、减法指令(5条); ★SUB(带移位的减法指令) ★SUBB(带借位的减法指令) ★SUBC(条件减法指令) ★SUBS(减法指令) ★SUBT(带移位的减法指令,TREG决定移位次数)4.3.1.3、乘法指令(2条); ★MPY(带符号乘法指令) ★MPYU(无符号乘法指令) 4.3.1.4、乘加与乘减指令(6条); ★MAC(累加前次积并乘)(字数2,周期3) ★MAC(累加前次积并乘) ★MPYA(累加-乘指令) ★MPYS(减-乘指令) ★SQRA(累加平方值指令) ★SQRS(累减并平方指令) 4.3.1.5、其它算数指令(3条); ★ABS(累加器取绝对值指令) ★NEG(累加器取补码指令) ★NORM(累加器规格化指令) 返回 4.3.1.6、移位和循环移位指令(4条); ▲ SFL(累加器内容左移指令) ▲ SFR(累加器内容右移指令) ▲ROL(累加器内容循环左移指令) ▲ROR(累加器内容循环右移指令) 返回 4.3.1.7、逻辑运算指令(4条); ▲ AND(逻辑与指令) ▲ OR(逻辑或指令) ▲ XOR(逻辑异或指令) ▲ CMPL(累加器取反指令) 返回 4.3.2、寄存器操作指令(35条) 4.3.2.1、累加器操作指令(6条)

计算机系统结构课后题.

[例题1.1] 假设将某一部件的处理速度加快到10倍,该部件的原处理时间仅为整个运行时间的40%,则采用加快措施后能使整个系统的性能提高多少? [解答] 由题意可知:Fe=0.4, Se=10,根据Amdahl 定律,加速比 为:Sn=1/(0.6+0.4/10=1.56 [例题1.2] 采用哪种实现技术来求浮点数平方根FPSQR 的操作对系统的性能影响较大。假设FPSQR 操作占整个测试程序执行时间的20%。一种实现方法是采用FPSQR 硬件,使FPSQR 操作的速度加快到10倍。另一种实现方法是使所有浮点数据指令的速度加快,使FP 指令的速度加快到2倍,还假设FP 指令占整个执行时间的50%。请比较这两种设计方案。 [解答] 分别计算出这两种设计方案所能得到的加速比: [例题1.2] [解答] =(4*25%+(1.33*75%=2.0 方案1:CPI 1=CPI 原-2%*(CPI 老1-CPI 新1=2.0-2%*(20-2=1.64 方案2:CPI 2=CPI 原-25%*(CPI 老2-CPI 新2=2.0-25%*(4-2=1.5 方案2的加速比=CPU 时间原/CPU 时间2=IC*时钟周期*CPI 原 / IC*时钟周期*CPI 2=2/1.5=1.33

[习题1.17] 假设高速缓存Cache 工作速度为主存的5倍,且Cache 被访问命中的概率为90%,则采用Cache 后,能使整个存储系统获得多高的加速比Sp ? [解答] 我们首先对新的存储系统的性能做以下的假设:在Cache 不命中的情况下,对Cache 的访问不会额外损失时间,即:首先,决定Cache 是否命中所用的时间可以忽略;其次,在从主存向Cache 传输的同时,数据也被传输给使用部件(不需要再从Cache 中读取。这样,新的存储系统中,平均存取时间分为两个部分: hit Cache miss main hit hit miss miss average new R T R T R T R T T ?+?=?+?=_ 其中,R 表示各种情况所占的比例。 根据加速比的计算公式, 57.39.051.011__=?+?=?+?== hit Cache miss main main average new average old p R T R T T T T S [习题1.19]

微指令设计

(1) 设计一条指令,比较SR内容与[ADDR]. 若SR<[ADDR],则SR+[ADDR]->[ADDR]; 否则SR-[ADDR]->[ADDR]. 指令格式:D4 0 SR ADDR 设计分析: 100:把PC的值(即ADDR的地址)送到AR中,然后PC+1 101:用MEM->AR将ADDR从内存中取出并送到AR中 102:利用SR-MEM->Q计算SR与[ADDR]的差,并让各标志位接受ALU的运算结果,103:若S=1(即SR<[ADDR]),条件转移到105,否则顺序执行104 104:将Q的值(即SR-[ADDR])送到[ADDR]中 105:AR<[ADDR]时转移到此处,计算SR+[ADDR]并送到Q寄存器中 106:将Q寄存器的值送到[ADDR]中 微程序: 100H: PC->AR,PC+1->PC: 0000 0E00 A0B5 5402 101H: MEM->AR: 0000 0E00 10F0 0002 102H: SR-MEM->Q,接受标志: 0000 0E01 01D0 0080 103H: S=1(即AR<[ADDR])时,条件转移到105: 0041 43B0 9080 0000 104H: Q->MEM,CC#=0: 0029 0300 1020 0010 105H: SR+MEM->Q: 0000 0E00 00D0 0080 106H: Q->MEM,CC#=0: 0029 0300 1020 0010 A800 MOV R1,900 MOV R2,7 MOV R3,100 LDMC RET G800 A820 MOV R7,0001 MOV R1,0002 MOV [082A],R1 NOP NOP RET E826 D407 082A G820 U820 运行结果如下: 0820:2C70 0001 MOV R7, 0001

-计算机系统结构(有详细答案)

(仅供参考,不作为考试标准), 选择题(30分,每题2分) 计算机系统结构设计者所关心的是________所看到的的计算机结构。 A)硬件设计人员B)逻辑设计人员 C)机器语言或汇编语言程序员D)高级语言程序员 在计算机系统设计时,为了提高系统性能,应当注意________。 A)加快经常性使用指令的执行速度 B)要特别精心设计少量功能强大的指令 C)要减少在数量上占很小比例的指令的条数 D)要加快少量指令的速度 重叠寄存器技术主要用于解决在RISC系统中因________而导致的问题。 A)JMP指令影响流水线 B)CALL指令的现场保护 C)只有LOAD和STORE指令带来的访问存储器不便 D)存储器访问速度 为使流水计算机运行效率高________ A)各过程段时间要不同B)连续处理的任务类型应该不同 C)连续处理的任务类型应该相同D)连续处理的任务数尽可能少不属于堆栈型替换算法的是________。 A)近期最少使用法B)近期最久未用法 C)先进先出法D)页面失效频率法 与全相联映象相比,组相联映象的优点是________。 A)目录表小B)块冲突概率低C)命中率高D)主存利用率高"一次重叠"中消除"指令相关"最好的方法是________。 A)不准修改指令B)设相关专用通路 C)推后分析下条指令D)推后执行下条指令 流水操作中,遇到数据相关时,采用的解决办法有________。 A)用优化编译器检测,通过指令重新排序的办法 B)数据重定向技术 C)延迟转移技术 D)加快和提前形成条件码 经多级网络串联来实现全排列网络,只能用________。 A)多级立方体网络B)多级PM2I网络 C)多级混洗交换网络D)上述任何网络 虫蚀寻径以流水方式在各寻径器是顺序传送的是________。 授课:XXX

模型计算机系统的设计与实现

题目:模型计算机系统的设计与实现学生姓名: 学院: 班级: 指导教师: 2010年1 月8 日

内蒙古工业大学课程设计(论文)任务书 课程名称:计算机组成与结构课程设计学院:信息工程学院班级:计07-_3班__ 学生姓名:武宝全 _ 学号: 200710210023 指导教师:董志学王晓荣邢红梅

摘要 本次课程设计要求设计实现一个简单8位模型计算机系统,包括用可编程器件实现的运算器,微程序控制器,存储器,简单输入/输出接口和设备,时序和启停控制等电路。通过自己定义的一套指令系统,主要实现算术A加B,A+/B运算,逻辑A·B,置B运算,输入指令,输出指令和存储器存数指令。由微程序控制器按照微指令格式给出下地址,并将结果存入存储器。用Protel电路设计软件画出所设计的模型机系统的电路原理图,包括运算器,微程序控制器,存储器、简单输入/输出设备、时序和启停等电路。用可编程器件EPM7123实现运算器,并借助MAXPLUSII软件实现其功能。在QDKJ-CMH-CPLD试验平台上调试并进行验证。 关键字:微程序、控制器、存储器、

引言 通过俩周的组成与结构设计,设计一个8位模型计算机系统,包括用可编程器件实现的运算器,微程序控制器,存储器,简单输入/输出接口和设备,时序和启停控制等电路。设计工作是在之前的验证实验基础之上完成的,通过自己的思维,实现微程序机的一些基本的逻辑运算。根据现有的二进制指令系统,条件为模型计算机系统为8位模型机,运算器为8位运算器,数据总线和地址总线都为8位,输入设备为8位开关,输出设备为8位发光二级管指示灯。在现有的芯片内烧制自行设计的微指令,达到在输入一个数据后自加,减一,实现自行跳转。 在设计完成后,再输入数据04后得出07的结果,并实现跳转。

计算机体系结构问答题第2章

第2章计算机指令集结构设计 1. 通常可按哪5个因素对计算机指令集结构进行分类? (1) 在CPU中操作数的存储方法。 (2) 指令中显式表示的操作数个数。 (3) 操作数的寻址方式。 (4) 指令集所提供的操作类型。 (5) 操作数的类型和大小。 2. 在对计算机指令集结构进行分类的5个因素中,哪一种是各种指令集结构之间最主要的区别? CPU中操作数的存储方法,即在CPU中用来存储操作数的存储单元的类型,是各种指令集结构之间最主要的区别。 3. 根据CPU内部存储单元类型,可将指令集结构分为哪几类? 堆栈型指令集结构、累加器型指令集结构、通用寄存器型指令集结构。 4. 堆栈型指令集结构、累加器型指令集结构和通用寄存器型指令集结构分别有什么 5. 现代大多数机器均采用通用寄存器型指令集结构,为什么? 主要有两个方面的原因,一是寄存器和CPU内部其他存储单元一样,要比存储器快;其次是对编译器而言,可以更加容易、有效地分配和使用寄存器。 6. 通用寄存器型指令集结构可细分为哪三类? 寄存器-寄存器型。 寄存器-存储器型。 存储器-存储器型。 7. 三种通用寄存器型指令集结构分别有什么优缺点?

8. 从当前的计算机技术观点来看,CISC结构有什么缺点? (1)CISC结构的指令系统中,各种指令的使用频率相差悬殊。 (2)CISC结构指令系统的复杂性带来了计算机系统结构的复杂性,这不仅增加了研制时间和成本,而且还容易造成设计错误。 (3)CISC结构指令系统的复杂性给VLSI设计增加了很大负担,不利于单片集成。 (4)CISC结构的指令系统中,许多复杂指令需要很复杂的操作,因而运行速度慢。 (5)在CISC结构的指令系统中,由于各条指令的功能不均衡性,不利于采用先进的计算机系统结构技术来提高系统的性能。 9. 增强CISC机器的指令功能主要从哪几方面着手? (1) 面向目标程序增强指令功能。 (2) 面向高级语言和编译程序改进指令系统。 (3) 面向操作系统的优化实现改进指令系统。 10. RISC的设计原则是什么? (1)选取使用频率最高的指令,并补充一些最有用的指令。 (2)每条指令的功能应尽可能简单,并在一个机器周期内完成。 (3)所有指令长度均相同。 (4)只有load和store操作指令才访问存储器,其它指令操作均在寄存器之间进行。 (5)以简单、有效的方式支持高级语言。 11. RISC和CISC处理机的指令系统结构在指令格式、寻址方式和每条指令的周期数(CPI)三方面有哪些区别? 12. 计算机指令集结构设计所涉及的内容有哪些? (1) 指令集功能设计:主要有RISC和CISC两种技术发展方向。 (2) 寻址方式的设计。 (3) 操作数表示和操作数类型。 (4) 寻址方式的表示:可以将寻址方式编码于操作码中,也可以将寻址方式作为一个单独的域来表示。 (5) 指令集格式的设计:有变长编码格式、固定长度编码格式和混合型编码格式三种。

微程序控制器的设计与实现

微程序控制器的设计与实现 一、设计目的 1、巩固和深刻理解“计算机组成原理”课程所讲解的原理, 加深对计算机各模块协同工作的认识。 2、掌握微程序设计的思想和具体流程、操作方法。 3、培养学生独立工作和创新思维的能力,取得设计与调试的 实践经验。 4、尝试利用编程实现微程序指令的识别和解释的工作流程。 二、设计内容 按照要求设计一指令系统,该指令系统能够实现数据传送,进行加、减运算和无条件转移,具有累加器寻址、寄存器寻址、寄存器间接寻址、存储器直接寻址、立即数寻址等五种寻址方式。 三、设计具体要求 1、仔细复习所学过的理论知识,掌握微程序设计的思想,并根、 据掌握的理论写出要设计的指令系统的微程序流程。指令系统至少要包括六条指令,具有上述功能和寻址方式。 2、根据微操作流程及给定的微指令格式写出相应的微程序 3、将所设计的微程序在虚拟环境中运行调试程序,并给出测试思 路和具体程序段 4、撰写课程设计报告。

四、设计环境 1、伟福COP2000型组成原理实验仪,COP2000虚拟软件。 2、VC开发环境或者Java开发环境。 五、设计方案 (1)设计思想 编写一个指令系统,根据所编写的指令的功能来设计相应的微程序。首先利用MOV传送指令来给寄存器和累加器传送立即数,实现立即数寻址;利用寄存器寻址方式,用ADDC指令对两者进行相加运算;利用寄存器间接寻址方式,用SUB指令实现减运算;利用累加器寻址方式,用CPL指令实现对累加器寻址;利用存储器寻址方式,用JMP 指令实现程序的无条件跳转。这样,所要设计的指令系统的功能就全部实现了。 (2)微指令格式 采用水平微指令格式的设计,一次能定义并执行多个并行操作微命令的微指令,叫做水平型微指令。其一般格式如下: 按照控制字段的编码方法不同,水平型微指令又分为三种:全水平型(不译法)微指令,字段译码法水平型微指令,以及直接和译码相混合的水平型微指令。 (3)24个微指令的意义 COP2000 模型机包括了一个标准CPU 所具备所有部件,这些部件包括:运算器ALU、累加器A、工作寄存器W、左移门L、直通门D、右

DSP 汇编指令缩写

ABS Absolute value of Accumulator ADD add to accumulator ADDC add to accumulator with carry ADDT add to accumulator with shift specified by TREG AND and with accumulator CMPL complement accumulator LACC load accumulator with shift LACL load low accumulator and clear high accumulator LACT load accumulator with shift specified by TREG NEG negate accumulator NORM normalize contents of accumulator OR or with accumulator ROL/ROR rotate accumulator left/right SACH/SACL store high/low accumulator with shift SFL/SFR shift accumulator left/right SUB subtract from accumulator SBUC conditional subtract SUBS subtract from accumulator with sign extension suppressed SUBT subtract from accumulator with shift specified by TREG XOR exclusive or with accumulator ZALR zero low accumulator and load high accumulator with rounding ADRK add short limmediate value to AR BANZ branch on AR not zero CMPR compare AR with AR0 LAR load AR MAR modify AR STR store AR SBRK subtract short limmediate APAC add PREG to accumulator LPH load PREG LT load TREG LTA load TREG and ACC previous product LTD load TREG ACC previous product and move date LTS load TREG and subtract previous product MAC multiply and accumulate MACD multiply and accumulate wit data move MPY multiply MPY A multiply and accumulate previous product MPYS multiply and subtract previous product MPYS multiply unsign PAC load accumulator with PREG SPAC subtract PREG from accumulator SPH/SPL store high/low PREG SPM set PREG output shift mode

计算机组成原理设计(十条指令)

1 关于此次课程设计 1.1 课程设计目的 本课程设计是计算机科学与技术专业重要的实践性教学环节之一,是在学生学习完《计算机组成原理》课程后进行的一次全面的综合设计。目的是通过一个完整的8位指令系统结构(ISA)的设计和实现,加深对计算机组成原理课程内容的理解,建立起整机系统的概念,掌握计算机设计的基本方法,培养学生科学的工作作风和分析、解决实际问题的工作能力。 1.2课程设计内容及要求 基于TDN-CM++计算机组成原理实验教学系统,设计和实现一个8位指令系统结构(ISA),通过调试和运行,使设计的计算机系统能够完成指定的功能。 设计过程中要求考虑到以下各方面的问题: (1)指令系统风格(寄存器-寄存器,寄存器-存储器,存储器-存储器); (2)数据类型(无符号数,有符号数,整型,浮点型); (3)存储器划分(指令,数据); (4)寻址方式(立即数寻址,寄存器寻址,直接寻址等); (5)指令格式(单字节,双字节,多字节); (6)指令功能类别(算术/逻辑运算,存储器访问,寄存器操作,程序流控制,输入/输出)。 要求学生综合运用计算机组成原理、数字逻辑和汇编语言等相关课程的知识,理解和熟悉计算机系统的组成原理,掌握计算机主要功能部件的工作原理和设计方法,掌握指令系统结构设计的一般方法,掌握并运用微程序设计(Microprogramming)思想,在设计过程中能够发现、分析和解决各种问题,自行设计自己的指令系统结构(ISA)。

2 分析阶段 2.1 微指令格式分析 微指令格式如下表: 表2-1 微代码定义 (1)字段24~19控制运算器的控制端,通过改变S3~CN来决定对数据进行何种算术或逻辑运算。本设计中全部为正逻辑运算。 (2)字段18为控制对主存W/R的开关 Y1、Y2进行选择。 (4)字段15~7为A、B、C三个开关控制端。

计算机组成原理指令系统设计

课程设计说明书 题目: 指令系统设计 院系:计算机科学与工程学院 专业班级: 学号: 学生姓名: 指导教师: 2013年 11 月 25 日

安徽理工大学课程设计(论文)任务书 2013年11月25日

安徽理工大学课程设计(论文)成绩评定表

摘要 在飞速发展的科技社会中,计算机被应用到各行各业,各个领域中。人们渐渐地步入自动化、智能化的生活阶段。本次计算机组成原理课程设计课题是基本模型机的设计与实现。利用CPU与简单模型机来实现计算机组成原理课程及实验中所学到的实验原理和编程思想,硬件设备自拟,编写指令的应用程序,用微程序控制器实现了一系列的指令功能,最终达到将理论与实践相联系。本次设计完成了各指令的格式以及编码的设计,实现了各机器指令微代码,设计基本模型机的指令系统(包括逻辑与,逻辑或,算术加,减运算,输入,输出,转移,传送指令),形成具有一定功能的完整的应用程序。 简言之,这次设计,计算机数据通路的控制将由微程序控制器来完成,CPU从内存中取出一条机器指令到指令执行结束的一个指令周期,全部由微指令组成的序列来完成,即一条机器指令对应一条微程序,一条微程序又有若干微指令组成,一条微指令的功能由24位操作信号(即控制位)实现。 这一课题的实现不仅使我们对各种微指令有了熟练的掌握,更对有关知识的深入学习打下基础。关键词:指令系统,微指令,机器指令,异或

目录 1.系统分析 (1) 1.1 设计准备 (1) 1.2 设计目标 (3) 2.系统设计 (4) 2.1 指令、微指令系统设计 (4) 2.2 模型机的微指令设计 (5) 2.3 异或程序设计 (6) 3.系统实现 (7) 3.1 程序编写与分析 (7) 3.3 调试结果 (8) 4.总结 (10) 4.1 设计体会 (10) 4.2设计改进 (10) 参考文献 (11)

计算机组成原理课程设计(微程序)报告

微程序控制器的设计与实现第 1 页共22 页

目录 5 调试过程 (11) 6 心得体会 (12) 第 2 页共22 页

微程序控制器的设计与实现 一、设计目的 1)巩固和深刻理解“计算机组成原理”课程 所讲解的原理,加深对计算机各模块协同工 作的认识 2)掌握微程序设计的思想和具体流程、操 作方法。 3)培养学生独立工作和创新思维的能力, 取得设计与调试的实践经验。 4)尝试利用编程实现微程序指令的识别 和解释的工作流程 二、设计内容 按照要求设计一指令系统,该指令系统能够实现数据传送,进行加、减运算和无条件转移,具有累加器寻址、寄存器寻址、寄存器间接寻址、存 储器直接寻址、立即数寻址等五种寻址方式。 第 3 页共22 页

三、设计要求 1)仔细复习所学过的理论知识,掌握微程 序设计的思想,并根据掌握的理论写出要设 计的指令系统的微程序流程。指令系统至少 要包括六条指令,具有上述功能和寻址方式。 2)根据微操作流程及给定的微指令格式 写出相应的微程序 3)将所设计的微程序在虚拟环境中运行 调试程序,并给出测试思路和具体程序段 4)尝试用C或者Java语言实现所设计的 指令系统的加载、识别和解释功能。 5)撰写课程设计报告。 四、设计方案 1)设计思路 按照要求设计指令系统,该指令系统能够实现数据传送,进行加、减运算和无条件转移,具有累加 器寻址、寄存器寻址、寄存器间接寻址、存储器直接第 4 页共22 页

寻址、立即数寻址等五种寻址方式。从而可以想到如 下指令:24位控制位分别介绍如下: XRD :外部设备读信号,当给出了外设的地址后,输出此信号,从指定外 设读数据。 EMWR:程序存储器EM写信号。 EMRD:程序存储器EM读信号。 PCOE:将程序计数器PC的值送到地址总线ABUS上。 EMEN:将程序存储器EM与数据总线DBUS接通,由EMWR和EMRD 决定是将DBUS数据写到EM中,还是 从EM读出数据送到DBUS。 IREN:将程序存储器EM读出的数据打入指令寄存器IR和微指令计数器uPC。 EINT:中断返回时清除中断响应和中断请 求标志,便于下次中断。 第 5 页共22 页

DSP28335汇编教程

DSP28335汇编教程 当硬件执行指令时,寻找指令所指定的参与运算飞操作数的方式——寻址方式。根据程序的要求采用不同的寻址方式,可以有效地缩短程序的运行时间和提高代码执行效率。汇编指令是可执行指令,每一条指令对应一条机器码,用来控制处理器仲的执行部分进行各种操作。在本章节当中将主要以基于C28x的DSP芯片为例,为读者讲解DSP的寻址方式和汇编指令系统,其中大部分内容也可适用于其他Ti公司的DSP产品。 6.1汇编语言指令集概述 在学习C28x系列DSP的寻址方式和汇编指令指令之前,先来对一些基础的知识进行讲解一下先,在汇编程序当中开发人员会常常使用到许多的特殊符号和标志,它们都具有特殊的含义,在学习汇编之前读者们必须先理解这些符号和标志含义,在这里会对其中最常用最重要的操作数符号和寄存器经行详细说明。 在进行汇编讲解之前先来了解一下开发的核心——CPU。在TMS320C2000系列中,CPU 内核为: C20x/C24x/C240x:C2xLP: C27x/C28x:C27x、C28x 这些CPU的硬件结构有一定差别,指令集也不相同,但是,在C28x芯片中可以通过选择兼容特性模式,使C28xCPU与C27xCPU及C2xLPCPU具有最佳兼容性。可通过状寄存器STl的位OBJMODE和位AMODE的组合,选定模式。 C28x芯片具有3种操作模式: 1.C28x模式:在该模式中,用户可以使用C28x的所有有效特性、寻址方式和指令系统, 因此,一般应使C28x芯片工作于该种模式。 2.C27x目标——兼容模式:在复位时,C28x的CPU处于C27x目标-兼容模式。在该模式 下,目标码与C27xCPU完全兼容,且它的循环—计数也与C27xCPU兼容。 3.C2xLP源——兼容模式:该模式允许用户运行C2xLP的源代码,这些源代码是用C28x 代码生成工具编译生成的。 在下面的讲解当中会牵涉到模式的转换,希望读者要搞清楚每一个模式的对应关系。 本节假设条件为芯片工作于C28x模式(OBJMODE=1,AMODE=0)。复位后,通过执行指令C28OBJ或者SETC OBJMODE将ST1中的OBJMODE位置1,芯片即可工作于C28x模式。 6.1.1 DSP中的操作数 汇编语言离不开操作符和操作数,操作符可以认为就是CPU的指令或者编译器上的伪指令,操作数是指令执行过程中的参与者,也可以说操作数就是指令所控制的对象。 如表6-1,表6-2和表6-3对指令中常用到的一些操作数符号进行说明

计算机体系结构习题与答案

一、复习题 1.简述冯?诺依曼原理,冯?诺依曼结构计算机包含哪几部分部件,其结构以何部件为中心? 答:冯?诺依曼理论的要点包括:指令像数据那样存放在存储器中,并可以像数据那样进行处理;指令格式使用二进制机器码表示;用程序存储控制方式工作。这3条合称冯?诺依曼原理 冯?诺依曼计算机由五大部分组成:运算器、控制器、存储器、输入设备、输出设备,整个结构一般以运算器为中心,也可以以控制器为中心。 (P51-P54) 2.简述计算机体系结构与组成、实现之间的关系。 答:计算机体系结构通常是指程序设计人员所见到的计算机系统的属性,是硬件子系统的结构概念及其功能特性。计算机组成(computer organization)是依据计算机体系结构确定并且分配了硬件系统的概念结构和功能特性的基础上,设计计算机各部件的具体组成,它们之间的连接关系,实现机器指令级的各种功能和特性。同时,为实现指令的控制功能,还需要设计相应的软件系统来构成一个完整的运算系统。计算机实现,是计算机组成的物理实现, 就是把完成逻辑设计的计算机组成方案转换为真实的计算机。计算机体系结构、计算机组成和计算机实现是三个不同的概念,各自有不同的含义,但是又有着密切的联系,而且随着时间和技术的进步,这些含意也会有所改变。在某些情况下,有时也无须特意地去区分计算机体系结构和计算机组成的不同含义。 (P47-P48) 3.根据指令系统结构划分,现代计算机包含哪两种主要的体系结构? 答:根据指令系统结构划分,现代计算机主要包含:CISC和RISC两种结构。 (P55) 4.简述RISC技术的特点? 答:从指令系统结构上看,RISC 体系结构一般具有如下特点: (1) 精简指令系统。可以通过对过去大量的机器语言程序进行指令使用频度的统计,来选取其中常用的基本指令,并根据对操作系统、高级语言和应用环境等的支持增设一些最常用的指令; (2) 减少指令系统可采用的寻址方式种类,一般限制在2或3种; (3) 在指令的功能、格式和编码设计上尽可能地简化和规整,让所有指令尽可能等长; (4) 单机器周期指令,即大多数的指令都可以在一个机器周期内完成,并且允许处理器在同一时间内执行一系列的指令。 (P57-58) 5.有人认为,RISC技术将全面替代CISC,这种观点是否正确,说明理由? 答:不正确。与CISC 架构相比较,RISC计算机具备结构简单、易于设计和程序执行效率高的特点,但并不能认为RISC 架构就可以取代CISC 架构。事实上,RISC 和CISC 各有优势,CISC计算机功能丰富,指令执行更加灵活,这些时RISC计算机无法比拟的,当今时代,两者正在逐步融合,成为CPU设计的新趋势。 (P55-59) 6.什么是流水线技术? 答:流水线技术,指的是允许一个机器周期内的计算机各处理步骤重叠进行。特别是,当执行一条指令时,可以读取下一条指令,也就意味着,在任何一个时刻可以有不止一条指令在“流水线”上,每条指令处在不同的执行阶段。这样,即便读取和执行每条指令的时间保持不变,而计算机的总的吞吐量提高了。 (P60-62) 7.多处理器结构包含哪几种主要的体系结构,分别有什么特点? 答:多处理器系统:主要通过资源共享,让共享输入/输出子系统、数据库资源及共享或不共享存储的一组处理机在统一的操作系统全盘控制下,实现软件和硬件各级上相互作用,达到时间和空间上的异步并行。 SIMD计算机有多个处理单元,由单一的指令部件控制,按照同一指令流的要求为他们分配各不相同的数据并进行处理。系统结构为由一个控制器、多个处理器、多个存贮模块和

相关主题
文本预览
相关文档 最新文档