计算机组成原理实验指导_第1页
计算机组成原理实验指导_第2页
计算机组成原理实验指导_第3页
计算机组成原理实验指导_第4页
计算机组成原理实验指导_第5页
已阅读5页,还剩120页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机组成原理实验指导

计算机组成与系统结构实验

软件学院专业教研室

实验一:带符号数的表示方法

理论知识

一.原码表示

规则:机器数的最高一位表示符号,“0”表示正号;“1”表示负

号,后面各位用数的绝对值表示。

整数原码的定义:

[x2n>X>Q

江]原=

0>X>-2"

IX-X

[X]原为机器数的原码,X为真值,n为整数的位数。

小数原码的定义为:

\XT>X>0

[A]

原\r-xo>y>-r

[X]原为机器数的原码,X为真值。

性质:

原码最高位表示数的符号(0正号,1负号)。

对定点小数,有:

第1页

-KX<0O<X<1

O<rxl,e<l14「XI£2

0的原码不唯一:

.定点小数[+0源=0.0-0

[-0]原=1.0-0

.整数[+0源=00-0

[-0]原=10-0

二.补码表示

整数的补码:

R补上T>X>0

+X0>X>-2'(mod2n+1)

[X]补为整数X的补码,X为任意整数,n为整数的位数。

小数的补码:

Xi>x>o

[A]补=

2+X0>X>-l(mocl2)

[X]补是小数X的补码,X为任意小数,2为模数。

第2页

性质

1)0的补码唯一

整数0[+0]补=00-0

[-0]补=2n+l-00…0=2n+l=00…0(mod2n+l)

小数0[+0]补=0.00—0

[-0]补=2-0.00-0=2=0.00-0(mod

2)设[X]补=XSXn-lXn2・・XlX0,XS是补码的符号位,XS=0时,X

为正;XS=1时,X为负。

补码的表示范围是:

.正整数2n>X20

.负整数02X》-2n

整数X的补码可以写成:[X]补=2n+l・XS+X

三.反码表示

整数反码的定义

r

R反MLY2^>A>0

[(2.-1)+X0>X>-2^(mod2W1-1)

或[X]反=X(mod2n+l-l)

小数反码的定义为:

第3页

L¥l>X>0

“反-1(2—丁典)+一丫O>A>-1(mod2-2^)

或[X]反=X(mod2-2-n)

性质:

(1)0的反码不唯一,

整数0

[+0]反=00…0

[@反=(2n+l-l)+(-00-0)=11-l(mod2n+l-l)

小数0

[+0]反=0.00—0

[-0]反=2-2-n-0.00-0=1.1-l(mod2-2-n)

(2)反码与补码的关系

根据定义,当X为正数时,[X]补=[X]反;

当X为负整数时,[X]补=[X]反+1;

当X为n位负小数时,[X]补=[X]反+2-n

实验要求:

根据以上的理论知识,用VisualC++编写一个求一个字节的整数和小

数的原码,反码,补码程序。

第4页

要求:所有的数据用二进制来实现,整数和小数分别处理,要有友好

的操作界面。

第5页

实验二、数据校验码实验

理论知识

数据校验的实现原理:数据校验码是在合法的数据编码之间,加进一

些不允许出现的(非法的)编码,使合法的数据编码出现错误时成为非

法编码。这样就可以通过检测。

码距:指任何一种编码的任两组二进制代码中,其对应位置的代码最

少有几个二进制位不相同。

一、奇偶校验码

1、码距=2

2、奇偶校验码:在被传送的n位信息组上,加上一个二进制位作为

校验位,使配置后的n+1位二进制代码中1的个数为奇数(奇校验)

或偶数(偶校验)。

例:

数据奇校验编码偶校验编码

00000000100000000000000000

01110101001110101101110101

其中,最高一位为校验位,其余低八位为数据位。

3、奇偶校验码只能检测出数据代码中一位出错的情况,但无法判断

差错所发生的位置。

二、海明校验码原理

第6页

在数据位中加入几个校验位,将数据代码的码距均匀地拉大,并

把数据的每个二进制位分配在几个奇偶校验组中。当某一位出错后,

就会引起有关的几个校验位的值发生变化,不但可以发现错误,还能

指出是哪一位出错,为进一步自动纠错提供依据。

1.确定长度:

2k2n+k+l(信息为n位,校验位为k位)

2.通过信息位组成海明校验位

若数据位n=7,则校验位k=4,故海明码的总位数为11。它们的排

列关系可表示为:

海明码位号:HllH10H9H8H7H6H5H4H3H2H1

海明码:D7D6D5P4D4D3D2P3DIP2P1

3.校验位校验任务的分配.

根据海明码的编码规则,每一位海明码都有多个校验位,且被

校验的每一位的位号等于参与校验的几个校验位的位号之和。占据各

权位上的校验位按权组成的8421码,正好等于海明码的位号,即海

明码的位号Hi正好等于要校验它的校验位所占权位权值之和。

例:设有一个7位信息码位0110001,求它的海明码。

解:n=7,根据海明不等式,可求得校验位最短长度k=4。

其海明码先表示如下:

海明码位号:HllH10H9H8H7H6H5H4H3H2H1

海明码:011P400OP31P2Pl

按偶校验写出校验方程为:

Hl㊉H3㊉H5©H7㊉H9㊉HU=O(P1=H1)

H2㊉H3㊉H6㊉H7㊉H10㊉H11=O(P2=H2)

H4㊉H5㊉H6㊉H7=0(P3=H4)

H8㊉H9㊉H10㊉HU=0(P4=H8)

可得:P1=O、P2=0、P3=0、P4=0,所以0110001的海明码为

OllOOOOOlOOo

实验要求:

利用visualC++写一程序,能够对7位二进制数据,要按奇/偶校

验编码,并产生其对应的海明码编码。要求界面友好,并画出奇偶校

验的编码和校验逻辑图。

第1页

实验三、加法器

理论知识

补码加减运算规则

公式:

[X+Y]补=[X]补+[Y]补

6-丫]补=值]补+[-Y]补

例:X=0.101101,Y=-0.110100,求[X+Y]补

解:

[X]补=0.101101,[Y]补=1.001100

[X+Y]补=[X]补+[Y]补

=0.101101+1.001100

=1.111001

溢出及处理:

补码加减运算可能产生溢出,为判断溢出,采用变形补码形式.

判断溢出的原则:以两位符号位表示数的符号。当两符号位不同时,

溢出;两符号位相同时,无溢出。无论是否溢出,最高符号位代表真

正的符号。

变形补码的加减法:两个符号位都看作数值位参加运算,最高符号位

产生的进位丢掉。

第2页

二、基本的二进制加法/减法器

基本加法器:半加器和全加器。

.半加器在完成两数相加时,不考虑低位进位。

.全加器用来完成两个二进制数相加,并且同时考虑低位的进位。

通常:

Ai表示被加数的第i位

Bi表示加数的第i位

Ci为第i-1位向第i位产生的进位

Ci+1为第i位向第i+1位产生的进位

Si为第i位产生的和

表3-1全加器真值表

输入输出

AB,&

曷Ci+1

00000

00110

01010

全加器逻辑图Oil01

10010

10101

11001

11111

全加器的表达式为:

5^二Aj④Bj④t

Ci+i+AjCj

第3页

内部逻辑图:

1)串行加法:从低位开始,每步只完成一位运算的加法。

