指令格式的优化设计

指令格式的优化设计
指令格式的优化设计

指令格式的优化设计

指令格式的优化设计的目的是用最短的二进制位数表示指令的操作信息和地址信息,使指令的平均字长最短。指令格式的优化设计,首先根据指令集各指令的使用频度}对操作码进行优化设计,然后对地址码和寻址方式的表示采取优化措施,使的分布{P

i

指令格式达到优化。经过优化设计的指令集减少了程序的总位数,减少了程序运行的时空开销,从而提高了系统的性能。

我们首先讨论操作码的优化编码方法,然后讨论寻址技术,最后,在操作码和地址码优化表示的基础上,说明指令格式的优化设计。

一、操作码的优化设计

1、操作码优化编码的方法

操作码优化编码的方法有三种:定长编码、哈夫曼编码和扩展编码。

定长编码:是指所有指令的操作码长度都是相等的。如果有n个需要编码的操作码,

n位。

定长操作码的位数最少需要log

2

哈夫曼编码:用哈夫曼方法构造哈夫曼树进行编码。构造哈夫曼树的方法是:每次从指令集中选出两个使用频度最小的指令,将其频度相加,形成一个节点,称为父节点,将新生成的父节点放到结点集中,从新的节点集中再选两个使用频度最少的节点生成一个新的父节点,直至节点集成为空集,就生成了一棵哈夫曼树。每个节点的两个分支节点,称为节点,用0和1标识,上面的节点称根节点,下面的节点称为叶节点。从最上面的根节点到一个叶节点的路径(由0和1组成的序列)就是这个叶节点的哈夫曼编码。

由于哈夫曼编码的码长种类较多。既不利于硬件对操作码的译码,也很难与地址码配合形成长度规整的指令格式。因此,实用的操作码编码一般不采用哈夫曼编码而采用扩展编码的方法。

扩展编码:限定使用少数几种长度码长,使用频度高的码点用短码表示,使用频度低的码点用长码表示。特别需要指出的是,不是所有的短码都可以作为长码的前缀,即不是任何短码都可以是任何长码的若干位。否则,编码将会不唯一。所以,要留下若干个短码作为长码的扩展标志,以便长码在扩展编码时使用。这是扩展编码“扩展”一词的含义。

2

扩展编码的两种表示方法。

1)码长表示法,用短横线前后的数字分别表示短码码长和长码码长,例如,

2-4-6表示指令操作码的长度有三种,分别是2位、4位、6位。(没有表示三种长度的编码各有多少个码点)。

2)码点数表示法,用斜线前后的数字分别表示短码码点的个数和长码码点的

个数,例如,3/4/6表示有三种码长,最短码长的码点个数是3,最长码长的码点个数是4,三种码点的总数是13。(没有表示各个码点数的码长是多少)。 2、操作码优化编码的评价方法

(1)用平均码长评价编码优化的程度,平均码长为:

i n

i i l p l ∑==1

其中i p 是第i 种码点的使用频度,i l 是第i 种码点的编码长度。 (2)用位冗余量衡量编码优化的程度,位冗余量为

l

H

l H l R -=-=

1 其中,H 称为信息熵(Entropy)

∑=-=n

i i i p p H 12log

表示用二进制编码表示n 个码点时理论上最短平均编码长度。因此对于任何实际编码得出的平均码长l ,都有l >H ,故有0

3、对于同一个频度分布{p i },应用哈夫曼法有可能生成不同的哈夫曼树。因此,由不同的哈夫曼树得出的各码点的编码不相同。也就是说,从频度分布{p i }得出的哈夫曼编码并不唯一。但,计算得到的平均码长l 肯定是唯一的。

根据实现编码的码点个数的要求,在采用扩展编码方法进行优化编码时,选用几个短码作为长码扩展码标志的原则:一是根据需要编码的短码的码点个数和长码码点个数进行选择,二是尽量减少编码可表示的冗余码点的个数。总之,应尽可能达到平均码长l 最短的优化要求。

3

例1:一个处理机共有I 1~I 10共10条指令,经统计各指令在程序中的使用频率分别为:

p 1=0.25 p 2=0.20 p 3=0.15 p 4=0.10 p 5=0.08 p 6=0.08 p 7=0.05 p 8=0.04 p 9=0.03 p 10=0.02

(1)计算该10条指令的操作码编码的最短平均码长;

(2)写出该10条指令的操作码的哈夫曼编码,并计算该种编码的平均码长和位冗余量;

(3)采用3/7扩展编码和2/8扩展编码编写该10条指令的操作码,并分别计算平均码长和位冗余量。问哪一种扩展编码较好?说明其理由。 解:

(1)由给出的使用频率p 1~p 10,计算I 1~I 10的操作码编码的最短平均码长:

∑=-=10

12log i i i p p H

=-(0.25log 20.25+0.20log 20.20+0.15log 20.15+0.10log 20.10

+0.08log 20.08+0.08log 20.08+0.05log 20.05+0.04log 20.04+ 0.03log 20.03+0.02log 20.02) =2.96位

所以,这十条指令的操作码编码的最短平均码长为2.96位。

(2)根据给出的使用频度,在用哈夫曼编码算法构造哈夫曼树的过程中,在选两个频度最小的节点合并时,有时有两个以上的节点可供选择,因此就会生成结构不同的哈夫曼树。这里给出了两个哈夫曼树。如下图:

I10I9I8I7

4

I10I9

由哈夫曼树得到的两种哈夫曼编码如下表:

可见哈夫曼编码是不唯一的。

两种哈夫曼编码的平均码长为:

5

6

ai i i a I p I ∑==10

1

=0.25*2+0.20*2+0.15*3+0.10*3+0.08*4+0.08*4+0.05*5+0.04*5+0.03*5+0.02*5 =2.99位

bi i i b I p I ∑==10

1

=0.25*2+0.20*2+0.15*3+0.10*3+0.08*4+0.08*4+0.05*4+0.04*5+0.03*6+0.02*6 =2.99位

可见,尽管哈夫曼编码不同,而平均码长却是唯一的。两种哈夫曼编码的位冗余量分别为:

%0.199.296.211=-=-

=a a l H R %0.199

.296.211=-=-

=b b l H R 显然, R a =R b

(3)3/7扩展编码和2/8扩展编码如下表所示:

3/7扩展编码要求短码码点有3个,长码码点有7个,短码码长取2位,可表示22=4个短码码点。因此只留一个码点作为扩展标志。要表示的长码码点有7个,因此要扩展

7

3位,因此有23=8个扩展点可用,故有一个点即有一个长码码点11111未被用到,或称有一个冗余码点。而采用2/8扩展编码则没有冗余码点。由此判断,2/8扩展编码优于3/7扩展编码。但是,准确地评价编码的优劣仍需要比较平均码长。两种扩展编码的平均码长分别为:

I 3/7=(0.25+0.20+0.15)*2+(0.10+0.08+0.08+0.05+0.04+0.03+0.02)*5=3.2位 I 2/8=(0.25+0.20)*2+(0.15+0.10+0.08+0.08+0.05+0.04+0.03+0.02)*4=3.1位 两种扩展编码的位冗余量分别为: %5.72

.396

.2117/37/3=-

=-

=l H R %5.41

.396

.2118

/28/2=-

=-

=l H R 显然,由于 R 2/8〈 R 3/7,所以,2/8扩展编码优于3/7扩展编码。

二、寻址技术

寻址技术对于指令格式的设计十分重要。它决定了指令字中如何表示地址码。寻址技术是指存储数据的空间如何编址和如何寻址的技术。前者称为编址方式,后者称为寻址方式。在主机中,可用于存储数据的空间有:CPU 中的通用寄存器、主存储器、堆栈和I/O 接口中的数据寄存器。由于这些存储空间的工作速度和存储容量差别很大,因此,采用的编址方式和寻址方式也不同。

1、存储空间的组织方式

存储空间有如下三种组织方式: (1)三个地址空间的组织方式

存储空间的存储单位数量越多,用于存储单位编址的地址码越长。CPU 中的通用寄存器数量较少,I/O 寄存器的数量较多,主存储单元的数量大得多。为了减少指令中用于编址的地址码长度,要对这三个存储空间分别独立编址。三个存储空间的寻址方式也不相同。对寄存器一般采用直接寻址方式,对主存储器一般采用间接寻址和变址寻址等多种寻址方式,以避免在指令中用长的地址码直接表示主存单元的地址。

(2)两个地址空间的组织方式

