计算机组成原理第四章.ppt_第1页
计算机组成原理第四章.ppt_第2页
计算机组成原理第四章.ppt_第3页
计算机组成原理第四章.ppt_第4页
计算机组成原理第四章.ppt_第5页
已阅读5页,还剩135页未读 继续免费阅读

下载本文档

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

文档简介

1、1,第四章 指令系统,4.1 序 4.2 指令格式 4.3 指令类型 4.4 寻址方式,2,4.1 序,指令:完成某种操作的命令。 指令系统:一台计算机所能执行的全部指令,称为该机的指令系统。 汇编语言:用英文助记符书写的语言称为汇编语言。 如:加法指令(DLX汇编语言): ADD R1, R2, R3 ; R1(R2)(R3),3,C语言赋值语句: c = a + b d = a e 翻译成DLX汇编指令:算术运算指令的操作数不能是存储变量,必须是寄存器。 设变量a,b,c,d,e被分配给寄存器R0,R1,R2,R3,R4,于是: ADD R2,R0,R1 SUB R3,R0,R4,4,不同

2、机器,其指令的表现形式不同 例如:C = A + B 堆栈型机: Push A Push B Add Pop C 累加器型机: Load A Add B Store C,5,R-M型机: Load R1, A Add R1, B Store C, R1 Load-Store型机: Load R1, A Load R2, B Add R3, R1, R2 Store C,R3 一条ALU指令,可能有3个操作数,可能有2个操作数,也可能无操作数。,6,4.2 指令格式,一条指令由操作码和地址码两部分组成,其格式为: 操作码OP(Operation):表明完成何种操作; 地址码Addr(Addres

3、s):表明参与操作的操作数存放于何处。,7,4.2.1 地址码结构,1、四地址结构 其中,OP:操作码; A1:第一个操作数地址; A2:第二个操作数地址; A3:结果数存放地址; A4:下一条指令地址;,8,功能:A3(A1) OP (A2); 下一条指令地址由A4段给出。 操作数地址和结果地址明确给出,可以不设寻址方式; 指令可以无序存放; 直接给出下一条指令地址,可以不设转移指令。 问题:指令过长;程序转移控制不灵活;程序不易修改。,9,2、三地址结构 下一条指令地址由PC给出,四地址结构变为三地址结构: 功能:A3(A1) OP (A2) 顺序执行时:(PC)增量PC; 转移时:修改P

4、C内容,使其指向转移的目标地址。,10,3、两地址结构 结果数地址隐含由A1字段或A2字段给出,三地址结构变为两地址结构: 结果数地址由A1字段给出,如80X86 ADD AX, BX ;AX(AX)(BX) 结果数地址由A2字段给出,如VAX-11 ADD R0, R1;R1 (R0)(R1),11,4、单地址结构 若为单操作数指令,如INC,NOT,NEG指令: OP(A) A 若为双操作数指令,需设累加器,其中一个操作数隐含由累加器给出: (AC) OP (A) AC,12,5、零地址结构 隐含给出操作数的单地址指令,如 OP(AC) AC 面向堆栈的操作:隐含给出操作数地址为栈顶和次栈