行加法器:需要一个全加器和一个进位触发器,高位运算只等低位

运算完成后才能进行,速度较慢。

2)并行加法器:可在同一时刻完成n位数的运算。

采用变形补码表示一个机器数,则符号位需2位,需要n+2个加法

器。

.运算速度比串行进位加法器高很多,用足够多的硬件设备换。

实验要求:

利用VisualC++定义一个全加器类或函数,然后完成能够计算两

个8位数相的串行加法器。(减法又如何实现?并行加法器又如何实

现?)。

第4页

实验四、乘法器

理论知识

一、原码一位乘法

算法描述

^[X]IM=Xs.Xn-lXn-2-Xi-XlXO=Xs.Xv

[Y]J^=Ys.Yn-lYn-2-Yi-YlYO=Ys.Yv

乘积田原=257丫=65丫5).这丫XYv)

运算步骤:

1)从乘数的最低位开始,用乘数B的每个二进制位去乘被乘数A,

若B的某个二进制位为1,则位积A;如为0,则位积0。

2)B的各位分别乘以A的所得的位积,因为位权不同,逐次向左移

位,即按一定位数错开,这样逐位进行下去,直到乘数各位都乘完为

止。

.3)把移位对准的各次位积相加起来即得结果。

缺点:

1)将多个数一次相加,机器难以实现。

2)乘积位数增长了一倍,即2n,而机器字长只有n位。

改进:

(a)把一次求和的操作,变成逐步累加求部分积的操作.

(b)将求积过程中逐位按权左移位积的操作,改为位积不动,而是上

次部分积右移的操作.

第5页

二、原码一位乘法逻辑结构原理图

1)乘法开始,“启动”信号使控制触发器Cx置“1”,于是开启时

序脉冲T。

2)当乘数寄存器R1最末位为“1”时,部分积Zi和被乘数X

在加法器中相加,其结果输出至R0的输入端。

3)一旦控制脉冲T到来,控制信号LDRO使部分积右移一位,R1

也在控制信号LDR1作用下右移一位,且计数器i计数一次。

4)当计数器i=n时,计数器的溢出信号使触发器Cx置“0”,关

闭时序脉冲T,乘法宣告结束。

将R0和R1连接起来,乘法结束时乘积的高n位部分在R0,