CPU的通用寄存器独立编址,I/O寄存器和主存储器统一编址。统一编址空间的高端地址一般用于I/O接口寄存器的地址。

(3)一个地址空间的组织方式

所有数据存储单位统一编址,地址空间的低端地址是CPU的通用寄存器的地址,高端地址是I/O接口寄存器的地址。

2、地址单位

常用的编址单位有:字编址,字节编址和位编址。

字编址是指每个编址地址与访问的数据存储单位相一致。字节编址是指每个编址单位都是一个字节。位编址是指每个编址单位都是一个二进制位。

对CPU通用寄存器的一次读/写访问,要求读出或写入通用寄存器中的是一个字。因此,通用寄存器按字编址,寄存器的编号就是寄存器的地址码。

主存储器可以按字编址,也可以按字节编址。按字编址是最容易实现的一种编址方式,在采用按字编址的计算机中,可以设置专门的按字节操作的指令和按位操作的指令,用来实现对存储单元中的指令字节或指令位进行操作。

3、寻址方式

按指令中包含的地址码的个数来分,指令可分为:零地址指令﹑一地址指令、二地址指令和三地址指令。

根据指令中给出的地址码来查找数据存储单元的方式称为寻址方式。

按指令的寻址空间来分,寻址方式可以分为以下四种:

(1)立即数寻址

在指令的地址码位置直接给出操作数,使指令从指令字中获取操作数,不需要访问任何地址空间,指令执行速度很快。缺点是指令字中的地址码长度有限,使操作数的示数范围较小,示数精度较低。

(2)寄存器寻址

若寻址空间是通用寄存器,则采用通用寄存器寻址方式。由于通用寄存器的工作速度较快,因此寄存器寻址的执行速度较快。另外,由于通用寄存器的字长比指令中的地址码的长度要大得多,因此,寄存器中的操作数的示数范围和示数精度较大。

8

(3)主存寻址

若寻址空间是主存,则采用主存寻址方式,由于主存的工作速度较慢,因此主存寻址比较费时。另外,由于主存的容量很大,即主存的存储空间很大,因此主存空间的地址码较长,而指令字中分配给地址码的位数很有限,这种矛盾在二地址指令和三地址指令中更突出。为了能用有限长度的指令地址码对应相当大的主存空间寻址,在主存寻址方式中要采用间接寻址和变址寻址等寻址方式。在这些寻址方式中用寄存器存放操作数的主存单元地址,而在指令地址码中给出的是相应的寄存器地址。指令执行时,先访问指令地址码指定的寄存器,从指定的寄存器中获得主存单位地址,然后再访问该主存单元地址指定的主存单元,从而得到所要用的数据。

(4)堆栈地址

由于堆栈中的数据只能先进后出,后进先出,因此对堆栈空间的寻址无需指明地址。

标准的堆栈操作指令没有地址码部分,如:

PUSH A

PUSH B

ADD

POP C

三、指令格式优化设计的措施

在操作码优化编码的基础上,结合地址码和寻址方式在指令中的表示,可使指令字格式优化。指令字格式优化设计的措施主要有:

(1)采用扩展编码,以缩短操作码的平均码长。

(2)采用多种寻址方式,诸如基址、变址、相对寻址、寄存器寻址、寄存器间接寻址等多种寻址方式,以缩短需要在指令中表示的地址码长度,但不减少地址码寻址空间的大小。

(3)指令集采用零地址、一地址、二地址、三地址等多种地址制,且让常用的短操作码与多地址字段相配合,长操作码与少地址字段相配合。

(4)在同种地址制的若干指令中采用多种地址表示形式,如寄存器-寄存器型,寄存器-主存型,主存-主存型等,让每种地址字段有多种长度,使长度不等的操作码与地址码配合,形成规整(相同)长度的指令字。

(5)保持指令字在存储器中按整数边界存储的前提下,使用多种不同的指令字长度,整数边界存储要求指令字长应是主存存储字长的整数倍。

9

综合应用上述措施,就可以使指令系统的位冗余量减少,操作数的寻址灵活,操作码的备用码总数增多,有利于对指令系统进行扩充。

为了说明考虑以上各种措施后实现指令字格式优化设计的过程,现举例如下:

例 2:某模型机有9条指令,其使用频度分别为:

ADD:30(27)% SUB:24(21)% LOD:6(7)% STO:7(8)% JMP:7(8)%

SHR:2(4)% ROL:3(6)% MOV:20(18)% STP:1(1)%

要求:用两种指令字长,且都用二地址指令。

采用扩展编码,只能用两种操作码码长。短指令为寄存器-寄存器型,长指

令为寄存器-主存型。

设该机器有若干个通用寄存器。

主存地址能变址寻址,宽度为16位,按字节编址,采用按整数边界存储,

任何指令都在一个主存周期中取得。

(1)仅根据使用频度,不考虑其它要求,设计出哈夫曼编码,并计算平均码长;

(2)根据给出的全部要求,设计优化的操作码编码,并计算平均码长;

(3)画出该机的两种指令字的格式,标出各字段的位数;

(4)该机允许使用多少个可编址的通用寄存器?变址寻址的最大相对位移量是多少

字节?

註:题文括弧中的数字是课后同学练习题用的数字。

解:

(1)根据频度分布,得出哈夫曼树,如下图:

10

11

9

8

由哈夫曼树,得出9条指令的哈夫曼树,如下表:

哈夫曼编码的平均码长为:

)(61.210

1

位==∑=i i i l p l

(2)根据题目要求,指令有两种字长,主存宽度为16位,按字节编址,采用按整数边界存储,任何指令都在一个主存周期取得,那么,短指令字长只能是8位,长指令字长只能是16位。

12

指令都用二地址指令:

短指令位寄存器-寄存器型,据此可得出短指令格式为:

长指令为寄存器-主存型,且主存地址应能变址寻址,可得出长指令格式为:

|←---主存逻辑地址----→|

在一般的计算机中,变址寄存器就是某一个通用寄存器,所以,变址寄存器字段的位数与寄存器字段的位数相同。

根据题目的要求,指令操作码可采用扩展编码,并只能用两种码长。从指令使用频度来看,ADD 、SUB 和MOV 的使用频度较高,其余六种指令的使用频度都低得多,因此,短操作码码长应取2位长,可有22

=4个码点,用其中三个码点表示这三条指令,余下一个码点作为扩展标志。用一个扩展标志再扩展表示出其余六个操作码,故还需要扩展三位,因此,长操作码码长为5位。由此,得出九条指令的2-5扩展操作码如上表所示。

2-5扩展编码的平均码长为

)(78.210

1位==∑=i i i l

p l

(3)由上述分析,可得出短指令格式中各字段的位数为

|<----2位--→|←----3位----→|←---3位-------→|

长指令格式中各字段的位数为:

|←--5位-→|←--3位----→|←----3位----→|←----5位----→|

由于寄存器的字段长度为3位,因此,该机可使用的可编址通用寄存器的个数最多为23=8个。

由于相对位移长度为5位,因此,访存变址寻址的最大相对位移量为25=32个字节。练习:

一.某模型机共有7条指令,各指令的使用频度分别为:35%﹑25%﹑20%﹑10%﹑5%﹑3%﹑2%,共有8个通用寄存器和2个变址寄存器。

(1)请设计7条指令的哈夫曼编码,并计算操作码的平均码长。

(2)若要求设计8位长的R-R型指令3条,16位长R-M型变址寻址指令4条,变址范围为-127~+127,请设计指令格式,并给出指令各字段的长

度和操作码编码。

解:

(1)哈夫曼树如下图所示(略),得到的哈夫曼编码如下表第3列所示,由此得到的7条指令操作码的平均码长为:

L=∑P

I L

I

=2.35(位)

(2) 3条8位长的R-R型指令的格式如下:

2位 3位 3位

由于有8个通用寄存器,所以指令中的寄存器字段应为3位,短操作码字

段应有2位,2位码可以表示4个指令码,用其中的3个码点“00”﹑“01”

﹑“10”表示3条8位的短指令的操作码,余下1个码点“11”作为长码

13

的扩展标志。

4条16位长的R-M型变址寻址指令的格式为:

4位 3位 1位 8位

由于有两个变址寄存器,所以变址寄存器号字段只有1位;由于变址范

围是-127~+127,所以相对位移字段为8位:因此剩下的4位(因为

16-3-1-8=4)用来表示操作码,其中2位为扩展标示位,另外扩展的2

位刚好表示4条指令的操作码。

采用上述3/4扩展遍码时,使用频率高的指令用短码表示,使用频率低

的用长码表示,得到的3/4扩展遍码如上表第4列所示。

二.★为了显示不同指令系统的性能,

1.请用

(1)三地址指令系统处理机;

(2)二地址指令系统处理机;

(3)二地址多通用寄存器指令系统处理机;

(4)一地址(累加器)指令系统处理机;

(5)零地址指令系统处理机;

分别写出计算下式X数值的五个汇编语言程序,程序都用直接方式寻址,并设数

据A~G都已经存放在主存相应的存储单元中,计算结果存放在X单元中.

X={[A+B]*C+E*D}/{F-G}.

2.设操作码(P=1B)为8位﹑存储单元地址码(A=2B)为16位﹑一个数据(D=4B)

为32位﹑通用寄存器地址(R=0.5B)为4位.

(1) 分别统计五个程序的指令条数;

(2) 分别统计五个程序的访存次数,其中包括存取指令和读取操作数的访存

次数;

(3) 分别统计五个程序指令所用的存储空间(因为不同程序中用的存储空间

大致相同,所以不必统计);

(4) 分别统计五个程序的访存信息量(即所有访存操作所存取的指令和数据

14

的字节数的总和).

3.将五个程序按所用的存储空间大小和访存信息量排队,说明5种指令系统的程序运

行时的时空开销.

解:

1. 计算X数值的五个程序:

(1)三地址指令系统编写的程序为:

1 ADD X,A,B ;X 中暂存

2 MUL X,X,C ;X 中暂存

3 MUL Y,D,E ;Y 中暂存

4 ADD X,X,Y ;X 中暂存

5 SUB Y,F,G ;Y 中暂存

6 DIV X,X,Y ;X 中存计算结果

(2)二地址指令系统的程序为:

1 MOVE X,A

2 ADD X,B

3 MUL X,C

4 MOVE Y,D

5 MUL Y,E

6 ADD X,Y

7 MOVE Y,F

8 SUB X,Y

9 DIV X,Y

(3)二地址多通用寄存器指令系统的程序为:

1 MOVE R1,A

2 ADD R1,B

3 MUL R1,C

4 MOVE R2,D

5 MUL R2,E

15

6 ADD R1,R2

7 MOVE R2,F

8 SUB R2,G

9 DIV R1,

10 MOVE X,R1

(4)一地址(累加器)指令系统的程序为:

1 LOAD F

2 SUB G

3 STORE X

4 LOAD A

5 ADD B

6 MUL C

7 STORE Y

8 LOAD D

9 MUL E

10 ADD Y

11 DIV X

12 STORE X

(5)零地址指令系统的程序为:

1 PUSH A

2 PUSH B

3 ADD

4 PUSH C

5 MUL

6 PUSH D

7 PUSH E

8 MUL

9 ADD

16

10 PUSH F

11 PUSH G

12 SUB

13 DIV

14 POP

2.五个程序的指令条数﹑访存次数和访存信息量

(1)用三地址指令编的程序共用6条指令,每条指令含1个操作码,2个源操作数

地址和1个目的操作数地址,每条指令的字长为P+3A=1B+3*2B=7B。程序所用的存储量为6*7B=42B。(因为操作码占一个字节,地址码占两个字节。)

每条指令需4次访存:

其中取指令访存1次,访存信息量为7B;取2个源操作数需访存2次,访存信息量为2D=2*4B=8B;存计算结果访存1次,访存信息量为1D=4B。所以,执行一条指令的访存信息量为7B+8B+4B=19B。执行整个程序的访存信息量为

6*19B=114B。

(2)用二地址指令编的程序共用9条指令,每条指令含1个操作码,2个源操作数地

址且第1个源操作数地址也是目的操作数地址;或者是1个是源操作数地址一个是目的操作数地址。每条指令的字长为P+2A=1B+2*2B=5B。程序所用的存储量为9*5B=45B。

前者每条指令所需访存读/写操作数的次数如下表所示。程序执行的访存信息量包括:取9条指令的访存信息量9*5B=45B;15次取源操作数的访存信息量15*4B=60B;9次存结果数据的访存信息量9*4B=36B。所以,程序执行的访存信息量为

45B+60B+36B=141B.

(3)用二地址多通用寄存器指令编的程序共用10条指令,每条指令含1个操作

码,2个源操作数地址且第1个源操作数地址也是目的操作数地址;或者是1个是源操作数地址一个是目的操作数地址。源操作数地址和目的操作数地址可以是存储单元地址,也可以是寄存器地址。由程序可知,有2条指令的2个操作数地址是寄存存器地址,指令字长为P+2R=1B+2*0.5B=2B,其余指令2个操作数地址都1个是存储单元地址1个是寄存器地址,指令字长为P+A+R=1B+2B+0.5B=3.5B。所以, 程序所用的存储量为2*2B+8*3.5B=32B.

17

10条指令所需访存读/写操作数的次数如下表所示。程序执行的访存信息量:包括取10条指令的访存信息量32B;7次取源操作数的访存信息量7*4B=28B;

1次存结果数据的访存信息量4B。所以,程序执行的访存信息量为

32B+28B+4B=64B.

(4)用一地址指令编的程序共用12条指令,每条指令含1个操作码,1个源操作数

地址或目的操作数地址;前者把源操作数取到累加器中,或者与累加器中暂存的操作数进行运算,将结果仍暂存于累加器中;后者把暂存于累加器中的数据送入目的地址指定的存储单元中。每条指令的字长为P+A=1B+2B=3B。所以,程序占用的存储量为12*3B=36B。每条指令的执行需2次访存:其中的1次为取指令,访存信息量为指令字长3B;另1次是取1个源操作数或存结果数据访存,访存信息量是1D=4B。总之,1条指令的执行访存信息量为3B+4B=7B。

整个程序执行的访存信息量等于12*7B=84B。

(5)用零地址指令编的程序共用14条指令。零地址指令是堆栈型,指令,堆栈是内存中的1个专用区域,专门用来存放堆栈型指令的操作数。

PUSH指令把指定存储单元中的操作数压入栈顶,指令字长为P+A=1B+2B=3B。

一共需要3次访存:其中1次为取指令,1次为取操作数,1次为压入栈顶。

POP指令是把栈顶的操作数弹出并送入指定的存储单元中,指令字长为P+A=1B+2B=3B。也要访存3次:1次取指,1次取栈顶操作数,1次存操作数。

PUSH和POP指令的访存信息量均为P+A+2D=3B+8B=11B。

其余运算型堆栈指令的指令字长都是P+1B,每条指令都是取栈顶和次栈顶的2个源操作数进行运算,然后把运算结果压入栈顶。指令字长为P+1B。每条指令需4次访存:取指1次,取2个源操作数2次,把结果压入栈顶1次。,每条运算指令执行的访存信息量为P+3D=1B+3*4B=13B。

程序中有PUSH和POP指令8条,其余运算指令6条,所以,整个程序的存储量为:

8*(P+A)+6*P=8*3B+6*1B=30B.

整个程序的访存信息量为:

8*(P+A+2D)+6*(P+3D)= 8*11B+6*13B=166B.

18

不同指令编程的访存次数

3.五个程序的时空开销排序

用不同指令系统编程的程序存储量和访存信息量如下表所示:

由表可见,不同指令系统编程的程序存储量差别不大,但是,决定程序执行速

度的访存信息量却有较大的差别。所以,5个程序的时空开销的优劣可按访存

信息量的大小来排序。时空开销最小的是用二地址多通用寄存器指令系统编的

程序;时空开销最大的是用零地址指令系统编的程序。

19

5种不同指令编程的比较

20

《计算机原理学习指导》第四章指令系统综合练习题参考答案

《计算机原理学习指导》第四章指令系统综合练习题参考答案 一、填空题 1 、一个完善的指令系统应满足以下 4 个方面的要求,它们是:完备性、有效性、规整性和兼容性。 2、一条完整的指令是由操作码和地址码(操作数)两部分信息组成的。 3 、指令中的地址码字段包括源操作数的地址和操作结果数的 地址 (目的操作数的 地址),前者用语指明操作数的存放处,后者用语存放运算的结果。 4 、指令格式按地址码部分的地址个数可以分为零地址指令格 式、 一地址指令格式、二地址指令格式和三地址指令格式。 5、常见的操作码方法有定长操作码和扩展操作码。 6、逻辑运算指令包括逻辑乘(与)、逻辑加(或)、逻辑非(求反)和异 或(按位加)等操作。 二、单项选择题 1 、直接、间接、立即 这 3 种寻址方式指令的执行速度有快到慢的排序是( C ) A .直接、立即、间接 B .直接、间接、立 即 C .立即、直接、间接 D .立即、间接、直 接 2 、指令系统中采用不同寻址方式的目的是 ( B ) A .实现存储程序和程序控制 B .缩短指令长度,扩大寻址空间,提高编程灵 活性 C .可以直接访问外存 D .提高扩展操作码的可能并降低指令译码难度 3 、一地址指令中为了完成两个数的算术运 算, 除地址码指明的一个操作数 外,另 一个数常采用( C ) A .堆栈寻址方式 B .立即寻址方式 C .隐含寻址方式 D .间接寻址方 式 4 、对某个寄存器中操作数的寻址方式称为 ( C )寻址方式 A .直接 B .间接 C .寄存器直接 D .寄存器间接 5 、寄存器间接寻址方式中,操作数在( B ) A .通用寄存器 B .主存单元 C .程序计数器 D .外存 6 、变址寻址方式中,操作数的有效地址等于 ( C ) A .基址寄存器内容加上偏移量 B .堆栈指示器内容加上偏移量 C .变址寄存器内容加上偏移量 D .程序计数器内容加上偏移量 7 、扩展操作码是 ( D ) A .操作码字段中用来进行指令分类的代码 B .指令格式中不同字段设置的操作码 C.操作码字段外用来操作字段的代码 D.一种指令优化技术,即让操作码的长度随地址数的变化而变化 8 A 、下面关于汇编语言的叙述中,不恰当的是( D ) .对程序员的训练要求来说,需要硬件知识 B .汇编语言对机器的依赖性强 C.用汇编语言编写程序的难度比高级语言大D.用汇编语言编写的程序执行速度比高级语言慢9 A

第五章 指令系统习题

第五章指令系统 一、选择题 1、采用直接寻址,操作数在中。 A、主存 B、寄存器 C、硬盘 D、光盘 2、为了缩短指令中某个地址段的位数,有效的方法是采取。 A、立即寻址 B、变址寻址 C、间接寻址 D、寄存器寻址 3、指令系统采用不同寻址方式的目的是。 A、实现存储程序和程序控制 B、缩短指令长度,扩大寻址空间,提高编程灵活性 C、可以直接访问外存 D、提供扩展操作码的可能,并降低指令译码难度 4、假设寄存器R中的数值为200,主存地址为200和300的地址单元中存放的内容分别是300和400,则方式下访问到的操作数为200。 A、直接寻址200 B、寄存器间接寻址(R) C、存储器间接寻址(200) D、寄存器寻址R 5、输入输出指令的功能是。 A、进行算术运算和逻辑运算 B、进行主存和CPU之间的数据传送 C、进行I/O设备和CPU之间的数据传送 D、改变程序执行的顺序 6、下列关于RISC的描述中,不正确的是。 A、只选用简单的,使用频率高的指令,所以采用RISC的CPU的性能较差,不能运行复杂的指令 B、指令长度固定,指令格式和寻址方式少 C、采用硬布线逻辑,提高指令执行的速度 D、采用指令流水线技术,大部分指令都能在一个机器周期中完成。 7、间接寻址是指。 A、指令中直接给出操作数地址 B、指令中直接给出操作数 C、指令中间接给出操作数 D、指令中间接给出操作数的地址 8、基址寻址方式中,操作数的有效地址等于。 A、基址寄存器的内容加上形式地址(偏移量) B、变址寄存器的内容加上形式地址(偏移量) C、程序计数器的内容加上形式地址(偏移量) D、堆栈寄存器的内容加上形式地址(偏移量) 8.通常指令编码的第一个字段是__ __ A.操作 B.指令 C.操作码 D.控制码 9.堆栈常用于 _ A.程序转移 B.输入输出 C.数据移位 D.保护程序现场 10.在堆栈中保持不变的是_ _ A.栈指针 B.栈底 C.栈顶 D.栈中数据 11.设寄存器R=1000,地址1000处的值为2000,2000处为3000,PC的值为4000,用相对寻址方式,-2000(PC)的操作数是__ __ A.4000 B.3000

Excel电子表格

四、Excel电子表格 1、在Excel 2010中,数据源发生变化时,相应的图表______。 A、自动跟随变化 B、需要人为修改 C、不跟随变化 D、不受任何影响 标准答案:A 2、在Excel2010的图表中,水平X轴通常用来作为________。 A、排序轴 B、分类轴 C、数值轴 D、时间轴 标准答案:B 3、在Excel 2003图表中,通常使用垂直Y轴作为______。 A、公式轴 B、数值轴 C、分类轴 D、文本轴 标准答案:B 4、Exce12010中的电子工作表具有______。 A、一维结构 B、二维结构 C、三维结构 D、树结构 标准答案:B 5、用来给电子工作表中的列标进行编号的是_______。 A、数字 B、英文字母 C、文本 D、任息字符 标准答案:B 6、在Excel 2010中,单元格名称的表示方法是_______。 A、列标在前行号在后 B、行号在前列标在后 C、只包含列标 D、只包含行号 标准答案:A 7、Exce12010的每个工作表中,最小操作单元是______。 A、单元格 B、一行 C、一列 D、一张表 标准答案:A 8、用来给单子工作表中的行号进行编号的是______。 A、数字 B、字母 C、数字与字母混合 D、字母或数字 标准答案:A 9、在一个Excel 2010的工作表中,第5列的列标为______。 A、C B、D C、E D、F 标准答案:C 10、若一个单元格的地址为F5,则其右边紧邻的一个单元格的地址为_______。

A、F6 B、G5 C、E5 D、F4 标准答案:B 11、若一个单元格的地址为F5,则其下边紧邻的一个单元格的地址为_________。 A、F6 B、G5 C、E5 D、F4 标准答案:A 12、在Excel2010的自动筛选中,每个标题上的下三角按钮都对应一个________。 A、下拉菜单 B、对话框 C、窗口 D、工具栏 标准答案:A 13、在Excel 2010中,右键单击一个工作表的标签不能够进行_______。 A、插入一个工作表 B、删除一个工作表 C、重命名一个工作表 D、打印一个工作表 标准答案:D 14、在Excel 2010中,若需要删除一个工作表,右键单击它的表标签后,从弹出的菜单列表中选择______。 A、“重命名”选项 B、“插入”选项 C、“删除“选项 D、“工作表标签颜色”选项 标准答案:C 15、当向Exce1 2010工作薄文件中插入一张电子工作表时。表标签中的英文单词为______。 A、Sheet B、Book C、Table D、List 标准答案:A 16、在具有常规格式的单元格中辅入文本后.其显示方式是______。 A、左对齐 B、右对齐 C、居中 D、随机 标准答案:A 17、在Excet2010的单元格格式对话框中,不存在的选项卡是______。 A、货币选项卡 B、数字选项卡 C、对齐选项卡 D、字休选项卡 标准答案:A 18、对电子工作表中所选择的区域不能够进行操作的是______。 A、调整行高尺寸 B、调整列宽尺寸 C、修改条件格式 D、保存文档 标准答案:D 19、在Excel 2010的工作表中,______。 A、行和列都不可以被隐藏 B、只能隐藏行 C、只能隐藏列 D、行和列都可以被隐藏 标准答案:D

汇编语言知识大全

第一章基础知识: 一.机器码:1.计算机只认识0,1两种状态。而机器码只能由0,1组成。故机器码相当难认,故产生了汇编语言。 2.其中汇编由三类指令形成:汇编指令(有机器码对应),伪指令,其他符号(编译的时候有用)。 每一总CPU都有自己的指令集;注意学习的侧重点。 二.存储器:1.存储单元中数据和指令没任何差别。 2.存储单元:Eg:128个储存单元(0~127)128byte。 //1字节=1B=1byte=8bit 条件反射:1存储单元=1B=8个2进制;以后的ax,cs之类的占两个存储单元, ah之类的占一个 3.CPU对存储器的读写:地址信息+控制信息+数据信息 三.总线: 1.地址总线:寻址用,参数(宽度)为N根,则可以寻到 2^N个内存单元。 //因为一根总线只能表示0,1,N 根的话可以表示2^N 2.数据总线:传送数据用,参数为N根,一次可以传送N/8个存储单元。 3.控制总线:cpu对元器件的控制能力。越多控制力越强。

四.内存地址空间: 1.由地址总线决定大小。 2.主板:cpu和核心器件(或接口卡)用地址总线,数据总线,控制总 线连接起来。 3.接口卡:由于cpu不能直接控制外设,需通过接 口卡间接控制。 4.各类存储器芯片:RAM,BIOS(主板,各芯片)的ROM,接卡槽的 RAM CPU在操控他们的时候,把他们都当作内存来对待,把他们总的 看作一个由 若干个存储单元组成的逻辑存储器,即我们所说的内存地址空间。 自己的一点理解:CPU对内存的操作是一样的,但是在cpu,内存,芯片之间的硬件本身所牵扯的线是不同的。所以一些地址的功能是对应 一些芯片的。 第二章寄存器 引入:CPU中含有运算器,寄存器,控制器(由内部总线连接)。而 寄存器是可以用来指令读写的部件。8086有14个寄存器(都是16位,2个存储空间)。 一.通用寄存器(ax,bx,cx,dx),16位,可以分为高低位

指令章节

指令流水线 1、机器指令 2、操作数类型和操作类型 3、寻址方式说明:有效地址的概念、数据寻址和指令寻址、常见的寻址方式 4、指令格式说明:指令的基本格式、定长操作码指令格式、扩展操作码指令格式。RISC 和CISC 一、选择题 1.一条指令中包含的信息有() A.操作码、控制码; B.操作码、向量地址; C.操作码、信息码。 D.操作码、地址码。 2、指令采用不同寻址方式的目的是() A、可减低编程难度 B、可降低指令的译码难度 C、缩短指令字长,扩大寻址空间,提高编程灵活性 D、以上均不正确 3、一地址指令中,为完成两个数的算术运算,除地址码指明的一个操作数外,另一个数常采用()。 A、直接寻址 B、立即寻址 C、隐含寻址 D、以上都有可能 4、二地址指令中,操作数的物理位置可以安排在() Ⅰ两个主存单元Ⅱ两个寄存器Ⅲ一个主存单元和一个寄存器 A、Ⅰ和Ⅱ B、Ⅱ和Ⅲ C、Ⅰ和Ⅲ D、Ⅰ和Ⅱ及Ⅲ 5、四地址指令OPA1A2A3的功能为(A1)OP(A2)→(A3),且A4给出下一条指令地址,假设A1、A2、A3、A4都为主存储器地址,则完成下述指令需要访存()次。 A、2 B、3 C、4 D、5 6、某指令系统有200条指令,对操作码采用固定长度二进制编码是,最少需要()位。 A、4 B、8 C、16 D、32 7、某寄存器采用16位单字长指令,采用定长操作码,地址码为5位,现定义60条二地址指令,则单地址指令最多有()条。 A、4 B、32 C、128 D、256 8、指令寄存器的位数取决于()。 A.存储器的容量; B.指令字长; C.机器字长; D.存储字长。

常用电子表格公式

常用电子表格公式 1、查找重复内容公式:=IF(COUNTIF(A:A,A2)>1,"重复","")。 2、用出生年月来计算年龄公式: =TRUNC((DAYS360(H6,"2009/8/30",FALSE))/360,0)。 3、从输入的18位身份证号的出生年月计算公式: =CONCATENATE(MID(E2,7,4),"/",MID(E2,11,2),"/",MID(E2,13,2))。 4、从输入的身份证号码内让系统自动提取性别,可以输入以下公式: =IF(LEN(C2)=15,IF(MOD(MID(C2,15,1),2)=1,"男","女 "),IF(MOD(MID(C2,17,1),2)=1,"男","女"))公式内的“C2”代表的是输入身份证号码的单元格。 1、求和: =SUM(K2:K56) ——对K2到K56这一区域进行求和; 2、平均数: =AVERAGE(K2:K56) ——对K2 K56这一区域求平均数; 3、排名: =RANK(K2,K$2:K$56) ——对55名学生的成绩进行排名; 4、等级: =IF(K2>=85,"优",IF(K2>=74,"良",IF(K2>=60,"及格","不及格"))) 5、学期总评: =K2*0.3+M2*0.3+N2*0.4 ——假设K列、M列和N列分别存放着学生的“平时总评”、“期中”、“期末”三项成绩; 6、最高分: =MAX(K2:K56) ——求K2到K56区域(55名学生)的最高分; 7、最低分: =MIN(K2:K56) ——求K2到K56区域(55名学生)的最低分; 8、分数段人数统计: (1) =COUNTIF(K2:K56,"100") ——求K2到K56区域100分的人数;假设把结果存放于K57单元格; (2) =COUNTIF(K2:K56,">=95")-K57 ——求K2到K56区域95~99.5分的人数;假设把结果存放于K58单元格; (3)=COUNTIF(K2:K56,">=90")-SUM(K57:K58) ——求K2到K56区域90~94.5分的人数;假设把结果存放于K59单元格;

)1MCS51单片机的指令格式中操作码与操作数之间必须用...