5、顶; 需要压栈(PUSH)和出栈指令(POP); 需将算法表达式转换成逆波兰表达式。,13,例如:(A/(BC)(DE) (AC),表示成逆波兰表达式为: ABC/DEAC 编程如下: PUSH A MUL PUSH B ADD PUSH C PUSH A MUL PUSH C DIV MUL PUSH D SUB PUSH E POP Result,14,地址: 一个寄存器 一个主存单元 堆栈 一个端口寄存器 如何编址?,15,单独编址:各自从“0”开始单独编址,构成多个一维线性地址空间。 指令较短;地址形成简单;主存编址范围较大。 统一编址:将各部件统一编址,构成一个从“0”开始的一维线性

6、空间,对不同部件的访问反映在这个空间中的不同地址访问。 简化指令系统。,16,隐式地址:操作数或操作数地址隐含在某个寄存器或指定的存储单元中。 不必进行地址计算,加快对这些部件的访问。如80X86中: MUL BL ;AX(AL)(BL) LOOP OK ;(CX)10,则循环,17,4.2.2 操作码结构,1、统一编码与逐位定义方式(定长) 0000 MOV 0001 ADD 0010 SUB 0011 AND 0100 OR 0101 EOR ,逐位定义,16种32种,0 1,18,2、方式码(定长) 将一条指令的操作码分为几个部分,每一部分表示与某一类基本操作有关的几种操作。 例如,NO

7、VA-1200: 指令系统:23条上百条,算逻,19,3、扩展操作码(变长) 在指令长度一定的情况下,丰富指令的种类: 地址部分位数较多时,让操作码位数少些; 地址部分位数减少时,让操作码位数增多,以增加指令种类。 信息量大,平均码长短。 增加指令平均执行时间和指令译码的复杂性。,20,例:某指令系统指令字长为16位,地址码长度4位,设计中需要三地址指令15条,两地址指令14条,单地址指令31条,并留有表示零地址的可能。具体安排如下:,21,22,4.3 指令类型,一台计算机应包含哪些指令?越多越好?够用就行? 指令集必须是完备的,否则编不出完整的程序。 完备性:在一个有限的存储空间内,对于任

8、何可解的问题,一台计算机所提供的指令系统足够使用。 为便于讨论,将指令分为六类。,23,4.3.1 数据传送指令,功能:将数据从源地址处移动到目的地址处。 事实上,数据并没有从源地址移到目的地址,而是拷贝到新的位置,数据仍然在源地址中。 把“数据传送”称为“数据拷贝”更合适。,24,为什么要复制数据? 给变量赋值,如: MOV AX, BX ;AX(BX) CPU只能将少量的数据存在寄存器中,必须有存储器和寄存器间的数据传送指令。 如:,25,把数据从内存取到寄存器 MOV AX, DATA0 ;AX(DATA0) 把寄存器中的数据存入存储器 MOV (DATA1), AX ;DATA1(AX

9、) 一个寄存器拷贝到另一个寄存器 MOV AX,BX ;AX(BX),26,常见的: MOV;从源点到终点 LOAD;从M到R STORE;从R到M CLEAR;将“0”送到终点 PUSH;将数据压栈 POP;将数据弹出 XCHG;将源与目的内容交换 最基本的:MOV,27,4.3.2 算术运算指令,功能:完成算术运算功能 常见的: ADD;两数加 SUB;两数减 MUL ;两数乘 DIV;两数除 INC;加1 DEC;减1,最基本的: ADD和SUB 多字节: ADC (带进位加) SBB (带进位减),28,4.3.3 逻辑运算指令,功能:执行数据的基本逻辑运算。 常见的: AND;逻辑与

10、 OR;逻辑或 NOT;逻辑非 EOR;异或 该类指令的功能来自位元逻辑运算规律,最基本的: AND,NOT 或 OR,NOT,29,1、逻辑乘() 一位逻辑乘运算规则:,30,由(a)(b)和(c)(d)式知: 0任意数=0;1任意数=原值。 可以设置按位测试指令:让被检测量为目的操作数,源操作数为屏蔽字。被检测的位:屏蔽字为1;不检测的位:屏蔽字为0。 可以用来实现字段截取:被截取的字段屏蔽字为1,其余字段屏蔽字为0。,31,例:R为:0011 0101 0001,截取中间4位,步骤如下: 设屏蔽字A:0000 1111 0000 将(R) (A),即 中间4位被截取下来。,32,由(a)

11、和(d)式知: 00=0 , 11=1 。 自身相与,其值不变。 但可用来设置标志位(记录前次运算结果)N、Z、V、C、P等。 例: AND AX,AX JZ OK,33,由(a)和(b)式知: 00=0,01=0。 可以设置按位清指令。 方法:若使目的操作数的某位为0,可设置源操作数的对应位为0,其余位为1,二者相与。,34,2、逻辑加() 一位逻辑加运算规则:,35,由(c)和(d)式知: 10=1,11=1。 可以设置按位置指令。 方法:若使目的操作数的某位为1,可设置源操作数的对应位为1,其余位为0,二者相或。,36,由(a)和(d)式知: 00=0,11=1。 通过自身相或设置标志位

12、,如: 标志位P=1,即1的个数为偶数。,37,AND运算常与OR运算配合用来抽取和组合那些被组装在不同数据字的字段。例:,38,例:A单元:0111 0101 0011 B单元:1001 1001 1010 欲得到:1001 0101 1010 设屏蔽字,并存入D单元,即 D单元:0000 1111 0000 第一步,截取A单元中4位:,39,第二步,去掉B单元中4位 第三步 则A单元即为所求的T字段。,40,3、按位加(异或) 一位按位加运算规则:,41,由(a)和(d)式知: 00=0,11=0。 相同的两个数异或,结果为0。 可判两个数的全等。 若自身进行异或操作,又可达到清零的目的。

13、,42,由(c)和(d)式知: 10=1,11=0。 可以修改某位(取反) 方法:若使目的操作数的某位取反,可设置源操作数的对应位为1,其余位为0,二者异或。,43,由(a)(d)式知: 按位加结果“1”的个数可能增加,也可能减少;逻辑乘只能使“1”的个数减少;逻辑加只能使“1”的个数增加。 可通过异或来生成随机数。,44,4.3.4 移位指令,功能:对数据的位进行移动。 常见的: SHL;逻辑左移 ROL;循环左移 SHR;逻辑右移 ROR;循环右移 SAL;算术左移 RCL;带进位循环左移 SAR;算术右移 RCR;带进位循环右移 最基本的: 左移(RL),右移(RR),45,问题1:移出

14、字之外的位如何处理?,根据程序的需要,是否需要保留? 设计了两类指令:移位和循环移位。 移位指令:移到字之外的位将舍弃。 循环移位指令:把字的一端移出的位放回到字的另一端,任何一次循环操作的结果都可以用另一次循环移位的操作使其还原。,46,问题2:空位的补位问题,算术左移(SAL)和逻辑左移(SHL)操作相同,空位补0。例如, SAL / SHL OPR, CNT; OPR:8/16/32的通用寄存器,或内存单元中的操作数; CNT:放在寄存器CL中的移位次数。,47,算术右移(SAR)和逻辑右移(SHR): 算术右移:左边空位填充该字的初始符号位; 逻辑右移:左边空位填充0。,48,移位和循

15、环移位指令用途:,移位操作的一个重要用途是:乘和除2的n次幂 将一个正数左移K位,结果等于原数乘以2K; 将一个正数右移K位,结果等于原数除以2K。,49,使用移位操作加快某些特定数学运算 如:对正整数n,计算10n 10n=8n2n 8n=n左移3位 2n=n左移1位 通过两次移位和1次加法得到了结果,显然比乘法操作更快。,50,对负整数的算术右移操作会产生错误如: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1的补码 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 右移4次 -1的补码右移四次还是-1的补码,51,测试一个字的所有位 可进行循环移位,每

16、次移一位,需要测试的位总在CF中,测试过程相当容易; 当所有位测试过后,又回到初始值。,52,4.3.5 程序控制类指令,程序的执行分为:顺序、分支、循环、过程调用等情况 顺序执行 :PC加一个增量,由硬件实现,无需设置指令。 分支:几乎所有程序都会遇到下列情况,对数据进行检查,根据检查结果决定指令的不同执行顺序。,53,如符号函数: 分支程序的结构 :,54,55,分支点要做两件事:菱形框说的是比较测试,Yes,No说的是条件转移。即:处理分支点需要两条指令:比较和条件转移指令。例:80X86中,第一菱形框的处理: CMP X,0 JE OK1 汇合点需要无条件转移指令。例: JMP OK3

17、,56,循环:从理论上讲,只要有条件转移指令就可实现循环。 某些计算机提供了专用的指令,一个计数器在执行每次循环时都要加或减某个常数,每次执行循环时都要对计算器进行测试,如果一定的条件成立,循环将结束。 如:80X86中, Loop ok ;CX-1CX CX0则循环; 否则,结束循环。,57,例:求SUM=12+22+32+1002 K=I*I S=S+K,AX,BL,DX,AL,58,MOV AL,1 MOV BL,1 MOV CX,100 MOV DX,0 OK: MUL BL; AX(AL)(BL) ADD DX,AX INC BL MOV AL,BL LOOP OK MOV SUM,

18、DX HLT,DEC CX JNZ OK,59,过程调用: 过程:执行某种任务的指令集合,可被其他部分调用。 常用子程序来代替过程。 通常设置过程调用指令来完成。 与转移指令不同,被调用的过程完成后,必须返回到调用前的语句。,60,一种方法:由过程调用指令把返回地址存放到寄存器或内存单元中。如果过程是递归的,每次被调用时应该把返回地址放到不同的地方。 最好方法:把返回地址压入堆栈,过程结束时,从栈顶弹出返回地址,并放入PC。递归也不会出现问题,返回地址被自动保存,不会破坏原有的地址。 停机指令:如程序结束。,61,4.3.6 输入输出指令,为向一个I/O设备发出指令,处理器必须能够对设备寻址,

19、并提供相应的命令字。 两种方法可以用来对设备寻址:存储器映射I/O和专用的I/O指令。,62,存储器映射I/O 地址空间的一部分分配给I/O设备,对这些地址的读和写被解释为对I/O设备的指令。 用传送指令MOV将命令送给I/O设备。 存储器系统将忽略该操作,因为地址指明这部分存储器空间是用于I/O的。,63,专用I/O指令 采用专用的I/O指令:IN和OUT指令。如80X86 输入指令: IN REG,DEVADDR 其中,REG必须是寄存器AL或AX; DEVADDR为设备地址。 输出指令: OUT DEVADDR,REG,64,4.4 寻址方式,寻址:如何给定所需要的操作数或操作数地址。

20、一种简单和直观的方法是:由指令的地址码部分直接给出。 由于指令字长的限制,这种做法很不现实。 早期计算机采用双倍字长或多倍字长指令来增加地址码域,需多次访存。,65,另一种方法:不增加地址部分长度,改变指令的结构形式。 指令中地址字段给出的有时并不是操作数的完整地址,称为形式地址。 根据寻址方式的确切含义,经过计算去解释地址码域,得到直接访问主存的地址,称为有效地址EA(effective address)。 寻址方式:将指令中的形式地址生成有效地址的各种方式。,66,目前大家的共识是: 寻址方式设置目的是为高效编程提供相应的支持。 一个高效的指令系统并不需要太多的寻址方式,有立即寻址、寄存器

21、寻址、直接寻址和变址寻址就足够了。 一个指令系统中的寻址方式必须是少而清晰的,或者提供唯一一种选择方式,或者提供所有可能的选择。,67,4.4.1 常见寻址方式,1、寄存器寻址(register addressing) 例:ADD R3,R4 RegsR3RegsR3RegsR4 操作数在CPU寄存器中,在指令中给出寄存器名称。 CPU从寄存器中读取数据要比从内存中读取数据快得多。,68,软件工作者的多年观测表明,大部分操作数都会被重复使用。 为减少访问存储器的次数,目前大多数新型计算机都提供大量的寄存器。 既缩短程序的编制,又节省程序的执行时间。 寄存器寻址成为大多数计算机最常用的寻址方式。

22、,69,寄存器寻址方式,常用于: 表达式计算 例如,80X86中 ADD AX,BX ;AX (AX)(BX) SUB AX,BX ;AX (AX)(BX) 传递数据可以是寄存器到寄存器间传送,或从主存中取数到寄存器,或将寄存器中的操作数写入主存。,70,例如,80X86中 MOV AX,BX ;AX (BX) MOV AX,BX ;AX MemRegsBX MOV BX,AX ;MemRegsBX (AX) 存放临时变量如果一个操作数要被访问多次,可将其放入寄存器中。 例如,80X86中 MOV CX,100 ;设置循环变量CX 100 Loop OK ;(CX)10,循环,71,2、立即寻

23、址(immediate addressing) 例:ADD R3,#3 RegsR3 RegsR33 操作数在指令中被明确的给出。 当指令一旦被取出,操作数立即可用。(故此得名) 据统计,在程序中出现概率在40%左右。,72,立即寻址,常用于: 对变量预置初值。 提供与变量进行算术运算和逻辑运算的常数。 作为表或字符串的结束条件,分支或循环中与变量进行比较的常数。 作为变址指针等。,73,优点: 取操作数时,不需额外内存访问开销。 缺点: 只有常数才能使用这种方式; 数的大小受到地址字段大小的限制; 只能定义小整型常量。,74,3、直接寻址(direct addressing) 例:ADD R

24、1,100 RegsR1 RegsR1Mem100 操作数在一个存储器单元中,指令中明确地给出这个单元的完整地址。 访问的永远是同一个内存地址。 直接寻址只能用于访问全局变量。 “直接”意味着不变,只能用在不变的场合。,75,寄存器寻址、立即寻址和直接寻址可以解决顺序程序设计问题。 表和数组的处理,采用顺序程序设计重复次数多,出错几率大。 采用顺序程序设计,程序冗长,且降低了编程速度。 对重复执行的语句由程序控制更好。,76,例如:SUM=1+2+3+100 MOV AX,NUM1 ADC AX,NUM2 ADC AX,NUM3 ADC AX,NUM100 MOV SUM,AX SUM NUM

25、1 1 NUM2 2 NUM100 100,77,4、寄存器间接寻址(register indirect addressing) 例:ADD R4,(R1) RegsR4 RegsR4+MemRegsR1 操作数有效地址在寄存器中,而这个寄存器在指令中给出。 包含操作地址的寄存器称为指针,间接寻址是通过指针查找操作数地址。 实现地址从固定到变的转化。,78,例如:SUM=1+2+3+100 XOR AX,AX MOV CX,100 MOV BX,OFFSET NUM1 OK: ADC AX,BX INC BX LOOP OK MOV SUM,AX SUM NUM1 1 NUM2 2 NUM10

26、0 100,79,在循环程序中没有使用任何内存地址. 程序访问主存时,不需要在指令中定义完整地址,只定义一个相对地址. 间接寻址允许在程序运行时,计算目标地址,以访问不同的内存字. 能修改指令本身的程序称自修改程序. 想出这个主意的人是冯诺依曼.,80,5、变址寻址(indexed addressing) 例:ADD R4,100 (R3) RegsR4 RegsR4+MemRegsR3+100 EA=(R变)+D D:基准量(形式地址) R变:位移量(变址量) 基准量应能提供全字长地址码 在定长指令格式中,由于地址码位数有限,由R变提供基准地址。,81,形成数组或表中连续元素地址的又一方案。

27、 数组元素首地址由一个变址寄存器的内容加上一个已知偏移量生成; 每次循环,变址寄存器加1,形成下一元素地址。,82,例如:SUM=1+2+3+100 XOR AX,AX MOV CX,100 MOV BX,0 OK: ADC AX,NUM1BX INC BX LOOP OK MOV SUM,AX SUM NUM1 1 NUM2 2 NUM100 100,83,采用变址寻址方式比采用寄存器间接寻址方式效率低,需要进行一次加法. 为什么还要引出变址方式呢? 原因是:采用变址寻址比采用寄存器间接寻址编程更灵活性、更有效。 例:从数据区DATA1传递100个字节到数据区DATA2,84,85,(1)

28、采用寄存器间接寻址,80X86指令编程,LEA SI,DATA1 LEA DI,DATA2 MOV CX,100 OK:MOV AL,SI MOV DI,AL INC SI INC DI LOOP OK HLT,86,(2) 采用变址寻址,80X86指令编程,MOV BX,0 MOV CX,100 OK:MOV AL,DATA1BX MOV DATA2BX,AL INC BX LOOP OK HLT,87,除顺序和循环程序外,就是分支与跳转。 分支指令主要出现在循环和IF语句中,条件满足,转移到附近的某一条指令。 差不多一半的条件分支指令跳转的范围不超过16条指令。 考虑以程序计数器PC存放的

29、当前地址为准,加上分支地址,实现转移。,88,6、相对寻址(PC relative addressing) EA=(PC)+D (1) 实现转移指令 例如:在80X86中,条件转移指令汇编格式:JXX DSTJXX:JZ/JE,JNZ,JS,JNC,若条件满足,则PC(PC)+DISP;否则, PC不变。,89,(2) 实现程序浮动 将相对寻址换一种表述:DISP=EA-(PC), 不难看出,只要保证操作数有效地址和当前指令地址的相对距离不变,就可以使指令和操作数在可用的存储空间中一起移动,原程序可不加修改,仍能保证程序的正确执行。,90,(3) 形成下一条指令地址 PC+增量指向下一条指令。

30、 (4) 实现过程返回 在80X86中,过程返回指令RET没有明确给出返回地址,如何实现返回? 靠相对寻址确定目标地址,即:返回地址=(PC)DISP。,91,92,7、基址寻址 EA=(R基)+D 在多道程序环境下,如果将程序原封不动装入,程序是不能执行的。 用户不能自行确定自己的主存区,而编程时的程序地址是从零开始的。 解决程序再定位问题。 在有限字长的情况下,扩大寻址空间(如80X86)。,93,如:计算32A0H+1295H=? MOV AX,0100H MOV BX,0200H ADD AX,BX MOV 0300H,AX HLT 0100H 32A0H 0200H 1295H 03

31、00H ?,94,若程序存放在2000H起始的单元中:,95,存放后操作数地址发生变化,程序无法正确执行。 引入基址寻址方式。 程序执行时,操作系统将用户作业的起始地址装入基址寄存器。 处理机访问时,地址转换硬件将程序的相对地址与基址寄存器的内容相加,相加后的和作为主存的绝对地址进行访存。,96,97,8、堆栈寻址 是存储器中(或专用寄存器组)一块特定的按“后进先出”原则管理的区域。 解决子程序嵌套、子程序递归和多重中断调用。 例:多重中断时中断程序链接 (INT1 (INT2, RST2) (INT3 (INT4, RST4) RST3) RST1),98,9、(存储器)间接寻址 与寄存器间

32、接寻址不同的是间接指示器不是寄存器而是内存的一个单元。 它的查表功能是任何寻址方式取代不了的。 由于需要两次访存,因此,一般在CPU指令系统寻址方式中看不到它,但它是客观存在的。,99,100,操作数在I/O端口中 IN AX, n ;n为8位端口号 OUT DX, AX ;(DX)为端口号,直接寻址,寄存器间址,101,4.4.2 总结,理论上,寄存器间接寻址可以看作变址寻址的一个特例,即偏移量为0。 相对寻址,有效地址形成使用变址方式来确定,只不过用PC代替变址寄存器。 堆栈寻址,其有效地址的形成也使用了变址方式来确定,用堆栈指针SP 代替了变址寄存器。,102,一个清晰的指令系统只有少量

33、的寻址方式,即立即寻址、寄存器寻址,直接寻址和变址寻址。 在需要寄存器的地方,所有寄存器,包括局部变量指针、堆栈指针和程序计数器都可应用。 不仅精简了寻址方式,还满足了编译器要求,要么是唯一一种选择,如,立即、寄存器和直接寻址;要么提供所有可能的选择,如变址寻址。,103,题1. 某计算机指令字长16位,每个操作数地址为6位,有三种指令:双操作数、单操作数和无操作数指令。今采用扩展操作码方式来设计指令。 若双操作数指令已有K条,无操作数指令已有L条,问单操作数指令有多少条? 答:,104,若双操作数指令已有K条,单操作数指令已有M条,问无操作数指令有多少条? 答: 若单操作数指令已有M条,无操

34、作数指令已有L条,问双操作数指令有多少条? 答:,105,若三种指令依次进行最大扩展,则各允许最大指令条数是多少? 答:双操作数:15条;单操作数:63条 无操作数:64条 问单操作数指令最多有多少条?此时双操作数指令和无操作数指令各是多少条? 答:单操作数指令最多有: (16-1)64-1=959条; 双操作数:1条;无操作数:64条,106,题2. 某计算机指令格式如左图所示。图中I=0:直接寻址;I=1间接寻址。假设存储器的内容如右图所示。指出下列指令的EA=?,107,指令07H 答:因为I=0,直接寻址,EA=07H 指令DFH 答:因为I=1,间接寻址, EA=(07H)=A0H,

35、108,题3. 某计算机指令格式如图。试采用先基址后间址(一次),求出指令K的操作数P=?,109,答: EA=(R基3)+D) = (4016+401) = 4417 =4300 P=4300=2053,110,题4. 一条双字长的LOAD指令,存储在地址为200和201的存储单元中,该指令将地址码的内容装入累加器AC中,指令的第一个字指定操作码和寻址方式,第二个字是地址码,具体如图。求下列寻址方式下的指令功能。,111,112,直接寻址EA=500 P=EA=500=800AC 立即寻址P=500 AC 间接寻址EA=500=800 P=EA=800=300 AC 相对寻址EA=(PC)+