低n位部分在RI,R1中原来的乘数Y由于移位而全部丢失。

实验要求:

根据原码一位乘法逻辑结构原理图,利用VisualC++写一程序,来实

第6页

现4位*4位的原码一位乘法。(要求模拟脉冲,乘法开始的状态,以

及每一次脉冲到来后,每一个寄存器的变化情况清楚地显示出来)。

第7页

实验五、浮点算术运算方法

理论知识

1)浮点加减法运算

设两个浮点数X和y分别为:

x=Sx*2Ex

y=Sy-2Ey

其中,Ex、Ey分别是x和y的阶码,Sx和Sy是x、y的尾数。

它们都是规则化的数,即其尾数绝对值总小于1(用补码表示,

允许为Do

浮点加减运算的步骤如下:

1.对阶:小阶向大阶看齐

求阶差:Z\E=Ex-Ey

若△£=(),表示Ex=Ey,不需要对阶

若>0,表明Ex>Ey

若<0,表明Ex<Ey

对于ExWEy的这种情况,需要对阶。采用“小阶向大阶看齐”的

方法,即小阶的尾数右移4E位,小阶的阶码增加与大阶相等。

2.尾数求和(差)

对阶后,按定点加减运算求两数的尾数之和。

3.规格化

第8页

1)对于定点小数,其规格化为:

OO.lxx…x

ll.Oxx…x(原码表示法)

2)负数的补码表示,规格化有所不同。

规格化的尾数应满足:

S>0时1/2^S<1

对于S<0,用补码:-1/2>S2-1

[-1/2]补=11.10030,为了便于判别是否是规格化数,不把-1/2列为规

格化数,把-1列入规格化数。

V[-1]#=11.00-0

・•・补码规格化的浮点数应有两种形式:

OO.lxx…x

ll.Oxx…x

补码规格化:

A)若和或差的尾数两符号位相等且与尾数第一位相等,则需向左规

格化。即将和或差的尾数左移,每移一位,和或差的阶码减一,直至

尾数第一位与尾符不等时为止。

B)若和或差的尾数两符号位不等,即Ol.xx…x或lO.xx…x形式,表

示尾数求和(差)结果绝对值大于1,向左破坏了规格化。此时应该将

和(差)的尾数右移1位,阶码加1,即进行向右规格化。

4.舍入

1)“0舍1入”法,即右移时丢掉的最高位为0,则舍去;是1,则

第9页

将尾数的末位加1(相当于进入)。

2)“恒置1”法,即不管移掉的是0还是1,都把尾数的末位置lo

例:x=0.1101X1001,y=-(0.1010)X1011,求x+y

1)对阶:

假定两数在计算机中采用补码制,则

[x]补=0001,00.1101Ex=0001

[y]补=0011,11.0110Ey=0011

阶差:AE=Ex-Ey=0001+1101=1110=-2,贝!)Ex<Ey,应使x的尾数

右移2位,阶码加2,

则[x]补=0011,00.0011,对阶完毕。

2)尾数求和(差)

对阶后:

[Sx]补=00.0011,[Sy]补=11.0110

则[Sx]补+[Sy]补=11.1001

.*.[x+y]^b=0011,11.1001

3)规格化

和的尾数的两符号位相等,但小数点后的第一位也与符号位相等,

不是规格化数,需要进行左规,即向左规格化,规格化的数结果:

[x+y]补=0010,11.0010

实验要求:

利用VisualC++,写一程序,要求实现两个浮点数的加法,其中浮

第10页

点数的阶码为3位(1位为符号),尾数为5位(1位为符号)。(要求

详细展示计算的步骤。)

第11页

实验六、存储器与存储系统

理论知识

一、主存储器技术指标

存储容量:

1)存储容量是指一个功能完备的存储器所能容纳的二进制信息总量,

即可存储多少位二进制信息代码。

2)存储容量=存储字数X字长

3)要求:大容量。

存储器速度

存储器取数时间(MemoryAccessTime):

从存储器读出/写入一个存储单元信息或从存储器读出/写入

一次信息(信息可能是一个字节或一个字)所需要的平均时间。

存储器存取周期(MemoryCycleTime):

存储器进行一次完整的读写操作操作所需要的全部时间,称为

存取周期。

数据传输率

单位时间可写入存储器或从存储器取出的信息的最大数量,称

为数据传输率或称为存储器传输带宽bMo

bM=W/tM

存储周期的倒数1/tM,W表示存储器一次读取数据的宽度,

第12页

即位数。

可靠性

用平均无故障时间MTBF来衡量。

1)对于破坏性读出的存储器:设立缓冲寄存器

2)断电后信息会丢失:备用电源的方法或采用中断的技术转储

3)动态存储:定期刷新

价格

是衡量经济性能的重要指标。设C是存储容量为S位的整个存

储器以元计算的价格,可定义存储器成本c为:

c=(C/S)元/位.

二、主存储器原理图

地址寄存器MAR

地址译码器

存储体

主;存储器原理图MDR

第13页

三、位扩展组成的8KRAM

位扩展组成的8KRAM

四、字扩展

字扩展法组成64KRAM

五.字位扩展法组成RAM

第14页

A】o~Aii

A()~A9

-MREQ

A。CSA。CSA。CS

CPUIII

A9A9A9

211421142114

_WRWEWEWE

D7〜D4〜D《D7〜D4

D7〜Do

实验要求:

利用VisualC++编写一个程序,来模拟实现存储器的读写过程。

要求给出相应的信号表示。

熟练掌握存储器的扩展。用flash模拟内存字位扩展后的存储器

读取过程。

第15页

存储器的组织映象

基本知识

一、Cache存储器的地址映象

1、概念

1)地址映象:为了把信息放到Cache中,必须应用某种函数

把主存地址映象到Cache中定位。

2)地址变换(地址变换):在信息按这种映象关系装入Cache后,

执行程序时,将主存地址变换成Cache地址。

直接映象:

主存空间被分为2m个页,其页号分别为0、1、...i...2m1每

页大小为2b个字,Cache存储空间被分为2c个页(页号为0、

1、,每页大小同样为2b个字,(c<m)。

第16页

主存地址

页面地址的直接映像

全相联映象

1)主存中的每一页面可以映象到Cache中的任何一个页面位置上,

也允许采用任何替换算法从被占满的Cache中替换掉任何一个旧页

面。

2)主存地址

3)优点:灵活

4)缺点:

访问速度太慢,因为要与所有标记全部比较一遍,才能确定是否命

中;成本太高。

第17页

主存

主存地址

全相联映像方式

组相联映象

A)将Cache分为2n个组,每组包含2r个页面,Cache共有2c

=2n+r个页面。其映象关系为:j=(imod2n)X2r+k(0/kW

2r-l)

例,设n=3位,r=l位,考虑主存字块15可映象到Cache的哪一

个字块中。

可得:

j=(imod2n)X2r+k=(15mod23)X21+k=7X2+k=14+k

因为0<kW2r-l=L所以:k=0或1

代如后得j=14(k=0)或15(k=l)o所以主存模块15可映象到

Cache字块14或15。在第7组。

第18页

B)主存地址

C)组间是直接映象,组内是全相联映象。

小结:上述三种映象技术有一定的内在联系:当r=0时,就

是直接映象;当r=c时,就是全相联映象。

主存地址主存字块标记组地址

t+r位n位b位

c=n+r

页面地址的组相联映像

实验要求

要求写一程序或设计一动画,来演示存储器组织的三种映象方式。

第19页

实验七、CPU

理论知识

CPU的基本组成

运算器控制器

1.寄存器组

寄存器:CPU在处理信息的过程中,用来暂时存放各种信息。

第20页

(1)通用寄存器组

用户可通过编程访问的寄存器,在指令系统中为它们分配了相应

的编号。指令中以寄存器号来指示。通用寄存器通过编程,可以实现

多种功能,如提供操作数,存放运算结果,用作地址指针,作基址寄

存器、变址寄存器等。

(2)暂存器

暂存器对编程者来说是透明的,即在程序中不会出现。

作用:暂时存放CPU处理过程中的临时信息,避免破坏通用寄

存器的内容。

例如:实现从内存的单元A传送数据到另一个单元B。从单元A

读出的数据先送到CPU中的一个暂存器,然后再从暂存器送入单元

Bo

(3)指令寄存器IR

作用:用来存放当前正在执行的指令。控制器根据其内容(操作

码以及地址信息)产生所需要的各种微命令。

为了提高计算机的处理速度,现代计算机一般将指令寄存器扩充

为指令队列(指令栈)。形成了指令流水线处理方式.

指令流水线:一次预取多条指令,增加指令间执行的衔接速度和并行

处理能力。

(4)程序计数器PC

也叫指令计数器或指令指针。

作用:指示指令在存储器中的存放位置。

第21页

程序顺序执行时,每当从主存中取出一条指令后,PC内容就自

动增量计数,指向下一条指令。

程序发生转移时,将转移地址送入PC,使其指向转移目的地的指

令地址。

(5)程序状态字寄存器PSW

作用:记录现行程序的运行状态和指示程序的工作方式。

PSW包括特征状态位和方式控制位两部分。

特征位:进位位C、溢出位V、零值位Z、符号位S、奇偶位P等。

方式控制位:跟踪位I、中断允许位I、程序优先级字段、工作方式

字段等。

(6)地址寄存器MAR

作用:CPU访问主存时,暂时存放所访问单元地址。

CPU取指令时,先将PC的内容送入MAR,再由MAR将指令的存

放地址送往主存译码。

CPU存取数据时,将数据的存放地址先送到MAR,再送往主存进行