第2章汇编语言----智能电子产品的指令系统 判断题 ()1.MCS—51单片机的指令格式中操作码与操作数之间必须用“,”分隔。 ()2.MCS—51指令:MOV A,#40H ;表示将立即数40H 传送至A 中。 ()3.MCS—51指令:MOV A,@R0 ;表示将R0指示的地址单元中的内容传送至A 中。()4.MCS—51 指令:MOVX A,@DPTR ;表示将DPTR 指示的地址单元中的内容传送至A 中。 ()5.MCS—51 的数据传送指令是把源操作数传送到目的操作数,指令执行后,源操作数改变,目的操作数修改为源操作数。 ()6.MCS—51指令中,MOVX 为片外RAM 传送指令。 ()7.MCS—51指令中,MOVC 为ROM 传送指令。 ()8.将37H 单元的内容传送至A的指令是:MOV A,#37H。 ()9.MCS—51指令中,16 位立即数传送指令是:MOV DPTR,#data16。 ()10.MCS—51 单片机,CPU 对片外RAM 的访问只能用寄存器间接寻址的方式,且仅有4 条指令。 ()11.如JC rel 发生跳转时,目标地址为当前指令地址加上偏移量。 ()12.对于8051 单片机,当CPU 对内部程序存储器寻址超过4K 时,系统会自动在外部程序存储器中寻址。 ()13.指令MUL AB 执行前(A)=F0H,(B)=05H,执行后(A)=FH5,(B)=00H。()14.已知:DPTR=11FFH 执行INC DPTR 后,结果:DPTR=1200H。 ()15.已知:A=11H B=04H,执行指令DIV AB后,其结果:A=04H,B=1 CY=OV=0。()16.已知:A=1FH,(30H)=83H,执行ANL A,30H 后,结果:A=03H (30H)=83H P=0。 ()17.无条件转移指令LJMP addr16 称长转移指令,允许转移的目标地址在128KB 空间范围内。 ()18.MCS—51 指令系统中,执行指令FGO bit F0 ,表示凡用到F0 位的指令中均可用FGO 来代替。 ()19.MCS—51指令系统中,执行指令ORG 2000H;BCD:DB “A,B,C,D”表示将A、B、C、D 的ASII 码值依次存入2000H 开始的连续单元中。

