欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    计算机组成原理第四章.ppt

    • 资源ID:67581388       资源大小:503.50KB        全文页数:140页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    计算机组成原理第四章.ppt

    第四章第四章 指令系统指令系统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汇编指令:算术运算指令汇编指令:算术运算指令的操作数不能是存储变量,必须是寄的操作数不能是存储变量,必须是寄存器。存器。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,BAdd R3,R1,R2Store C,R3l一条一条ALU指令,可能有指令,可能有3个操作数,可个操作数,可能有能有2个操作数,也可能无操作数。个操作数,也可能无操作数。54.2 指令格式指令格式l一条指令由一条指令由操作码操作码和和地址码地址码两部分组两部分组成,其格式为:成,其格式为:l操作码操作码OP(Operation):表明完成):表明完成何种操作;何种操作;l地址码地址码Addr(Address):表明参与):表明参与操作的操作数存放于何处。操作的操作数存放于何处。OP Addr64.2.1 地址码结构地址码结构1、四地址结构、四地址结构其中,其中,OP:操作码;:操作码;A1:第一个操作数地址;:第一个操作数地址;A2:第二个操作数地址;:第二个操作数地址;A3:结果数存放地址;:结果数存放地址;A4:下一条指令地址;:下一条指令地址;OP A1 A2A3A47l功能功能:A3(A1)OP(A2);下一条指令地址由下一条指令地址由A4段给出。段给出。l操作数地址和结果地址明确给出,可操作数地址和结果地址明确给出,可以不设寻址方式;以不设寻址方式;l指令可以无序存放;指令可以无序存放;l直接给出下一条指令地址,可以不设直接给出下一条指令地址,可以不设转移指令。转移指令。l问题问题:指令过长;程序转移控制不灵:指令过长;程序转移控制不灵活;程序不易修改。活;程序不易修改。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)结果数地址由结果数地址由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)面向面向堆栈堆栈的操作:隐含给出操作数地的操作:隐含给出操作数地址为址为栈顶栈顶和和次栈顶次栈顶;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)单独编址:单独编址:各自从各自从“0”开始单独编开始单独编址,构成址,构成多个多个一维线性地址空间。一维线性地址空间。l指令较短;地址形成简单;主存编址指令较短;地址形成简单;主存编址范围较大。范围较大。(2)统一编址:统一编址:将各部件统一编址,构成将各部件统一编址,构成一个一个从从“0”开始的一维线性空间,开始的一维线性空间,对不同部件的访问反映在这个空间中对不同部件的访问反映在这个空间中的不同地址访问。的不同地址访问。l简化指令系统。简化指令系统。15(3)隐式地址隐式地址:操作数或操作数地址隐含:操作数或操作数地址隐含在某个寄存器或指定的存储单元中。在某个寄存器或指定的存储单元中。l不必进行地址计算,加快对这些部件不必进行地址计算,加快对这些部件的访问。如的访问。如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例如,例如,NOVA-1200:指令系统:指令系统:23条条上百条上百条0 1 2 3 4 5 6 7 8 9 10 11 12 1314150 ACSACDOP移位移位 进位进位回回送送跳步跳步算算逻逻183、扩展操作码、扩展操作码(变长)(变长)l在指令长度一定的情况下,丰富指令在指令长度一定的情况下,丰富指令的种类:的种类:地址部分位数较多时,让操作码位数地址部分位数较多时,让操作码位数少些;少些;地址部分位数减少时,让操作码位数地址部分位数减少时,让操作码位数增多,以增加指令种类。增多,以增加指令种类。l信息量大,平均码长短。信息量大,平均码长短。l增加指令平均执行时间和指令译码的增加指令平均执行时间和指令译码的复杂性。复杂性。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 31条单地址指令条单地址指令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为便于讨论,将指令分为为便于讨论,将指令分为六类六类。224.3.1 数据传送指令数据传送指令l功能:将数据从功能:将数据从源地址源地址处移动到处移动到目的目的地址地址处。处。l事实上,数据并没有从源地址移到目事实上,数据并没有从源地址移到目的地址,而是的地址,而是拷贝拷贝到新的位置,数据到新的位置,数据仍然在源地址中。仍然在源地址中。l把把“数据传送数据传送”称为称为“数据拷贝数据拷贝”更更合适。合适。23为什么要复制数据?为什么要复制数据?(1)给变量赋值,如:给变量赋值,如:MOV AX,BX ;AX(BX)(2)CPU只能将只能将少量少量的数据存在寄存器中,的数据存在寄存器中,必须有必须有存储器存储器和和寄存器寄存器间的数据传送间的数据传送指令。指令。如:如: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;将源与目的内容交换;将源与目的内容交换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该类指令的功能来自该类指令的功能来自位元逻辑运算规律位元逻辑运算规律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可以用来实现可以用来实现字段截取字段截取:被截取的字:被截取的字段屏蔽字为段屏蔽字为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例:例: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方法:若使目的操作数的某位为方法:若使目的操作数的某位为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 欲得到:欲得到:1001 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、按位加(异或)、按位加(异或)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,其余,其余位为位为0,二者异或。,二者异或。42由由(a)(d)式知:式知:l按位加结果按位加结果“1”的个数可能增加,的个数可能增加,也可能减少;也可能减少;逻辑乘只能使逻辑乘只能使“1”的个数减少;的个数减少;逻辑加只能使逻辑加只能使“1”的个数增加。的个数增加。l可通过异或来可通过异或来生成随机数生成随机数。434.3.4 移位指令移位指令l功能:对数据的位进行移动。功能:对数据的位进行移动。l常见的:常见的:SHL;逻辑左移;逻辑左移 ROL;循环左移;循环左移SHR;逻辑右移;逻辑右移 ROR;循环右移;循环右移SAL;算术左移;算术左移 RCL;带进位循环左移;带进位循环左移SAR;算术右移;算术右移 RCR;带进位循环右移;带进位循环右移l最基本的:最基本的:左移(左移(RL),右移(),右移(RR)44问题问题1:移出字之外的位如何处理?:移出字之外的位如何处理?l根据程序的需要,是否需要保留?根据程序的需要,是否需要保留?l设计了两类指令:移位和循环移位。设计了两类指令:移位和循环移位。移位指令移位指令:移到字之外的位将舍弃。:移到字之外的位将舍弃。循环移位指令循环移位指令:把字的一端移出的位:把字的一端移出的位放回到字的另一端,任何一次循环操放回到字的另一端,任何一次循环操作的结果都可以用另一次循环移位的作的结果都可以用另一次循环移位的操作使其还原。操作使其还原。45问题问题2:空位的补位问题:空位的补位问题 1.算术左移算术左移(SAL)和逻辑左移和逻辑左移(SHL)操作操作相同,相同,空位补空位补0。例如,。例如,SAL/SHL OPR,CNT;lOPR:8/16/32的通用寄存器,或内存单的通用寄存器,或内存单元中的操作数;元中的操作数;lCNT:放在寄存器:放在寄存器CL中的移位次数。中的移位次数。462.算术右移算术右移(SAR)和逻辑右移和逻辑右移(SHR):l算术右移:左边空位填充该字的算术右移:左边空位填充该字的初始初始符号位符号位;l逻辑右移:左边空位逻辑右移:左边空位填充填充0。47移位和循环移位指令用途:移位和循环移位指令用途:1.移位操作的一个重要用途是:乘和除移位操作的一个重要用途是:乘和除2的的n次幂次幂l将一个正数左移将一个正数左移K位,结果等于原数位,结果等于原数乘以乘以2K;l将一个正数右移将一个正数右移K位,结果等于原数位,结果等于原数除以除以2K。482.使用移位操作加快某些特定数学运算使用移位操作加快某些特定数学运算l如:对正整数如:对正整数n,计算,计算10n10n=8n2n8n=n左移左移3位位2n=n左移左移1位位l通过通过两次移位两次移位和和1次加法次加法得到了结果,得到了结果,显然比乘法操作更快。显然比乘法操作更快。49l对对负整数负整数的的算术右移算术右移操作会产生错误如:操作会产生错误如: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的补码的补码503.测试一个字的所有位测试一个字的所有位l可进行循环移位,每次移一位,需要可进行循环移位,每次移一位,需要测试的位总在测试的位总在CF中,测试过程相当容中,测试过程相当容易;易;l当所有位测试过后,又回到初始值。当所有位测试过后,又回到初始值。514.3.5 程序控制类指令程序控制类指令l程序的执行分为:顺序、分支、循环、程序的执行分为:顺序、分支、循环、过程调用等情况过程调用等情况1.顺序执行顺序执行:PC加一个增量,由硬件加一个增量,由硬件实现,无需设置指令。实现,无需设置指令。2.分支:分支:几乎所有程序都会遇到下列情几乎所有程序都会遇到下列情况,对数据进行检查,根据检查结果况,对数据进行检查,根据检查结果决定指令的不同执行顺序。决定指令的不同执行顺序。52l如符号函数:如符号函数:分支程序的结构分支程序的结构:5354l分支点要做两件事:菱形框说的是分支点要做两件事:菱形框说的是比比较测试较测试,Yes,No说的是说的是条件转移条件转移。即:处理分支点需要两条指令:即:处理分支点需要两条指令:比较比较和和条件转移条件转移指令。指令。例:例:80X86中,第一菱形框的处理:中,第一菱形框的处理:CMP X,0JE OK1l汇合点需要汇合点需要无条件转移指令无条件转移指令。例:例:JMP OK3 553.循环循环:从理论上讲,只要有:从理论上讲,只要有条件转移条件转移指令指令就可实现循环。就可实现循环。l某些计算机提供了某些计算机提供了专用的指令专用的指令,一个,一个计数器在执行每次循环时都要加或减计数器在执行每次循环时都要加或减某个常数,每次执行循环时都要对计某个常数,每次执行循环时都要对计算器进行测试,如果一定的条件成立,算器进行测试,如果一定的条件成立,循环将结束。循环将结束。l如:如:80X86中,中,Loop ok ;CX-1CX CX0则循环;则循环;否则,结束循环。否则,结束循环。56l例:求例:求SUM=12+22+32+1002 K=I*IS=S+KAXBLDXAL57MOV AL,1MOV BL,1MOV CX,100MOV DX,0OK:MUL BL;AX(AL)(BL)ADD DX,AXINC BLMOV AL,BLLOOP OKMOV SUM,DXHLTDEC CXJNZ OK584.过程调用过程调用:l过程:执行某种任务的指令集合,可过程:执行某种任务的指令集合,可被其他部分调用。被其他部分调用。l常用常用子程序子程序来代替过程。来代替过程。l通常设置通常设置过程调用指令过程调用指令来完成。来完成。l与转移指令不同,被调用的过程完成与转移指令不同,被调用的过程完成后,必须返回到调用前的语句。后,必须返回到调用前的语句。59l一种方法:由过程调用指令把返回地一种方法:由过程调用指令把返回地址存放到址存放到寄存器寄存器或或内存单元内存单元中。中。如果过程是递归的,每次被调用时应如果过程是递归的,每次被调用时应该把返回地址放到不同的地方。该把返回地址放到不同的地方。l最好方法:把返回地址最好方法:把返回地址压入堆栈压入堆栈,过,过程结束时,从栈顶弹出返回地址,并程结束时,从栈顶弹出返回地址,并放入放入PC。递归也不会出现问题,返回地址被自递归也不会出现问题,返回地址被自动保存,不会破坏原有的地址。动保存,不会破坏原有的地址。5.停机指令停机指令:如程序结束。:如程序结束。604.3.6 输入输出指令输入输出指令 l为向一个为向一个I/O设备发出指令,处理器必设备发出指令,处理器必须能够对设备寻址,并提供相应的命须能够对设备寻址,并提供相应的命令字。令字。l两种方法可以用来对设备寻址:两种方法可以用来对设备寻址:存储存储器映射器映射I/O和和专用的专用的I/O指令指令。611.存储器映射存储器映射I/Ol地址空间的一部分分配给地址空间的一部分分配给I/O设备,对设备,对这些地址的读和写被解释为对这些地址的读和写被解释为对I/O设备设备的指令。的指令。l用传送指令用传送指令MOV将命令送给将命令送给I/O设备。设备。l存储器系统将忽略该操作,因为地址存储器系统将忽略该操作,因为地址指明这部分存储器空间是用于指明这部分存储器空间是用于I/O的。的。622.专用专用I/O指令指令l采用专用的采用专用的I/O指令:指令:IN和和OUT指令。指令。如如80X86输入指令:输入指令:IN REG,DEVADDR 其中,其中,REG必须是寄存器必须是寄存器AL或或AX;DEVADDR为设备地址。为设备地址。输出指令:输出指令:OUT DEVADDR,REG634.4 寻址方式寻址方式l寻址寻址:如何给定所需要的操作数或操:如何给定所需要的操作数或操作数地址。作数地址。l一种简单和直观的方法是:由指令的一种简单和直观的方法是:由指令的地址码部分地址码部分直接给出直接给出。l由于由于指令字长的限制指令字长的限制,这种做法很不,这种做法很不现实。现实。l早期计算机采用早期计算机采用双倍字长或多倍字长双倍字长或多倍字长指令指令来增加地址码域,需多次访存。来增加地址码域,需多次访存。64l另一种方法:不增加地址部分长度,另一种方法:不增加地址部分长度,改变指令的结构形式。改变指令的结构形式。l指令中地址字段给出的有时并不是操指令中地址字段给出的有时并不是操作数的完整地址,称为作数的完整地址,称为形式地址形式地址。l根据寻址方式的确切含义,经过计算根据寻址方式的确切含义,经过计算去解释地址码域,得到直接访问主存去解释地址码域,得到直接访问主存的地址,称为的地址,称为有效地址有效地址EA(effective address)。)。l寻址方式寻址方式:将指令中的形式地址生成:将指令中的形式地址生成有效地址的各种方式。有效地址的各种方式。65目前大家的共识是:目前大家的共识是:1.寻址方式设置目的是为高效编程提供寻址方式设置目的是为高效编程提供相应的支持。相应的支持。2.一个高效的指令系统并不需要太多的一个高效的指令系统并不需要太多的寻址方式,有寻址方式,有立即寻址立即寻址、寄存器寻址寄存器寻址、直接寻址直接寻址和和变址寻址变址寻址就足够了。就足够了。3.一个指令系统中的寻址方式必须是少一个指令系统中的寻址方式必须是少而清晰的,或者提供唯一一种选择方而清晰的,或者提供唯一一种选择方式,或者提供所有可能的选择。式,或者提供所有可能的选择。664.4.1 常见寻址方式常见寻址方式1、寄存器寻址、寄存器寻址(register addressing)例:例:ADD R3,R4 RegsR3RegsR3RegsR4l操作数在操作数在CPU寄存器中,在指令中给寄存器中,在指令中给出寄存器名称。出寄存器名称。lCPU从寄存器中读取数据要比从内存从寄存器中读取数据要比从内存中读取数据快得多。中读取数据快得多。67l软件工作者的多年观测表明,大部分软件工作者的多年观测表明,大部分操作数都会被重复使用。操作数都会被重复使用。l为减少访问存储器的次数,目前大多为减少访问存储器的次数,目前大多数新型计算机都提供大量的寄存器。数新型计算机都提供大量的寄存器。l既缩短程序的编制,又节省程序的执既缩短程序的编制,又节省程序的执行时间。行时间。l寄存器寻址成为大多数计算机最常用寄存器寻址成为大多数计算机最常用的寻址方式。的寻址方式。68寄存器寻址方式,常用于:寄存器寻址方式,常用于:(1)表达式计算表达式计算例如,例如,80X86中中ADD AX,BX ;AX (AX)(BX)SUB AX,BX ;AX (AX)(BX)(2)传递数据传递数据可以是寄存器到寄存器间传送,或从可以是寄存器到寄存器间传送,或从主存中取数到寄存器,或将寄存器中主存中取数到寄存器,或将寄存器中的操作数写入主存。的操作数写入主存。69例如,例如,80X86中中MOV AX,BX ;AX (BX)MOV AX,BX;AX MemRegsBXMOV BX,AX;MemRegsBX (AX)(3)存放临时变量存放临时变量如果一个操作数要被访问多次,可将其放如果一个操作数要被访问多次,可将其放入寄存器中。入寄存器中。例如,例如,80X86中中MOV CX,100 ;设置循环变量;设置循环变量CX 100Loop OK ;(CX)10,循环,循环 702、立即寻址、立即寻址(immediate addressing)例:例:ADD R3,#3 RegsR3 RegsR33l操作数在指令中被明确的给出。操作数在指令中被明确的给出。l当指令一旦被取出,操作数立即可用。当指令一旦被取出,操作数立即可用。(故此得名)(故此得名)l据统计,在程序中出现概率在据统计,在程序中出现概率在40%左左右。右。71立即寻址,常用于:立即寻址,常用于:(1)对变量预置初值。对变量预置初值。(2)提供与变量进行算术运算和逻辑运算提供与变量进行算术运算和逻辑运算的常数。的常数。(3)作为表或字符串的结束条件,分支或作为表或字符串的结束条件,分支或循环中与变量进行比较的常数。循环中与变量进行比较的常数。(4)作为变址指针等。作为变址指针等。72优点:优点:l取操作数时,不需额外内存访问开销。取操作数时,不需额外内存访问开销。缺点:缺点:l只有常数才能使用这种方式;只有常数才能使用这种方式;l数的大小受到地址字段大小的限制;数的大小受到地址字段大小的限制;l只能定义小整型常量。只能定义小整型常量。733、直接寻址、直接寻址(direct addressing)例:例:ADD R1,100 RegsR1 RegsR1Mem100l操作数在一个存储器单元中,指令中操作数在一个存储器单元中,指令中明确地给出这个单元的完整地址。明确地给出这个单元的完整地址。l访问的永远是同一个内存地址。访问的永远是同一个内存地址。l直接寻址只能用于访问全局变量。直接寻址只能用于访问全局变量。l“直接直接”意味着不变,只能用在不变意味着不变,只能用在不变的场合。的场合。74l寄存器寻址寄存器寻址、立即寻址立即寻址和和直接寻址直接寻址可可以解决顺序程序设计问题。以解决顺序程序设计问题。l表和数组表和数组的处理,采用顺序程序设计的处理,采用顺序程序设计重复次数多,出错几率大。重复次数多,出错几率大。l采用顺序程序设计,程序冗长,且降采用顺序程序设计,程序冗长,且降低了编程速度。低了编程速度。l对重复执行的语句对重复执行的语句由程序控制由程序控制更好。更好。75l例如:例如:SUM=1+2+3+100 MOV AX,NUM1 ADC AX,NUM2 ADC AX,NUM3 ADC AX,NUM100 MOV SUM,AX SUM NUM1 1 NUM2 2 NUM100 100764、寄存器间接寻址、寄存器间接寻址(register indirect addressing)例:例:ADD R4,(R1)RegsR4 RegsR4+MemRegsR1l操作数有效地址在寄存器中,而这个操作数有效地址在寄存器中,而这个寄存器在指令中给出。寄存器在指令中给出。l包含操作地址的寄存器称为包含操作地址的寄存器称为指针指针,间,间接寻址是通过指针查找操作数地址。接寻址是通过指针查找操作数地址。l实现地址从实现地址从固定固定到到变变的转化。的转化。77l例如:例如: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 NUM100 10078l在循环程序中没有使用任何内存地址在循环程序中没有使用任何内存地址.l程序访问主存时,不需要在指令中定义程序访问主存时,不需要在指令中定义完整地址,只定义一个相对地址完整地址,只定义一个相对地址.l间接寻址允许在程序运行时,计算目标间接寻址允许在程序运行时,计算目标地址,以访问不同的内存字地址,以访问不同的内存字.l能修改指令本身的程序称能修改指令本身的程序称自修改程序自修改程序.l想出这个主意的人是想出这个主意的人是冯冯 诺依曼诺依曼.795、变址寻址、变址寻址(indexed addressing)例:例:ADD R4,100(R3)RegsR4 RegsR4+MemRegsR3+100lEA=(R变变)+D D:基准量(形式地址):基准量(形式地址)R变变:位移量(变址量):位移量(变址量)l基准量应能提供全字长地址码基准量应能提供全字长地址码l在定长指令格式中,由于地址码位数在定长指令格式中,由于地址码位数有限,由有限,由R变变提供基准地址。提供基准地址。80l形成形成数组数组或或表表中连续元素地址的又一中连续元素地址的又一方案。方案。数组元素首地址由一个变址寄存器的数组元素首地址由一个变址寄存器的内容加上一个已知偏移量生成;内容加上一个已知偏移量生成;每次循环,变址寄存器加每次循环,变址寄存器加1,形成下,形成下一元素地址。一元素地址。81l例如:例如: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 10082l采用变址寻址方式比采用寄存器间接采用变址寻址方式比采用寄存器间接寻址方式寻址方式效率低效率低,需要进行一次加法,需要进行一次加法.l为什么还要引出变址方式呢?为什么还要引出变址方式呢?原因是:采用变址寻址比采用寄存器原因是:采用变址寻址比采用寄存器间接寻址编程间接寻址编程更灵活性更灵活性、更有效更有效。l例:从数据区例:从数据区DATA1传递传递100个字节到个字节到数据区数据区DATA2 8384(1)采用寄存器间接寻址,采用寄存器间接寻址,80X86指令编程指令编程 LEA SI,DATA1 LEA DI,DATA2 MOV CX,100OK:MOV AL,SI MOV DI,AL INC SI INC DI LOOP OK HLT85(2)采用变址寻址,采用变址寻址,80X86指令编程指令编程 MOV BX,0 MOV CX,100OK:MOV AL,DATA1BX MOV DATA2BX,AL INC BX LOOP OK HLT86l除顺序和循环程序外,就是除顺序和循环程序外,就是分支分支与与跳转跳转。l分支指令主要出现在循环和分支指令主要出现在循环和IF语句中,语句中,条件满足,转移到附近的某一条指令。条件满足,转移到附近的某一条指令。l差不多一半差不多一半的条件分支指令跳转的范的条件分支指令跳转的范围不超过围不超过16条指令条指令。l考虑以程序计数器考虑以程序计数器PC存放的当前地存放的当前地址为准,加上分支地址,实现转移。址为准,加上分支地址,实现转移。876、相对寻址、相对寻址(PC relative addressing)lEA=(PC)+D(1)实现转移指令实现转移指令l例如:在例如:在80X86中,条件转移指令汇中,条件转移指令汇编格式:编格式:JXX DSTJXX:JZ/JE,JNZ,JS,JNC,若条件满足,则若条件满足,则PC(PC)+DISP;否;否则,则,PC不变。不变。88(2)实现程序浮动实现程序浮动l将相对寻址换一种表述:将相对寻址换一种表述:DISP=EA-(PC),l不难看出,只要保证操作数有效地址不难看出,只要保证操作数有效地址和当前指令地址的相对距离不变,就和当前指令地址的相对距离不变,就可以使指令和操作数在可用的存储空可以使指令和操作数在可用的存储空间中一起移动,原程序可不加修改,间中一起移动,原程序可不加修改,仍能保证程序的正确执行。仍能保证程序的正确执行。89(3)形成下一条指令地址形成下一条指令地址lPC+增量指向下一条指令。增量指向下一条指令。(4)实现过程返回实现过程返回l在在80X86中,过程返回指令中,过程返回指令RET没有没有明确给出返回地址,如何实现返回?明确给出返回地址,如何实现返回?l靠相对寻址确定目标地址,即:靠相对寻址确定目标地址,即:返回地址返回地址=(PC)DISP。90917、基址寻址、基址寻址 EA=(R基基)+Dl在多道程序环境下,如果将程序原封在多道程序环境下,如果将程序原封不动装入,程序是不能执行的。不动装入,程序是不能执行的。l用户不能自行确定自己的主存区,而用户不能自行确定自己的主存区,而编程时的程序地址是从零开始的。编程时的程序地址是从零开始的。l解决解决程序再定位程序再定位问题。问题。l在有限字长的情况下,在有限字长的情况下,扩大寻址空间扩大寻址空间(如(如80X86)。)。92如:计算如:计算32A0H+1295H=?MOV AX,0100H MOV BX,0200H ADD AX,BX MOV 0300H,AX HLT0100H 32A0H0200H 1295H0300H?93若程序存放在若程序存放在2000H起始的单元中:起始的单元中:2000H MOV AX,0100H2001H MOV BX,0200H2002H ADD AX,BX2003H MOV 0300H,AX2004H HLT 2100H 32A0H2200H 1295H2300H94l存放后操作数地址发生变化,程序无存放后操作数地址发生变化,程序无法正确执行。法正确执行。l引入引入基址寻址基址寻址方式。方式。l程序执行时,操作系统将用户作业的程序执行时,操作系统将用户作业的起始地址装入起始地址装入基址寄存器基址寄存器。l处理机访问时,地址转换硬件将程序处理机访问时,地址转换硬件将程序的相对地址与基址寄存器的内容相加,的相对地址与基址寄存器的内容相加,相加后的和作为主存的绝对地址进行相加后的和作为

    注意事项

    本文(计算机组成原理第四章.ppt)为本站会员(s****8)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开