地址译码。

(7)数据缓冲寄存器MBR

作用:存放CPU与主存之间交换的数据。

由CPU写入主存的数据先送入MBR,主存地址译码找到指定

单元后,再将数据从MBR送入到该单元。

从主存中读出的数据,先送入MBR,然后再送到指定的CPU内

部某寄存器。

第22页

MAR和MBR是连接CPU与主存的桥梁,它们可使CPU与主存之

间的数据通路变得比较单一。这两个寄存器不能编程访问,即对用户

透明。

2.运算器的组织

内部总线(单向)

I来自M

第23页

实验要求:

根据所学的CPU知识,模拟一段程序的运行过程

A=3;

B=4;

S=a+b;

Cout«s«endl;

注意控制器的应该如何向其他部件发出控制信号,CPU内寄存器的

变化情况和内存的访问情况。(要求用FLASH演示出来或用其他的

动画工具演示实验结果。)

第24页

实验八、输入输出系统

理论知识

1.输入输出(I/O)系统概述

输入输出系统指外部设备(输入输出设备和

辅助存储器)及其与主机(CPU和存储器)之间的

控制部件。后者称之为设备控制器,如磁盘控制

器、打印机控制器等,也称为设备适配器或接口。

作用:控制并实现主机与外部设备之间的数

据传送。

I/O设备的编址:

为了CPU便于对I/O设备进行寻址和选择,

必须给众多的I/O设备进行编址,也就是给每一

台设备规定一些地址码,称为设备号或设备代

码。

I/O地址分配表:

输入输出设占用地址地址码(16进

备数制)

硬盘控制器16320〜32FH

软盘控制器83F0〜3F7H

单色显示器/163B0~3BFH

第25页

并行打印机

彩色图形显

163D0-3DFH

示器

异步通信控

83F8-3FFH

制器

I/O接口的基本功能:

1)实现主机和外围设备之间的数据传送控制。

2)实现数据缓冲,达到主机同外围设备之间的

速度匹配。

3)接受主机的命令,提供设备接口的状态,并

按照主机的命令控制设备

I/O接口类型:

1)按数据传送的宽度分为并行接口和串行接

□o

.并行接口:设备和接口是将一个字节(或字)的

所有位同时传送。

.串行接口:设备和接口间的数据是一位一位串行

传送的。接口要完成数据格式的串一并变换。

2)按数据传送的控制方式分成程序控制输入输

出接口,程序中断输入输出接口和直接存储器存

取(DMA)接口等。

第26页

I/O设备数据传送控制方式

1)程序直接控制方式

程序直接控制(programeddirectcontrol)

方式就是完全通过程序来控制主机和外围设备

之间的信息传送。

2.程序中断传送方式

程序中断传送(programinterrupt

transfer)方式中,在程序中安排一条指令,发出

START信号启动外围设备,然后机器继续执行

程序。当外围设备完成数据传送的准备后,便向

CPU发“中断请求”(INT)信号。CPU接到请求后

若可以停止正在运行的程序,在一条指令执行完

后,转去执行“中断服务程序”,完成传送数据工

作。传送完毕返回原来的程序。

3.直接存储器存取方式

直接存储器存取(directmemoryaccess,

简称DMA)方式:在外围设备和主存之间开辟直

接的数据传送通路。在正常工作时,所有工作周

期均用于执行CPU的程序。当外围设备完成输

入或输出数据的准备工作后,占用总线一个工作

周期,和主存直接交换数据。该周期过后,CPU

又继续控制总线,执行原程序。

第27页

DMA的特点:

除在数据块传送的起始和结束时需用中断

分别进行前处理和后处理外,无需CPU的频繁

干预。主存储器被并行工作的CPU和I/O子系

统所共享。

缺点:对外围设备的管理和某些操作的控制仍

需由CPU承担。

CPU主存

<>总线

r

DMADMA

ADRb*-*-

响应请求

DMADBRMAR

控制逻辑

WCCSR

J

中断逻辑

I/O设备

DMA控制器组成

DMA的组成:

1.设备寄存器

DMA控制器中的寄存器:

1)主存地址寄存器(MAR)

第28页

2)外围设备地址寄存器(ADR)

3)字数计数器(WC)

4)控制与状态寄存器(CSR)

5)数据缓冲寄存器(DBR)

2.中断控制逻辑

负责申请CPU对DMA进行预处理和后处

3.DMA控制逻辑

设备码选择电路,DMA优先排队电路,

产生DMA请求的线路。

4.DMA接口与主机和I/O设备两个方向

的数据线、地址线和控制信号线以及有关收发与

驱动线路。

第29页

DMA请求

继续执行主程序

(a)数据传送的三个阶段(b)第二阶段的数据传送过程

DMA数据传送过程

4.I/O通道控制(I/Ochannelcontrol)方式

“通道”:能独立地执行用通道命令编写的