单片机汇编语言指令集

汇编语言的所有指令数据传送指令集 MOV 功能: 把源操作数送给目的操作数 语法: MOV 目的操作数,源操作数 格式: MOV r1,r2 MOV r,m MOV m,r MOV r,data XCHG 功能: 交换两个操作数的数据 语法: XCHG 格式: XCHG r1,r2 XCHG m,r XCHG r,m PUSH,POP 功能: 把操作数压入或取出堆栈 语法: PUSH 操作数POP 操作数 格式: PUSH r PUSH M PUSH data POP r POP m PUSHF,POPF,PUSHA,POPA 功能: 堆栈指令群 格式: PUSHF POPF PUSHA POPA LEA,LDS,LES 功能: 取地址至寄存器 语法: LEA r,m LDS r,m LES r,m XLAT(XLATB) 功能: 查表指令 语法: XLAT XLAT m 算数运算指令 ADD,ADC 功能: 加法指令 语法: ADD OP1,OP2 ADC OP1,OP2 格式: ADD r1,r2 ADD r,m ADD m,r ADD r,data 影响标志: C,P,A,Z,S,O SUB,SBB 功能:减法指令 语法: SUB OP1,OP2 SBB OP1,OP2 格式: SUB r1,r2 SUB r,m SUB m,r SUB r,data SUB m,data 影响标志: C,P,A,Z,S,O