36、D=202+500=702P=EA=702=325 AC,113,变址寻址EA=(RX)+D=100+500=600P=EA=600=900 AC 寄存器寻址(用R1的编号替换500)P=(R1)=400AC 寄存器间址(用R1的编号替换500) EA=(R1)=400P=EA=400=700 AC,114,题5. 某计算机有变址、相对和间址三种寻址方式。设当前指令的地址码部分为001AH,当前指令所在地址为1F05H,变址寄存器内容为23A0H。存储器单元地址与内容如下:,115,若为变址寻址,则操作数P=? EA=(R变)+D=23A0H+001AH=23BAH P=EA=23BAH=17

37、48H 若为间接寻址,则操作数P=? EA=D=001AH=23A0H P=EA=23A0H=2600H 若为相对寻址,当执行转移指令时,其转移地址EA=? EA=(PC)+D=1F05H+001AH=1F1FH,116,题6. 某计算机具有如下特点: 有64条指令; 两地址指令有直接寻址、立即寻址、相对寻址三种方式; 有16个通用寄存器,算术逻辑操作数在通用寄存器中,运算结果也送往通用寄存器; 取数/存数(LOAD/STORE)指令在通用寄存器和存储器之间传送数据; 存储器的容量为64KB,按字节编址。 请分别设计算术逻辑指令、取数/存数指令和相对转移指令的格式,并简述其理由。,117,算术