输入输出控制程序,产生相应的控制信号送给由

它管辖的设备控制器,继而完成复杂的输入输出

过程。

第30页

通道是一种通用性和综合性都较强的输

入输出方式,代表了现代计算机组织向功能分布

方向发展的初始发展阶段。

5.外围处理机方式

输入输出处理机通常称作外围处理机

(peripheralprocessorunit,简称PPU)。

外围处理机基本上独立于主机工作。在某

些大型计算机系统中,设置多台外围处理机,分

别承担I/O控制、通信、维护、诊断等任务。

实验要求:

1)按中断优先次序,从高到底的中断源的编号

为:3—>4一>6—>5—>2—>1,在CPU执行某

用户程序过程中,有了中断源2,和4请求,在

CPU执行4请求时,又有5,6中断请求,在执行

5请求时,又有3请求,请画出CPU处理各中断

请求的过程。(利用动画环境模拟中断执行过

程,要求准确的信号表示)

2)根据DMA的数据传输过程,写程序演示数

据传输过程,并以动画演示数据传输过程,要

第31页

求准确的信号表示。

第32页

IBMPC机的指令系统和寻址方式

计算机完成的任何功能,都是通过执行

一系列指令来实现的,因而每种计算机都有一组

指令集提供给用户使用,这组指令集合就称为计

算机的指令系统。

什么是寻址方式?计算机指令中,为了取

得操作数的地址(目的取得操作数的内容)而进

行的寻找该操作数物理地址的方式。

计算机的大部分计算都需要数据参加,这

些参加某一指令计算的数据就叫该指令的操作

数。汇编语言的指令格式如下:

操作码操作数

1,操作数2,操作数3,…,操作数n

操作码:指示计算机要进行的某种指令操作,在

汇编语言中,操作指令采用助记符的形式来表示

操作指令,即操作码。

操作数:不同的操作码需要不同的操作数数量,

大部分操作码需要的操作数不超过3个,也有的

第33页

指令不需要操作数。操作数的类型也是多种多

样,它可以是常数、可以是存储单元、可以是地

址、甚至可以某中指令操作码等等。汇编语言中

很多操作码需带有两个操作数,就把前面的操作

数称为目的操作数、后面的操作数称为源操作

数。

第一节IBMPC机的寻址方式

一、与数据有关的寻址方式

(一)立即寻址方式

操作数直接存放在指令中,紧跟在操作码之

后,它作为指令的一部分存放代码段中,这种操

作数叫立即数(相当高级语言的常量)。立即数

可以是8位或16位数,若是16位数则高位字节

存放在高地址中,低位字节存放在低地址中。这

种方式如下图所示:

指令

[前数]

操作码直接对立即数进行操作。

立即寻址方式用来表示常数,它主要用于给

第34页

寄存器赋初值,注意:只能用于源操作数字段,

不能用于目的操作数字段。

例1MOVAL,5

则指令执行后,(AL)=05H,8位运算

例2MOVAX,3064H

则指令执行后,(AX)=3064H,16位运算

数据的执行过程可用下图示意:

存储器

AX:

代谒段

OP表示该指令的操作码部分。

(二)寄存器寻址

操作数在寄存器,指令指定寄存器号。对于

16位操作数,寄存器可以是AX、BX、CX、DX、

SI、DI、SP相BP等;对于8位操作数,寄存

器可以是AL、AH、BL、BH、CL、CH、DL

和DH。这种寻址方式由于操作数就在寄存器中,

不需要访问存储器来取得操作数,因而可以取得

第35页

较高的运算速度。这种方式如下图所示:

指令寄存器

寄存器号I------T操作数

例3MOVAX,BX

如指令执行前(AX)=3064H,(BX)=1234H,则

指令执行后,(AX)=1234H,(BX)保持不变。

除了上述两种寻址方法外,以下介绍的寻址

方式的操作数都在除代码段以外的存储区中,通

过不同的方式求得操作数地址,从而取得操作

数。

(三)直接寻址

在IBMPC机中将操作数的偏移地址称为

有效地址EAo在直接寻址方式中有效地址EA

就在指令中,它存放在代码段中指令操作码之

后,但操作数一般存放在数据段中,所以必须先

求出操作数的物理地址,然后再访问存储器才能

取得操作数,如下图所示。

段寄存器5

段地一

指令~T~存储器