INC,DEC 功能: 把OP的值加一或减一 语法: INC OP DEC OP 格式: INC r/m DEC r/m 影响标志: P,A,Z,S,O NEG 功能: 将OP的符号反相(取二进制补码) 语法: NEG OP 格式: NEG r/m 影响标志: C,P,A,Z,S,O MUL,IMUL 功能: 乘法指令 语法: MUL OP IMUL OP 格式: MUL r/m IMUL r/m 影响标志: C,P,A,Z,S,O(仅IMUL会影响S标志) DIV,IDIV 功能:除法指令 语法: DIV OP IDIV OP 格式: DIV r/m IDIV r/m CBW,CWD 功能: 有符号数扩展指令 语法: CBW CWD AAA,AAS,AAM,AAD 功能: 非压BCD码运算调整指令 语法: AAA AAS AAM AAD 影响标志: A,C(AAA,AAS) S,Z,P(AAM,AAD) DAA,DAS 功能: 压缩BCD码调整指令 语法: DAA DAS 影响标志: C,P,A,Z,S 位运算指令集 AND,OR,XOR,NOT,TEST 功能: 执行BIT与BIT之间的逻辑运算 语法: AND r/m,r/m/data OR r/m,r/m/data XOR r/m,r/m/data TEST r/m,r/m/data NOT r/m 影响标志: C,O,P,Z,S(其中C与O两个标志会被设为0) NOT指令不影响任何标志位 SHR,SHL,SAR,SAL 功能: 移位指令 语法: SHR r/m,data/CL SHL r/m,data/CL SAR r/m,data/CL SAL r/m,data/CL

汇编指令机器码总结

汇编指令机器码总结与验证 摘要:本文介绍了汇编指令机器码的含义与作用,并讨论了指令的组成结构即操作码与地址码。然后全面总结了机器码中的单字节操作码,并利用Debug工具进行了详细的验证。 关键词:指令;机器码 一、机器码概述[1] 机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。这种指令集就称为机器码,它是电脑的CPU可直接解读的数据。一条指令是机器语言的一个语句,是一组有意义的二进制代码。计算机通过执行指令来处理各种数据。 为了指出数据的来源、操作结果的去向及所执行的操作,一条指令必须包含下列信息: a) 操作码 b) 操作数的地址 c) 操作结果的存储地址 d) 下条指令的地址 一条指令实际上包括两种信息即操作码和地址码。操作码用来表示该指令所要完成的操作(如加、减、乘、除、数据传送等),其长度取决于指令系统中的指令条数。地址码用来描述该指令的操作对象,它或者直接给出操作数,或者指出操作数的存储器地址或寄存器地址(即寄存器名)。 二、机器码详解[2] 由上文已知,一条指令一般由操作码和地址码组成。其中,操作码是指明CPU对内存或寄存器中的数据进行什么样的操作,地址码给出这些数据对象。下面我们就将指令分为两部分进行研究。1.操作码 操作码一般占用1个字节(8位)或2个字节(16位)。其中最低比特(记作W)在很多指令中表示目标操作数的位宽,W=0表示字节长(8位)操作数,W=1表示双字节长(16位)操作数。例如,操作码00000000B(W=0)表示“ADD 8位寄存器,8位寄存器”,而00000001B(W=1)表示“ADD 16位寄存器,16位寄存器”。 2.地址码 地址码一般占用1个字节,其中的8个比特位可分为三组,形式一般为“oommmrrr”。这些分组大致可分为以下四个类型: 1) “oo”——表示指令的地址偏移量类型 a) 00:如果mmm=110,那么指令后紧跟一个地址偏移量;否则未使用地址偏移量 b) 01:指令后紧跟一个8比特无符号地址偏移量 c) 10:指令后紧跟一个16比特无符号地址偏移量 d) 11:此时mmm表示一个寄存器而不是地址

简单的excel表格制作

EXCEL表格制作及应用 1、新建一个EXCEL文件:在桌面或任何磁盘里右键——新建——EXCEL。 2、打开文件如下: 3、在打开的EXCEL里点第一格,写表头,写完表头后再在第二行依次写你需要的项目: 在写这些项目时,不要管它格子大小,只要依次在每一个格子里写就可以了。 4、用鼠标选定第二行你所需要的格子,然后往下拖,拖到你想要的行数。

这时,所需要的表格颜色改变,一般为蓝色。 5、鼠标移到工具栏: 点开中的三角,这时会出现许多选项,点击“田”字格,这时就会看到表格发生变化:

这时,把鼠标指向表格最上端A、B之间,鼠标会出现双向箭头,按左键,把格子拖到你需要的大小, 再选中第二行一下的所有表格,鼠标点击工具栏 中这时表格中所有字就会居中了。 6、鼠标选定第一行到表格的最后一格,然后点击工具栏中合并居中。 右键第一行,点击设置单元格格式,

点对齐,把水平对齐和垂直对齐都选为剧中,再确定。这时,表格基本上制作完成。 7、在表格的序号下面第一格写1,第二个写2,鼠标选中1、2,这时把鼠标移到2的右下 角,出现一个加号,按左键往下拖,这时序号就出来了。 8、接下来就是编辑表格了,写入你要写的数据等。当你写入身份证号码时,会出现如下:

把鼠标移到C处,出现向下的一个箭头,点击,这时C列的所有表格将被选中,右键——设置单元格格式——数字——数值。这时把小数位数设为0, 确定即可。 这时,身份证号就出来了。写完出勤天数和月工资,但有的不是满勤,所以工资就不是那么多了,点合计下的那一格(不要双击),输入“=”,鼠标点击月工资下的那一格(如本表格3000,直接写3000也行),再输入“/”(也就是除以,在键盘右下角,也就是“、”号,但这时必须用切换键把它切换成“/”。按一次SHIFT键即可。)再输入本月天数(如31),再输入“*”(也就是SHIFT键加数字8),再点出勤天数那一格(如本表中的30,直接写30也可以)回车(确定)即可。也就是月工资除以那一月的天数得出每天工资,再乘以出勤天数得出那月张三的工资。如图:

汇编语言指令2

1. 逻辑运算指令 指令格式 执行操作 AND dst ,src (dst ) ← (dst )∧(src ) OR dst ,src (dst ) ← (dst )∨(src ) NOT oprd (oprd )← (oprd ) XOR dst ,src (dst ) ← (dst )∨(src ) TEST oprd1,oprd2 (oprd1)∧(oprd2) 2. 移位指令 SHL oprd, 1 CL SAL oprd, 1 CL SHR oprd, 1 CL SAR oprd, 1 CL CF CF CF CF 执行操作 指令格式

▲ 左移: 高位 ← 低位 右移: 高位 → 低位 ▲ 移出位进入CF 标志 ▲ 对移位指令,移出CF 标志后丢失 ▲ 逻辑左移、算术左移的结果相同 ▲ 逻辑右移,新移入的信息以0填入 算术右移,保持最高有效位原来的值(符号为不变) 3. 循环移位指令 指令格式 执行操作 CF CF CF CF ROL oprd, 1 CL ROR oprd, 1 CL RCL oprd, 1 CL RCR oprd, 1 CL ROL CF CF ROR CF CF RCL RCR

▲左移:高位←低位 右移:高位→低位 ▲移出位进入CF标志 ▲对循环移位指令,改变各位的位置,信息不丢失▲带进位循环移位,CF标志参加循环移位 注意事项: SHL AL, 1 SHR AL, CL ROL BX, 1 RCR AL, CL 源操作数为移位的次数 目的操作数类型决定操作类型 对标志位的影响 ▲移位指令: ①据结果设置CF、SF、ZF、PF,对AF无定义 ②OF只在移位次数为1时有效,其他无定义 移位后,最高有效位发生变化,则OF=1,否则为0 ▲对循环移位指令: ①据移位结果设置CF,对其他标志无影响 ②OF标志与移位指令同

汇编语言指令

汇编语言指令集 数据传送指令集 MOV 功能: 把源操作数送给目的操作数 语法: MOV 目的操作数,源操作数 格式: MOV r1,r2 MOV r,m MOV m,r MOV r,data XCHG 功能: 交换两个操作数的数据 语法: XCHG 格式: XCHG r1,r2 XCHG m,r XCHG r,m PUSH,POP 功能: 把操作数压入或取出堆栈 语法: PUSH 操作数POP 操作数 格式: PUSH r PUSH M PUSH data POP r POP m PUSHF,POPF,PUSHA,POPA 功能: 堆栈指令群 格式: PUSHF POPF PUSHA POPA LEA,LDS,LES 功能: 取地址至寄存器 语法: LEA r,m LDS r,m LES r,m XLAT(XLATB) 功能: 查表指令 语法: XLAT XLAT m 算数运算指令 ADD,ADC 功能: 加法指令 语法: ADD OP1,OP2 ADC OP1,OP2 格式: ADD r1,r2 ADD r,m ADD m,r ADD r,data 影响标志: C,P,A,Z,S,O SUB,SBB 功能:减法指令 语法: SUB OP1,OP2 SBB OP1,OP2

