计算机组成原理第四章.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《计算机组成原理第四章.ppt》由会员分享,可在线阅读,更多相关《计算机组成原理第四章.ppt(140页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第四章第四章 指令系统指令系统4.1 序序4.2 指令格式指令格式4.3 指令类型指令类型4.4 寻址方式寻址方式14.1 序序l指令指令:完成某种操作的命令。:完成某种操作的命令。l指令系统指令系统:一台计算机所能执行的全:一台计算机所能执行的全部指令,称为该机的指令系统。部指令,称为该机的指令系统。l汇编语言:汇编语言:用英文助记符书写的语言用英文助记符书写的语言称为汇编语言。称为汇编语言。l如:加法指令如:加法指令(DLX汇编语言汇编语言):ADD R1,R2,R3 ;R1(R2)(R3)2lC语言赋值语句:语言赋值语句:c=a+bd=a el翻译成翻译成DLX汇编指令:算术运算指令汇编
2、指令:算术运算指令的操作数不能是存储变量,必须是寄的操作数不能是存储变量,必须是寄存器。存器。l设变量设变量a,b,c,d,e被分配给寄存被分配给寄存器器R0,R1,R2,R3,R4,于是:,于是:ADD R2,R0,R1SUB R3,R0,R43不同机器,其指令的表现形式不同不同机器,其指令的表现形式不同例如:例如:C=A+Bl堆栈型机:堆栈型机:Push APush BAddPop Cl累加器型机:累加器型机:Load AAdd BStore C4lR-M型机:型机:Load R1,AAdd R1,BStore C,R1lLoad-Store型机:型机:Load R1,ALoad R2,B
3、Add R3,R1,R2Store C,R3l一条一条ALU指令,可能有指令,可能有3个操作数,可个操作数,可能有能有2个操作数,也可能无操作数。个操作数,也可能无操作数。54.2 指令格式指令格式l一条指令由一条指令由操作码操作码和和地址码地址码两部分组两部分组成,其格式为:成,其格式为:l操作码操作码OP(Operation):表明完成):表明完成何种操作;何种操作;l地址码地址码Addr(Address):表明参与):表明参与操作的操作数存放于何处。操作的操作数存放于何处。OP Addr64.2.1 地址码结构地址码结构1、四地址结构、四地址结构其中,其中,OP:操作码;:操作码;A1:
4、第一个操作数地址;:第一个操作数地址;A2:第二个操作数地址;:第二个操作数地址;A3:结果数存放地址;:结果数存放地址;A4:下一条指令地址;:下一条指令地址;OP A1 A2A3A47l功能功能:A3(A1)OP(A2);下一条指令地址由下一条指令地址由A4段给出。段给出。l操作数地址和结果地址明确给出,可操作数地址和结果地址明确给出,可以不设寻址方式;以不设寻址方式;l指令可以无序存放;指令可以无序存放;l直接给出下一条指令地址,可以不设直接给出下一条指令地址,可以不设转移指令。转移指令。l问题问题:指令过长;程序转移控制不灵:指令过长;程序转移控制不灵活;程序不易修改。活;程序不易修改
5、。82、三地址结构、三地址结构l下一条指令地址由下一条指令地址由PC给出,四地址给出,四地址结构变为三地址结构:结构变为三地址结构:l功能:功能:A3(A1)OP(A2)l顺序顺序执行时:执行时:(PC)增量增量PC;l转移转移时:修改时:修改PC内容,使其指向转内容,使其指向转移的目标地址。移的目标地址。OP A1 A2A393、两地址结构、两地址结构l结果数地址隐含由结果数地址隐含由A1字段或字段或A2字段给字段给出,三地址结构变为两地址结构:出,三地址结构变为两地址结构:(1)结果数地址由结果数地址由A1字段给出,如字段给出,如80X86ADD AX,BX;AX(AX)(BX)(2)结果
6、数地址由结果数地址由A2字段给出,如字段给出,如VAX-11ADD R0,R1;R1(R0)(R1)OP A1 A2104、单地址结构、单地址结构l若为单操作数指令,如若为单操作数指令,如INC,NOT,NEG指令:指令:OP(A)A l若为双操作数指令,需设若为双操作数指令,需设累加器累加器,其,其中一个操作数隐含由累加器给出:中一个操作数隐含由累加器给出:(AC)OP(A)ACOP A115、零地址结构、零地址结构(1)隐含给出操作数的单地址指令,如隐含给出操作数的单地址指令,如OP(AC)AC(2)面向面向堆栈堆栈的操作:隐含给出操作数地的操作:隐含给出操作数地址为址为栈顶栈顶和和次栈顶
7、次栈顶;l需要压栈需要压栈(PUSH)和出栈指令和出栈指令(POP);l需将算法表达式转换成需将算法表达式转换成逆波兰表达式逆波兰表达式。12l例如:例如:(A/(B C)(D E)(A C),表,表示成逆波兰表达式为:示成逆波兰表达式为:ABC/DE ACl编程如下:编程如下:PUSH A MULPUSH B ADDPUSH C PUSH AMUL PUSH CDIV MULPUSH D SUBPUSH E POP Result13地址:地址:l一个一个寄存器寄存器l一个一个主存单元主存单元l堆栈堆栈l一个一个端口寄存器端口寄存器如何编址?如何编址?14(1)单独编址:单独编址:各自从各自从
8、“0”开始单独编开始单独编址,构成址,构成多个多个一维线性地址空间。一维线性地址空间。l指令较短;地址形成简单;主存编址指令较短;地址形成简单;主存编址范围较大。范围较大。(2)统一编址:统一编址:将各部件统一编址,构成将各部件统一编址,构成一个一个从从“0”开始的一维线性空间,开始的一维线性空间,对不同部件的访问反映在这个空间中对不同部件的访问反映在这个空间中的不同地址访问。的不同地址访问。l简化指令系统。简化指令系统。15(3)隐式地址隐式地址:操作数或操作数地址隐含:操作数或操作数地址隐含在某个寄存器或指定的存储单元中。在某个寄存器或指定的存储单元中。l不必进行地址计算,加快对这些部件不
9、必进行地址计算,加快对这些部件的访问。如的访问。如80X86中:中:MUL BL ;AX(AL)(BL)LOOP OK;(CX)10,则循环,则循环164.2.2 操作码结构操作码结构1、统一编码与逐位定义方式、统一编码与逐位定义方式(定长)(定长)0000 MOV0001 ADD0010 SUB0011 AND0100 OR0101 EOR OP(4位位)逐位定义逐位定义16种种32种种01172、方式码、方式码(定长)(定长)l将一条指令的操作码分为几个部分,将一条指令的操作码分为几个部分,每一部分表示与某一类基本操作有关每一部分表示与某一类基本操作有关的几种操作。的几种操作。l例如,例如
10、,NOVA-1200:指令系统:指令系统:23条条上百条上百条0 1 2 3 4 5 6 7 8 9 10 11 12 1314150 ACSACDOP移位移位 进位进位回回送送跳步跳步算算逻逻183、扩展操作码、扩展操作码(变长)(变长)l在指令长度一定的情况下,丰富指令在指令长度一定的情况下,丰富指令的种类:的种类:地址部分位数较多时,让操作码位数地址部分位数较多时,让操作码位数少些;少些;地址部分位数减少时,让操作码位数地址部分位数减少时,让操作码位数增多,以增加指令种类。增多,以增加指令种类。l信息量大,平均码长短。信息量大,平均码长短。l增加指令平均执行时间和指令译码的增加指令平均执
11、行时间和指令译码的复杂性。复杂性。19l例:某指令系统指令字长为例:某指令系统指令字长为16位,地位,地址码长度址码长度4位,设计中需要三地址指令位,设计中需要三地址指令15条,两地址指令条,两地址指令14条,单地址指令条,单地址指令31条,并留有表示零地址的可能。具条,并留有表示零地址的可能。具体安排如下:体安排如下:4444OP A1 A2A3200 0 0 01 1 1 0 15条三地址指令条三地址指令1 1 1 1 0 0 0 01 1 1 1 1 1 0 1 14条两地址指令条两地址指令1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 0 1 1 1 1 3
12、1条单地址指令条单地址指令1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1零地址指令扩展口零地址指令扩展口214.3 指令类型指令类型l一台计算机应包含哪些指令?一台计算机应包含哪些指令?越多越好?够用就行?越多越好?够用就行?l指令集必须是指令集必须是完备的完备的,否则编不出完,否则编不出完整的程序。整的程序。l完备性完备性:在一个有限的存储空间内,:在一个有限的存储空间内,对于任何可解的问题,一台计算机所对于任何可解的问题,一台计算机所提供的指令系统足够使用。提供的指令系统足够使用。l为便于讨论,
13、将指令分为为便于讨论,将指令分为六类六类。224.3.1 数据传送指令数据传送指令l功能:将数据从功能:将数据从源地址源地址处移动到处移动到目的目的地址地址处。处。l事实上,数据并没有从源地址移到目事实上,数据并没有从源地址移到目的地址,而是的地址,而是拷贝拷贝到新的位置,数据到新的位置,数据仍然在源地址中。仍然在源地址中。l把把“数据传送数据传送”称为称为“数据拷贝数据拷贝”更更合适。合适。23为什么要复制数据?为什么要复制数据?(1)给变量赋值,如:给变量赋值,如:MOV AX,BX ;AX(BX)(2)CPU只能将只能将少量少量的数据存在寄存器中,的数据存在寄存器中,必须有必须有存储器存
14、储器和和寄存器寄存器间的数据传送间的数据传送指令。指令。如:如:24把数据从内存取到寄存器把数据从内存取到寄存器MOV AX,DATA0 ;AX(DATA0)把寄存器中的数据存入存储器把寄存器中的数据存入存储器MOV(DATA1),AX ;DATA1(AX)一个寄存器拷贝到另一个寄存器一个寄存器拷贝到另一个寄存器MOV AX,BX ;AX(BX)25l常见的:常见的:MOV;从源点到终点;从源点到终点LOAD;从;从M到到RSTORE;从;从R到到MCLEAR;将;将“0”送到终点送到终点PUSH;将数据压栈;将数据压栈POP;将数据弹出;将数据弹出XCHG;将源与目的内容交换;将源与目的内容
15、交换l最基本的:最基本的:MOV264.3.2 算术运算指令算术运算指令 l功能:完成算术运算功能功能:完成算术运算功能l常见的:常见的:ADD;两数加;两数加SUB;两数减;两数减MUL;两数乘;两数乘DIV;两数除;两数除INC;加;加1DEC;减;减1l 最基本的:最基本的:ADD和和SUB多字节:多字节:ADC(带进位加带进位加)SBB(带进位减带进位减)274.3.3 逻辑运算指令逻辑运算指令l功能:执行数据的基本逻辑运算。功能:执行数据的基本逻辑运算。l常见的:常见的:AND;逻辑与;逻辑与OR;逻辑或;逻辑或NOT;逻辑非;逻辑非EOR;异或;异或l该类指令的功能来自该类指令的功
16、能来自位元逻辑运算规律位元逻辑运算规律l 最基本的:最基本的:AND,NOT或或 OR,NOT281、逻辑乘(、逻辑乘()l一位逻辑乘运算规则:一位逻辑乘运算规则:Xi Yi Zi 0 00 11 01 1 0001(a)(b)(c)(d)29由由(a)(b)和和(c)(d)式知:式知:l 0 任意数任意数=0;1 任意数任意数=原值。原值。l可以设置可以设置按位测试按位测试指令:让被检测量指令:让被检测量为目的操作数,源操作数为屏蔽字。为目的操作数,源操作数为屏蔽字。被检测的位:屏蔽字为被检测的位:屏蔽字为1;不检测的;不检测的位:屏蔽字为位:屏蔽字为0。l可以用来实现可以用来实现字段截取字
17、段截取:被截取的字:被截取的字段屏蔽字为段屏蔽字为1,其余字段屏蔽字为,其余字段屏蔽字为0。30例:例:R为:为:0011 0101 0001,截取中,截取中间间4位,步骤如下:位,步骤如下:l设屏蔽字设屏蔽字A:0000 1111 0000l将将(R)(A),即,即中间中间4位被截取下来。位被截取下来。0011 0101 00010000 1111 00000000 0101 000031由由(a)和和(d)式知:式知:l0 0=0,1 1=1。l自身相与,其值不变。自身相与,其值不变。l但可用来但可用来设置标志位设置标志位(记录前次运算(记录前次运算结果)结果)N、Z、V、C、P等。等。l
18、例:例:AND AX,AXJZ OK32由由(a)和和(b)式知:式知:l0 0=0,0 1=0。l可以设置可以设置按位清按位清指令。指令。l方法:若使目的操作数的某位为方法:若使目的操作数的某位为0,可设置源操作数的对应位为可设置源操作数的对应位为0,其余,其余位为位为1,二者相与。,二者相与。332、逻辑加(、逻辑加()l一位逻辑加运算规则:一位逻辑加运算规则:Xi Yi Zi 0 00 11 01 1 0111(a)(b)(c)(d)34由由(c)和和(d)式知:式知:l1 0=1,1 1=1。l可以设置可以设置按位置按位置指令。指令。l方法:若使目的操作数的某位为方法:若使目的操作数的
19、某位为1,可设置源操作数的对应位为可设置源操作数的对应位为1,其余,其余位为位为0,二者相或。,二者相或。35由由(a)和和(d)式知:式知:l0 0=0,1 1=1。l通过自身相或通过自身相或设置标志位设置标志位,如:,如:标志位标志位P=1,即,即1的个数为偶数。的个数为偶数。1001 11111001 11111001 1111 36AND运算常与运算常与OR运算配合用来运算配合用来抽取抽取和组合和组合那些被组装在不同数据字的字那些被组装在不同数据字的字段。例:段。例:37例:例:A单元:单元:0111 0101 0011 B单元:单元:1001 1001 1010 欲得到:欲得到:10
20、01 0101 1010l设屏蔽字,并存入设屏蔽字,并存入D单元,即单元,即 D单元:单元:0000 1111 0000l第一步,截取第一步,截取A单元中单元中4位:位:A:D:0111 0101 00110000 1111 0000A:0000 0101 0000 38l第二步,去掉第二步,去掉B单元中单元中4位位 l第三步第三步则则A单元即为所求的单元即为所求的T字段。字段。:B:1111 0000 11111001 1001 1010 B:1001 0000 1010 A:B:0000 0101 00001001 0000 1010 A:1001 0101 1010 393、按位加(异或
21、)、按位加(异或)l一位按位加运算规则:一位按位加运算规则:Xi Yi Zi 0 00 11 01 1 0110(a)(b)(c)(d)40由由(a)和和(d)式知:式知:l0 0=0,1 1=0。l相同的两个数异或,结果为相同的两个数异或,结果为0。l可可判判两个数的两个数的全等全等。l若自身进行异或操作,又可达到若自身进行异或操作,又可达到清零清零的目的。的目的。41由由(c)和和(d)式知:式知:l1 0=1,1 1=0。l可以修改某位(可以修改某位(取反取反)l方法:若使目的操作数的某位取反,方法:若使目的操作数的某位取反,可设置源操作数的对应位为可设置源操作数的对应位为1,其余,其余
22、位为位为0,二者异或。,二者异或。42由由(a)(d)式知:式知:l按位加结果按位加结果“1”的个数可能增加,的个数可能增加,也可能减少;也可能减少;逻辑乘只能使逻辑乘只能使“1”的个数减少;的个数减少;逻辑加只能使逻辑加只能使“1”的个数增加。的个数增加。l可通过异或来可通过异或来生成随机数生成随机数。434.3.4 移位指令移位指令l功能:对数据的位进行移动。功能:对数据的位进行移动。l常见的:常见的:SHL;逻辑左移;逻辑左移 ROL;循环左移;循环左移SHR;逻辑右移;逻辑右移 ROR;循环右移;循环右移SAL;算术左移;算术左移 RCL;带进位循环左移;带进位循环左移SAR;算术右移
23、;算术右移 RCR;带进位循环右移;带进位循环右移l最基本的:最基本的:左移(左移(RL),右移(),右移(RR)44问题问题1:移出字之外的位如何处理?:移出字之外的位如何处理?l根据程序的需要,是否需要保留?根据程序的需要,是否需要保留?l设计了两类指令:移位和循环移位。设计了两类指令:移位和循环移位。移位指令移位指令:移到字之外的位将舍弃。:移到字之外的位将舍弃。循环移位指令循环移位指令:把字的一端移出的位:把字的一端移出的位放回到字的另一端,任何一次循环操放回到字的另一端,任何一次循环操作的结果都可以用另一次循环移位的作的结果都可以用另一次循环移位的操作使其还原。操作使其还原。45问题
24、问题2:空位的补位问题:空位的补位问题 1.算术左移算术左移(SAL)和逻辑左移和逻辑左移(SHL)操作操作相同,相同,空位补空位补0。例如,。例如,SAL/SHL OPR,CNT;lOPR:8/16/32的通用寄存器,或内存单的通用寄存器,或内存单元中的操作数;元中的操作数;lCNT:放在寄存器:放在寄存器CL中的移位次数。中的移位次数。462.算术右移算术右移(SAR)和逻辑右移和逻辑右移(SHR):l算术右移:左边空位填充该字的算术右移:左边空位填充该字的初始初始符号位符号位;l逻辑右移:左边空位逻辑右移:左边空位填充填充0。47移位和循环移位指令用途:移位和循环移位指令用途:1.移位操
25、作的一个重要用途是:乘和除移位操作的一个重要用途是:乘和除2的的n次幂次幂l将一个正数左移将一个正数左移K位,结果等于原数位,结果等于原数乘以乘以2K;l将一个正数右移将一个正数右移K位,结果等于原数位,结果等于原数除以除以2K。482.使用移位操作加快某些特定数学运算使用移位操作加快某些特定数学运算l如:对正整数如:对正整数n,计算,计算10n10n=8n2n8n=n左移左移3位位2n=n左移左移1位位l通过通过两次移位两次移位和和1次加法次加法得到了结果,得到了结果,显然比乘法操作更快。显然比乘法操作更快。49l对对负整数负整数的的算术右移算术右移操作会产生错误如:操作会产生错误如:1 1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 组成 原理 第四
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内