[EA[--------------<+)-----------------1操作数|

如操作数在数据段中,则物理地址=16dX

(DS)十EAo1BMPC机中允许数据存放在数据

第36页

段以外的其他段中,此时应在指令中指定段跨越

前缀,在计算物理地址时应使用指定的段寄存

器。

例4AX,[2000H]

(DS)=3000H,则执行情况如下图所示。执行结

果为;(Ax)=3050H

在汇编语言指令中,可以用符号地址代替数

值地址,如:

MOV

AX,VALUE

此时VAIUE为存放操作数单元的符号地址。如

写成

MOV

AX,[VALUE]

第37页

也是可以的.两者是等效的。如果VALUE在附

加段中,则应该指定段跨越前缀如下;

MOVAX,ES:

VALUE

或MOVAX,ES:

[VALUE]

直接寻址方式适用于处理单个变量,例如需

要处理某个存放在存储器里的变量,可用直接寻

址方式,将该变量先取到一个寄存器中,然后在

做处理。

IBMPC机规定:除在双操作数中,除立即

数外,必须有一个操作数使用寄存器方式。这也

是一个常量常常送到寄存器去的原因。

(四)寄存器间接址

操作数的有效地址在基址寄存器BX、BP或

变垃寄存器SI、DI中,而操作数则在存储器中,

如下图所示。

段寄存器

指令一寄存器段地~址1]存储器

|寄存兼卜「石一|------0----T操菽-

如果指令中指定的寄存器是BX、SI>DL

第38页

则操作数在数据段(DS)中,所以用DS寄存器

的内容作为段地址,即操作数的物理地址为:

物理地址=16dX(DS)十(BX)

或物理地址;16dX(DS)十(SI)

或物理地址=16dX(DS)十(DI)

如指令中指定SP寄存器,则操作数在堆栈段

(SS)中,段地址在SS中,所以操作数的物理

地址为:

物理地址=16dX(SS)+(SP)

例5MOVAX,[BX]

如果(DS)=2000H,(BX)=1000H

物理地址=16dX(DS)十(BX)=20000H+1000H

=21000H

执行结果见下图所示:

存储器

AX

一;~|20000-

[I]-洒叩TZT数

---------------------T5o段

执行结果为:(AX)=50A0H

第39页

指令中也可指定段跨越前缀来取得其他段中

的数据。如;

MOVAX,ES:

[BX]

这种寻址方式可以用于表格处理,执行完一

条指令后,只需要修改寄存器内容就可取出表格

中的下一项。

(五)寄存器相对寻址方式

操作数的有效地址是一个基址或变址寄存

器的内容和指令中指定的8位或16位位移量之

和。即

,(BX),

(BP)8位

EA=卜十位移量

(S1)16位

,<D1)」

同样,除有段跨越前缀者外,对于寄存器为

BX、SI、DI的情况,段寄存器用DS,而寄存

器BP则使用SS段寄存器的内容作为段地址。

这种寻址方式示于下图。

第40页

其物理地址计算如下:

物理地址=16dX(DS)+(BX)+8位位移量