格式: SUB r1,r2 SUB r,m SUB m,r SUB r,data SUB m,data 影响标志: C,P,A,Z,S,O INC,DEC 功能: 把OP的值加一或减一 语法: INC OP DEC OP 格式: INC r/m DEC r/m 影响标志: P,A,Z,S,O NEG 功能: 将OP的符号反相(取二进制补码) 语法: NEG OP 格式: NEG r/m 影响标志: C,P,A,Z,S,O MUL,IMUL 功能: 乘法指令 语法: MUL OP IMUL OP 格式: MUL r/m IMUL r/m 影响标志: C,P,A,Z,S,O(仅IMUL会影响S标志) DIV,IDIV 功能:除法指令 语法: DIV OP IDIV OP 格式: DIV r/m IDIV r/m CBW,CWD 功能: 有符号数扩展指令 语法: CBW CWD AAA,AAS,AAM,AAD 功能: 非压BCD码运算调整指令 语法: AAA AAS AAM AAD 影响标志: A,C(AAA,AAS) S,Z,P(AAM,AAD) DAA,DAS 功能: 压缩BCD码调整指令 语法: DAA DAS 影响标志: C,P,A,Z,S 位运算指令集 AND,OR,XOR,NOT,TEST 功能: 执行BIT与BIT之间的逻辑运算 语法: AND r/m,r/m/data OR r/m,r/m/data XOR r/m,r/m/data TEST r/m,r/m/data NOT r/m 影响标志: C,O,P,Z,S(其中C与O两个标志会被设为0) NOT指令不影响任何标志位SHR,SHL,SAR,SAL 功能: 移位指令 语法: SHR r/m,data/CL SHL r/m,data/CL SAR r/m,data/CL SAL r/m,data/CL 影响标志: C,P,Z,S,O ROR,ROL,RCR,RCL

EXCEL电子表格的使用方法与技巧

E X C E L电子表格的使用方法 与技巧 本页仅作为文档页封面,使用时可以删除 This document is for reference only-rar21year.March

EXCEL电子表格的使用方法与技巧 1、如何添加快捷按钮区的项目? 单击“视图”→“工具栏”→“X X X” 2、如何打开已有的EXCEL文件? 单击“文件”→“打开”→“文件名”→“确定” 3、如何调整EXCEL表格的栏宽和行高? 4、如何给单元格中输入文字、数字,并设置字形、字体、字号在单元格中的位置? ①按正常的输入方法输入文字。 ②将要设置的单元格处于编辑状态。 ③单击“格式”→“单元格”,出现对话框。 ④单元格对话窗口中。 “对齐”栏,是设定单元格中文字或数字的位置,是居中、靠上、靠下等方式。 “字体”栏,是设定单元格中文字的字体,颜色等。 5、如何设置单元格中数字的小数位数? 说明:有两种方法,一种是先设置后输入,另一种是先输入后设置。 第一种方法操作过程: ①将要输入的数字的所有单元格处理编辑状态。

②单击“格式”→“单元格”→“数字”→“自定义”,出现对话框 ③在对话框的类型栏,选定要设置的小数位数项单击,再单击“确定” 好处:在输入小数数字时,不足的小数位数计算机会自动补齐。 第二种方法操作过程: ①直接输入原始数据。 ②用第一种方法进行设置。 6、如何用自动填充方法进行序列号的设置? ①在序列的第一单元格输入第一个序列号。 ②将所有要输入序列号的单元格处于编辑状态。 ③单击“编辑”→“填充”→“序列”,出现对话框。 ④在对话框的“序列产生在”栏选“行”或“列”,在“类型”栏选“等差序列”或“等比序列”等,在“步长值”栏输入步长值。 ⑤单击“确定”取消编辑。 7、遇到几个,几十个单元格相邻,且内容一样,如何简便输入? ①在该编辑区的第一单元格输入内容。 ②将要输入相同内容的单元格处于编辑状态。

汇编语言指令详解

第一讲 第三章 指令系统--寻址方式 回顾: 8086/8088的内部结构和寄存器,地址分段的概念,8086/8088的工作过 程。 重点和纲要:指令系统--寻址方式。有关寻址的概念;6种基本的寻址方式及 有效地址的计算。 教学方法、实施步骤 时间分配 教学手段 回 顾 5”×2 板书 计算机 投影仪 多媒体课件等 讲 授 40” ×2 提 问 3” ×2 小 结 2” ×2 讲授内容: 3.1 8086/8088寻址方式 首先,简单讲述一下指令的一般格式: 操作码 操作数 …… 操作数 计算机中的指令由操作码字段和操作数字段组成。 操作码:指计算机所要执行的操作,或称为指出操作类型,是一种助记符。 操作数:指在指令执行操作的过程中所需要的操作数。该字段除可以是操作数本身外,也可以是操作数地址或是地址的一部分,还可以是指向操作数地址的指针或其它有关操作数的信息。 寻址方式就是指令中用于说明操作数所在地址的方法,或者说是寻找操作数有效地址的方法。8086/8088的基本寻址方式有六种。 1.立即寻址 所提供的操作数直接包含在指令中。它紧跟在操作码的后面,与操作码一起放在代码段区域中。如图所示。 例如:MOV AX ,3000H 立即数可以是8位的,也可以是16位的。若

是16位的,则存储时低位在前,高位在后。 立即寻址主要用来给寄存器或存储器赋初值。 2.直接寻址 操作数地址的16位偏移量直接包含在指令中。它与操作码—起存放在代码段区域,操作数一般在数据段区域中,它的地址为数据段寄存器DS加上这16位地址偏移量。如图2-2所示。 例如: MOV AX,DS:[2000H]; 图2-2 (对DS来讲可以省略成 MOV AX,[2000H],系统默认为数据段)这种寻址方法是以数据段的地址为基础,可在多达64KB的范围内寻找操作数。 8086/8088中允许段超越,即还允许操作数在以代码段、堆栈段或附加段为基准的区域中。此时只要在指令中指明是段超越的,则16位地址偏移量可以与CS或SS或ES相加,作为操作数的地址。 MOV AX,[2000H] ;数据段 MOV BX,ES:[3000H] ;段超越,操作数在附加段 即绝对地址=(ES)*16+3000H 3.寄存器寻址 操作数包含在CPU的内部寄存器中,如寄存器AX、BX、CX、DX等。 例如:MOV DS,AX MOV AL,BH 4.寄存器间接寻址 操作数是在存储器中,但是,操作数地址的16位偏移量包含在以下四个寄存器SI、DI、BP、BX之一中。可以分成两种情况:

计算机组成原理作业~第四章

一、选择题 1、以下四种类型指令中,执行时间最长的是__C__。 A. RR型 B. RS型 C. SS型 D.程序控制指令 2、Intel80486是32位微处理器,Pentium是__D__位微处理器。 A.16 B.32 C.48 D.64 3、设变址寄存器为X,形式地址为D,(X)表示寄存器X的内容,这种寻址方式的有效地址为___A__。 A. EA=(X)+D B. EA=(X)+(D) C.EA=((X)+D) D. EA=((X)+(D)) 4、在指令的地址字段中,直接指出操作数本身的寻址方式,称为__B___。 A. 隐含寻址 B. 立即寻址 C. 寄存器寻址 D. 直接寻址 5、变址寻址方式中,操作数的有效地址等于__C__。 A 基值寄存器内容加上形式地址(位移量) B 堆栈指示器内容加上形式地址(位移量) C 变址寄存器内容加上形式地址(位移量) D 程序记数器内容加上形式地址(位移量) 6、. Pentium-3是一种__A_。 A.64位处理器 B.16位处理器 C.准16位处理器 D.32位处理器 7、用某个寄存器中操作数的寻址方式称为__C__寻址。 A 直接 B 间接 C 寄存器直接 D 寄存器间接 8、某计算机的字长16位,它的存储容量是64KB,若按字编址,那么它的寻址范围是_B_。 A. 64K B.32K C. 64KB D. 32KB 9、某计算机字长32位,其存储容量为4MB,若按半字编址,它的寻址范围是__C__。 A 4M B B 2MB C 2M D 1M 10、单地址指令中为了完成两个数的算术运算,除地址码指明的一个操作数外,另一个常需 采用__C__。 A 堆栈寻址方式 B 立即寻址方式 C 隐含寻址方式 D 间接寻址方式 11、寄存器间接寻址方式中,操作数处在__D__。 A.通用寄存器 B.程序计数器 C.堆栈 D.主存单元 12、描述汇编语言特性的概念中,有错误的句子是__C__。 A. 对程序员的训练要求来说,需要硬件知识 B. 汇编语言对机器的依赖性高 C. 用汇编语言编制程序的难度比高级语言小 D. 汇编语言编写的程序执行速度比高级语言快 13、下面描述RISC机器基本概念中,正确的表述是_B___ A.RISC机器不一定是流水CPU B.RISC机器一定是流水CPU C.RISC机器有复杂的指令系统 D.其CPU配备很少的通用寄存器 14、微程序控制器中,机器指令与微指令的关系是__B__。 A. 每一条机器指令由一条微指令来执行 B. 每一条机器指令由一段微指令编写的微程序来解释执行 C. 每一条机器指令组成的程序可由一条微指令来执行 D. 一条微指令由若干条机器指令组成 15、指令周期是指__C__。