38、逻辑指令 格式: 其中:OP位数=log264=6 RS(RD)位数=log216=4 相对转移指令 若相对转移由操作码确定,则指令格式:,118,取数/存数指令 格式: 其中:OP位数=log264=6 R位数=log216=4 M位数:三种寻址方式,故设2位 A位数=log264K=16,119,题7.某CPU的双操作数指令格式如下 : 其中, MS为源寻址方式,MD为目的寻址方式, RS和RD分别为源和目的寄存器号,OP为操作码。问: 为该CPU设计16条双操作数指令是否可取?为什么? 答:不可取。应为单操作数指令和无操作数指令提供一定编码。,120,CPU的寄存器增加到16个,在不改变

39、指令长度的前提下,如何修改指令格式?将对指令功能产生什么影响? 答:RS(RD)位数:34 方案1:,121,方案2: 影响:指令功能下降。 如不降低指令功能,并且指令长度可变,试设计具有16个通用寄存器的双操作数指令格式。 答:,122,题8.某计算机字长32位,主存64KB,系统有8个32位通用寄存器,指令系统中有58条双操作数指令,两操作数中,源操作数一定在寄存器中,目的操作数可为寄存器寻址、直接寻址、寄存器间接寻址。请设计该指令系统的指令格式,并使指令长度最短。,123,答:指令格式: 其中:,124,M=00:寄存器寻址,寄存器号由REG2给出; M=01:直接寻址,EA=REG2|

40、A; M=10:寄存器间址,EA=(REG2)。,125,题9.某计算机字长24位,主存64KB,系统有8个16位通用寄存器, 8个8位通用寄存器,1个16位基址寄存器,指令系统有64条双操作数指令,均为RR型和RS型,每条指令既能完成字运算,又能完成字节运算,若操作数不在寄存器中,可以采用直接寻址、间接寻址、基址寻址、寄存器间接寻址(用16位寄存器)。设计该指令系统的指令格式,并使指令长度最短。,126,答:指令格式: 其中: W=0:字节运算;W=1:字运算。 I=0:RR型;I=1:RS型。,127,M=00:直接寻址,EA=REG2|A ; M=01:间接寻址,EA=(REG2|A); M=10:基址寻址,EA=(R基)+REG2|A; M=11:寄存器间址,EA=(REG2)。,128,题10.某计

温馨提示

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

评论

0/150

提交评论