或(SD或16位位移量

或(DI)

或物理地址=16dX(SS)+(BP)+8位位移量

或16位位移量

例6MOVAX,COUNT[SI](也

可表示为MOvAX,[COUKT+SI;]

其中,COUNT为16位位移量的符号地址。

如果(DS)=3000H,(SI)=2000HCOUNT=

3000H

则物理地址=30000十2000十3000=

35000H

指令执行情况如下图所示,执行结果是(AX)=

1234H

第41页

这种寻址方式同样可用于表格处理,表格的

首地址可设置为COUNT,利用修改基址

或变址寄存器的内容来取得表格中的数值。

直接变址寻址方式也可以使用段跨越前缀。

(六)基址变址寻址方式

操作数的有效地址是一个基址寄存器和一

个变址寄存器的内容之和。两个寄存器均由指令

指定。如果基址寄存器为BX,段寄存器使用DS;

如基址寄存器为BP时,段寄存器则用SSo因此,

物理地址为:

第42页

物理地址=16dX(DS)卜(BX)+(SI)

或(DI)

或物理地址=16dX(SS)+(BP)+(SI)

或(DI)

这种寻址方式见下图:

7“,I-----•⑸

段寄存器

例7MOVAX,[BX][D1]

(或写为:MoVAX,[DX+DI]

如(DS)=2100H(BX)=0158H

(Dl)=10A5H

贝(1EA=0158H十1OA5H=11FDH

物理地址=21000H十11FDH=221FDH

指令执行情况如下图所示。执行结果(AX)=

1234Ho

存储器

21000

第43页

(七)相对基址变址寻址方式

操作数的有效地址是一个基址寄存器和一

个变址寄存器的内容和8位或16位位移量之

和。同样,当基址寄存器为BX时,使用DS段

寄存器;而当基址寄存器为BP时,则使用SS

为段寄存器。因此物理地址为:

物理地址=16dX(DS)+(BX)+(SD+8位位移量

或(DD或16位位移量

或物理地址=16dX(SS)+(BP)+(SD+8位位移量

或(DI)或16位位移量

这种寻址方式参见下图:

声?…段寄存赛

一址产存器।变址寄存器|位移量h[段料

变址寄存,.EA1存储器

U匈酒建作也

i基址寄存器

-------T基地显]-------

包I8MOVAX,MASK[BX][SI]

(也可以写成MOVAX,MASK[DX十SI]

或MoVAX.[MASK十BX十

SI])

如(DS)=3000H,(BX)=2000H>(SI)

=1000H,MASK=0250H,

贝!I物理地址=16dX(DS)十(BX)十(SI)

第44页

十MASK

=30000十2000十1000十

0250

=33250H

指令执行情况如下图所示。执行结果(AX)

=1234Ho

,存储器,、

0Pl代

0P,码

—4~MASK段

-

J

30000

-

-

-

(BJO-32000-

i数

MASK

AX32250

(SI)

(33250-777

------------------I2

这种寻址方式为堆栈处理提供了方便。一般

(BP)可指向栈顶,从栈顶到数组的首地址可

用位移量表示,变址寄存器可用来访问数组中的

某个元索。

第45页

二、与转移地址有关的寻址方式

这种寻址方式用来确定转移指令及CALL

指令的转向地址。

(一)段内直接寻址

转向的有效地址是当前IP寄存器的内容和

指令中指定的8位或16位位移量之和。如下图:

这种方式的转向有效地址用相对于当前IP

值的位移量来表示,所以它是一种相对寻址方

式。指令中的位移量是转向的有效地址与当前IP

值之差,所以当这一程序段在内存中的不同区域

运行时,这种寻址方式的转移指令本身不会发生

变化,这是符合程序的再定位要求的。这种寻址

方式用于条件转移和无条件转移指令,但是,当

它用于条件转移时,位移量只允许8位。无条件

转移指令在位移量为8位时,叫短跳转。

指令的汇编语言格式为:

JMPNEARPTRPROGIA

JMPSHORTQUEST

第46页

其中,PROGIA和QUEST均为转向的符号地

址,在机器指令中,用位移量来表示。在汇编指

令中,如果位移量为16位,则在符号地址前加

操作符NEARPTRo如果位移量为8位,则在

符号地址前加操作符SHORTo

(二)段内间接寻址

转向有效地址是一个寄存器或是存储单

元的内容,这个寄存器或存储单元的内容可以用

数据寻址方式中除立即数以外的任何一种寻址

方式取得,所得到的转向的有效地址用来取代IP

寄存器的内容。此种寻址方式如下图所示。

寄存器

存储单元

注意:这种寻址方式以及以下的两种段间寻

址方式都不能用于条件转移指令。也就是说,条

件转移指令只能使用段内直接寻址的8位位移

量,而JMP和CALL指令则可以使用任何跳转

方式。

段内间接寻址转移指令的汇编格式可以表

示为

第47页

JMPBX

JMPWORD

PTR[BP+TABLE]

等。其中WORDPTR又称为操作符(伪),

用以指出其后的寻址方式所取得的转向地址是

一个字的有效地址,也就是说它是一种段内转

移。

以上两种寻址方式均为段内转移,所

以直接把求得的转移的有效地址送到IP寄存器

就可以了。如果需要计算转移的物理地址,则计

算公式应该是:

物理地址=16dx(CS)十EA

其中EA即为上述转移的有效地址。

下面举例说明在段内间接寻址方式的转

移指令中,转移的有效地址的计算方法

假设:(DS)=2000H,(BX)=1256H,(SI)

=528FH,

位移量=20A1H,(232F7H)=

3280H,(264E5H)=2450Ho

例9JMPBX

则执行该指令后(IP)=1256H

第48页

例10JMPTABLE[BX]

则执行该指令后(IP)=(16dX(D)十(BX)十位

移量)

=(20000十1256十20A1)

=(232F7H)

=3280H

例11JMP[BX][SI]

则指令执行后(IP)=(16d*(DS)十(BX)

十(SI))

=(20000十1256十

528F)

=(264E5H)

=2450H

(三)段间直接转移

指令中直接提供了转向段地址和偏移地

址,所以只要用指令中指定的偏移地址取代IP

寄存器的内容,用指令中指定的段地址取代CS

寄存器的内容就完成了从一个段到另一个段的

转移操作,如下图所示。

第49页

这种指令的汇编语言格式可表示为:

JMPFARPTRNEXTROUTINT

其中,NEXTROUTINT为转向的符号地址,

PARFAR则是表示段间转移的操作符。

(四)段间间接转移

用存储器中的二个相继字的内容来取代

IP和CS寄存器中的原始内容以达到段间转移约

目的。这里存储单元的地址是由指令指定除立即

数方式和寄存器方式以外的任何一种数据寻址

方式取得,如下图所示。

存储器中的二个

椎继字

这种指令的汇编语言格式可表示为:

JMPDWORDPTR[INTERS+BX]

其中,[INTERS+BX]说明数据寻址方式为直接

变址寻址方式,DWORDPTR为双字操作符,

说明转向地址需要取双字为段间转移指令。

IBMPC机的机器语言指令概况

第50页

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论