常见汇编语言指令解释:

PC是一个16位的程序计数器。用于存放和指示下一条要执行的指令的地址。寻址范围达64KB。PC有自动加1功能,以实现程序的顺序执行。PC没有地址,是不可寻址的,无法用指令对它进行读写。但在执行转移、调用、返回等指令时能自动改变其内容,以改变程序的执行顺序。 参数代表的意义: 1、Rn 表示R0~R7中的一个 2、#data 表示8位的数值 00H~FFH 3、direct 表示8位的地址 00H~FFH(指的是内部RAM或SFR的地址) 4、@Ri 表示寄存器间接寻址只能是R0或者R1 5、@DPTR 表示数据指针间接寻址 6、bit 表示位地址 7、$ 表示当前地址 常见汇编语言指令解释: 寄存器寻址 MOV A,R1将R1中的数值赋予A 直接寻址 MOV A,3AH将地址3AH中的数值赋予A 立即寻址 MOV A,#3AH将3AH数值赋予A

寄存器间址 MOV A,@R0 将 R0中地址的数值赋予A 变址寻址 MOVC A,@A+DPTR以A中的数值为地址偏移量进行查表 相对寻址 AJMP MATN跳转到行号为MATN处 位寻址 MOV C,7FH 将位地址7FH的数值赋予C MOV A,#3AH数据传输、赋值命令 PUSH direct将direct为地址的数值压入堆栈中 POP direct将direct为地址的数值弹出堆栈 XCH A,direct将direct中的数值与A进行交换 ADD A,direct将direct中的数值与 INC direct将direct中的数值加1 SUBB A,direct将A中的数值减去direct中的数值和Cy值,并保存在A中,如果想使用不带Cy减法,可以在运算前对Cy清零:CLR C DEC direct将direct中的数值减1 DA A 用于对BCD码加减法后进行10进制调整 MUL A B将A和B相乘,并把高八位放在B中,低八位放在A中 DIV A B将A和B相除,并把商放在A中,余数放在B中 ANL A,direct将A与direct中的数值进行与运算,结果保留在A 中(与运算规律:有0出0,全1出1) ORL A,direct将A与direct中的数值进行或运算,结果保留在A中(或运算规律:有1出1,全0出0) XRL A,direct将A与direct中的数值进行异或运算,结果保留在A 中(异或运算规律:全0出0,全1出0,01、10出1)

MIPS 指令系统和汇编语言

第四章MIPS指令系统和汇编语言 1.考研预测:出题特点总结 本章是对统考408内容来说,本章是新增的章节。此外北航961大纲中制定了要考MIPS 指令集,从15年961真题来看MIPS是重中之重。但是今年计组并没有指定具体的教材,但大纲明确要求掌握MIPS指令集,所以还是建议考生将《计算机组成与设计:硬件/软件接口》中文版(原版第三版或第四版)作为本章的参考书籍。 本章大致内容是MIPS的基础知识,难度并不大。考生应该将重点放在MIPS指令集的基础上,考察C语言中的语句转换为对应的MIPS指令,所以需要熟练掌握C语言中一些语句对应的MIPS指令实现。本章出题很大可能就是C语言和MIPS汇编语言之间的转换,也可能涉及到第五章CPU指令流水线等内容。 2.考研知识点系统整理:梳理考点,各个击破 3.1 指令系统概述 机器指令要素 操作码:指明进行的何种操作 源操作数地址:参加操作的操作数的地址,可能有多个。 目的操作数地址:保存操作结果的地址。 下条指令的地址:指明下一条要运行的指令的位置,一般指令是按顺序依次执行的,所以绝大多数指令中并不显式的指明下一条指令的地址,也就是说,指令格式中并不包含这部分信息。只有少数指令需要显示指明下一条指令的地址。

指令执行周期 3.2 指令格式 一台计算机指令格式的选择和确定要涉及多方面的因素,如指令长度、地址码结构以及操

作码结构等,是一个很复杂的问题,它与计算机系统结构、数据表示方法、指令功能设计等都密切相关。 指令的基本格式 一条指令就是机器语言的一个语句,它是一组有意义的二进制代码,指令的基本格式如下: ( 其中A1为第一操作数地址,A2为第二操作数地址,A3为操作结果存放地址。 这条指令的含义:(A1)OP(A2)→A3 式中OP表示双操作数运算指令的运算符号,如“+”或“–”等。 (2)二地址指令

汇编语言指令分类详解

3.1 8086/8088寻址方式 计算机中的指令由操作码字段和操作数字段组成。 操作码:指计算机所要执行的操作,或称为指出操作类型,是一种助记符。 操作数:指在指令执行操作的过程中所需要的操作数。该字段除可以是操作数本身外,也可以是操作数地址或是地址的一部分,还可以是指向操作数地址的指针或其它有关操作数的信息。 寻址方式就是指令中用于说明操作数所在地址的方法,或者说是寻找操作数有效地址的方法。8086/8088的基本寻址方式有六种。 1.立即寻址 所提供的操作数直接包含在指令中。它紧跟在 操作码的后面,与操作码一起放在代码段区域中。 如图所示。 例如:MOV AX,3000H 立即数可以是8位的,也可以是16位的。若 是16位的,则存储时低位在前,高位在后。 立即寻址主要用来给寄存器或存储器赋初值。 2.直接寻址 操作数地址的16位偏移量直接包含在指令中。它与操作码—起存放在代码段区域,操作数一般在数据段区域中,它的地址为数据段寄存器DS加上这16位地址偏移量。如图2-2所示。 例如:MOV AX,DS:[2000H];

图2-2 (对DS来讲可以省略成MOV AX,[2000H],系统默认为数据段)这种寻址方法是以数据段的地址为基础,可在多达64KB的范围内寻找操作数。 8086/8088中允许段超越,即还允许操作数在以代码段、堆栈段或附加段为基准的区域中。此时只要在指令中指明是段超越的,则16位地址偏移量可以与CS或SS或ES相加,作为操作数的地址。 MOV AX,[2000H] ;数据段 MOV BX,ES:[3000H] ;段超越,操作数在附加段 即绝对地址=(ES)*16+3000H 3.寄存器寻址 操作数包含在CPU的内部寄存器中,如寄存器AX、BX、CX、DX等。 例如:MOV DS,AX MOV AL,BH 4.寄存器间接寻址 操作数是在存储器中,但是,操作数地址的16位偏移量包含在以下四个寄存器SI、DI、BP、BX之一中。可以 分成两种情况: (1)以SI、DI、BX间接寻址,则 通常操作数在现行数据段区域 中,即数据段寄存器(DS)*16 加上SI、DI、BX中的16位偏移 量,为操作数的地址, 例如:MOV AX,[SI] 操作数地址是:(DS)*16+(SI) (2)以寄存器BP间接寻址,则操作数在堆栈段区域中。即堆栈段寄存器(SS)*16与BP的内容相加作为操作数的地址, 例如:MOV AX,[BP] 操作数地址是:(SS)*16+(BP)若在指令中规定是段超越的,则BP的内容也可以与其它的段寄存器相加,形成操作数地址。 例如:MOV AX,DS:[BP] 操作数地址是:(DS)*16+(BP)5.变址寻址 由指定的寄存器内容,加上指令中给出的8位或16位偏移量(当然要由一个

相关文档
最新文档