




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、10 九月 20221第1章 计算机系统概论第2章 运算方法和运算器第3章 存储系统第4章 指令系统第5章 中央处理器(CPU)第6章 总线系统第7章 输入输出(I/O)系统第8章 并行计算机系统10 九月 20222第4章 指令系统4.1 指令系统概述4.2 指令格式4.3 指令分类4.4 寻址方式4.5 指令系统实例10 九月 202234.1 指令系统概述4.1.1 指令系统的发展4.1.2 指令系统的性能要求10 九月 202244.1.1 指令系统的发展指令是计算机硬件能够识别并直接执行操作的命令一台计算机中所有指令的集合构成了该机的指令系统指令系统是表征计算机性能的重要因素,其格式
2、与功能不仅直接影响到机器的硬件结构,也直接影响到系统软件,影响到机器的适用范围设计一个合理有效、功能齐全、通用性强、丰富的指令系统是至关重要的10 九月 20225从计算机组成的层次结构来说,计算机的指令分为微指令、机器指令和宏指令三类微指令是微程序级的命令,属于硬件宏指令是由若干条机器指令组成的软件指令,属于软件机器指令,也就是我们通常所说的指令,介于微指令与宏指令之间,每条指令可完成一个独立的算术运算或逻辑运算操作10 九月 20226指令系统的发展经历了从简单到复杂的演变过程1950至60年代,分立元件(晶体管或电子管)计算机的硬件结构简单,所支持的指令系统只有十几至几十条最基本的指令,
3、而且寻址方式简单1960年代中期,集成电路计算机的硬件功能不断增强,其指令系统也越来越丰富1960年代后期,基本指令系统相同、基本体系结构相同的系列计算机开始出现,从而解决了各机种的软件兼容问题同一系列的各机种具有共同的指令集,而且新推出的机种其指令系统一定包含旧机种的全部指令10 九月 202271970年代,高级语言成为主要程序设计语言,计算机应用日益普及计算机设计者增设了各种各样复杂的、面向高级语言的指令,使指令系统越来越庞大称为复杂指令系统计算机(Complex Instruction Set Computer),简称CISC不仅使计算机研制开发周期变长,正确性难以保证,调试维护困难,
4、而且大量使用频率很低的复杂指令造成了硬件资源的浪费人们提出了精简指令系统计算机(Reduced Instruction Set Computer),简称RISC选取使用频率最高的一些简单指令,指令条数少;指令长度固定,指令格式种类少,寻址方式种类少;只有取数/存数指令访问存储器,其余指令的操作都在寄存器之间进行10 九月 202284.1.2 指令系统的性能要求1. 完备性2. 有效性3. 规整性4. 兼容性10 九月 20229指令系统的性能决定了计算机的基本功能一个完善的指令系统应满足四个方面的要求:完备性、有效性、规整性、兼容性10 九月 2022101. 完备性指令系统的完备性是指用汇
5、编语言编写各种程序时,指令系统直接提供的指令足够使用,而不必用软件来实现完备性要求指令系统丰富、功能齐全、使用方便一台计算机中必不可少的最基本的指令构成了指令系统的完备性而其他一些指令则可以通过基本指令来实现,或者直接通过硬件来实现在指令系统中采用硬件指令,可以提高程序执行速度,也便于用户编写程序10 九月 2022112有效性有效性是指利用指令系统提供的指令而编写的程序能够高效率地运行高效率主要表现在程序占据存储空间小,执行速度快通常,一个功能完善的指令系统必定有很好的有效性10 九月 2022123规整性规整性是指指令系统的对称性、匀齐性、指令格式和数据格式的一致性指令的对称性是指在指令系
6、统中所有的寄存器和存储器单元都可同等对待,所有的指令都可使用各种寻址方式这对提高程序的可读性、简化程序设计带来便利指令的匀齐性是指一种操作性质的指令可以支持各种数据类型例如,算术运算指令可支持字节、字和双字整数运算,十进制数运算,单、双精度浮点运算等因此,程序设计者在选用指令时无须考虑数据类型,可提高编程效率指令格式和数据格式的一致性是指指令长度和数据长度有一定的关系,以方便处理和存取10 九月 2022134兼容性兼容性是指计算机的体系结构设计基本相同,计算机之间具有相同的基本结构、数据表示和共同的基本指令集合因此指令系统也是兼容的,即同一个软件可以不加修改就在其他系统结构相同的机器上使用做
7、到所有软件都完全兼容是不可能的目前,对于同一系列的计算机,新推出机种的指令系统通常包含旧机种的全部指令,实现了“向上兼容”,即低档机上运行的软件不需任何修改便可在高档机上运行10 九月 2022144.2 指令格式4.2.1 操作码4.2.2 地址码4.2.3 指令字长度4.2.4 指令助记符10 九月 202215机器指令是用机器字来表示的表示一条指令的机器字称为指令字(简称指令)指令格式是指令字用二进制代码表示的结构形式,一般由两部分组成操作码(Operation Code)字段表征指令的操作特性与功能地址码(Address Code)字段通常用来指定参与操作的操作数的地址10 九月 20
8、22164.2.1 操作码设计计算机时,对指令系统的每一条指令都要规定一个操作码,它是指明指令操作性质的命令码CPU从主存每次取出一条指令,指令中的操作码告诉CPU应该执行什么性质的操作例如,可用操作码“000”表示“加法”操作,操作码“010”表示“减法”操作等不同的操作码代表不同的指令10 九月 202217组成操作码字段的位数一般取决于计算机指令系统的规模所需指令数越多,组成操作码字段的位数也就越多例如,一个指令系统只有8条指令,则需要3位操作码;如果有32条指令,则需要5位操作码一般来说,一个包含n位操作码的指令系统最多能够表示2n条指令10 九月 2022184.2.2 地址码1.
9、零地址指令2. 一地址指令3. 二地址指令4. 三地址指令5. 多地址指令10 九月 202219指令系统中的地址码用来描述指令的操作对象在地址码中可以直接给出操作数本身,也可以给出操作数在存储器或寄存器中的地址、操作数在存储器中的间接地址等根据指令功能的不同,一条指令中可以有一个、两个或者多个操作数地址,也可以没有操作数地址一般情况下要求有两个操作数地址,但若要考虑存放操作结果,就需要有三个操作数地址10 九月 202220根据地址码的数量,可以将指令的格式分为:零地址指令、一地址指令、二地址指令、三地址指令和多地址指令10 九月 2022211. 零地址指令指令格式中没有地址码部分,只有操
10、作码该类指令分两种情况:一种是无需操作数如空操作指令、停机指令等另一种是操作数为默认的(或称隐含的)如操作数在累加器或者堆栈中,它们的操作数由硬件机构来提供10 九月 2022222. 一地址指令常称为单操作数指令,该指令中只有一个地址码这种指令可能是单操作数运算给出的地址既作为操作数的地址,也作为操作结果的存储地址也可能是二元运算指令中提供一个操作数,另一个操作数则是隐含的例如,以运算器中累加寄存器AC中的数据为被操作数,指令字的地址码字段所指向的数为操作数,操作结果又放回累加寄存器AC中10 九月 202223其数学含义为(AC)OP(A)AC式中,OP表示操作性质,如加、减、乘、除等(A
11、C)表示累加寄存器AC中的数(A)表示主存中地址为A的存储单元中的数,或者是运算器中地址为A的通用寄存器中的数表示把操作(运算)结果传送到指定的地方注意:地址码字段A指明的是操作数的地址,而不是操作数本身10 九月 2022243. 二地址指令最常见的指令格式,又称为双操作数指令通常情况下,指令中包括两个参加运算的操作数的地址码运算结果保存在其中一个操作数的地址码中,从而使得该地址中原来的数据被覆盖其数学含义为(A1)OP(A2) A1式中,两个地址码字段A1和A2分别指明参与操作的两个数在主存或通用寄存器中的地址地址A1兼做存放操作结果的地址10 九月 2022254. 三地址指令指令中包括
12、两个操作数地址码和一个结果地址码可使得在操作结束后,原来的操作数不被改变其数学含义为(A1)OP(A2) A3式中,A1和A2指明两个操作数地址A3为存放操作结果的地址10 九月 2022265. 多地址指令以四地址指令为例四地址指令比三地址指令增加了下一条要执行的指令地址其优点是非常直观,指令所用的所有参数都有各自的存放地址,并且有明确的下一条指令地址,程序的流程很明确其缺点也是显而易见的,这就是指令所占的长度太长10 九月 202227从操作数的物理位置来说,二地址指令格式又可归结为三种类型:1)存储器-存储器(Storage-Storage, SS)型指令指令在操作时需要多次访问主存参与
13、读、写操作的数都放在主存里2)寄存器-寄存器(Register-Register, RR)型指令指令在操作时需要多次访问寄存器从寄存器中取操作数,把操作结果放到寄存器中由于不需要访问主存,机器执行寄存器-寄存器型指令的速度很快3)寄存器-存储器(Register-Storage, RS)型指令指令在操作时既要访问主存单元,又要访问寄存器10 九月 202228计算机选择什么样的指令格式,包括多方面的因素一般情况下,地址码越少,占用的存储器空间就越小,运行速度也越快,具有时间和空间上的优势而地址码越多,指令内容就越丰富因此,要通过指令的功能来选择指令的格式一个指令系统中所采用的指令地址结构并不是
14、惟一的,往往混合采用多种格式,以增强指令的功能10 九月 2022294.2.3 指令字长度一个指令字中包含二进制代码的位数,称为指令字长度计算机能直接处理的二进制数据的位数称为机器字长决定了计算机的运算精度机器字长通常与主存单元的位数一致10 九月 202230指令字长度指令字长度等于机器字长的指令,称为单字长指令指令字长度等于半个机器字长的指令,称为半字长指令指令字长度等于两个机器字长的指令,称为双字长指令例如,IBM 370系列32位机的指令格式有半字长的,单字长的,还有一个半字长的Pentium系列机的指令字长度也是可变的,有8位、16位、32位、64位不等10 九月 202231使用
15、多字长指令目的在于提供足够的地址位来解决访问主存任何单元的寻址问题主要缺点是必须两次或多次访问主存以取出一整条指令降低了CPU的运算速度,同时占用了更多的存储空间10 九月 202232在一个指令系统中,如果各种指令字长度是相等的,就称为等长指令字结构这种指令字结构简单,且指令字长度不变例如都采用单字长指令或半字长指令如果各种指令字长度随指令功能而异,就称为变长指令字结构这种指令字结构灵活,能充分利用指令长度,但指令的控制较为复杂比如有的指令是单字长指令,有的指令是双字长指令10 九月 2022334.2.4 指令助记符计算机指令的操作码和地址码在计算机中用二进制数据来表示对于书写和阅读程序非
16、常麻烦通常用一些比较容易记忆的文字符号来表示指令中的操作码和操作数,称为助记符助记符通常是34个英文缩写字母,提示了每条指令的意义书写和阅读起来比较方便,也易于记忆10 九月 202234例如,加法指令用ADD来代表操作码001,减法指令用SUB来代表操作码010,传送指令用MOV来代表操作码011,等等典型的指令助记符典型指令指令助记符二进制操作码典型指令指令助记符二进制操作码加法ADD001转移JSR101减法SUB010存储STR110传送MOV011读数LDA111跳转JMP10010 九月 202235注意:在不同的计算机中,指令助记符的规定是不一样的由于硬件只能识别二进制语言,因此
17、指令助记符必须转换成对应的二进制操作码这种转换可以借助汇编程序自动完成汇编程序的作用相当于一个“翻译”10 九月 2022364.3 指令分类4.3.1 数据传送指令4.3.2 算术运算指令4.3.3 逻辑运算指令4.3.4 程序控制指令4.3.5 输入输出指令4.3.6 字符串处理指令4.3.7 系统控制指令10 九月 202237不同机器的指令系统是各不相同的从指令的操作码功能来考虑,一个较为完善的指令系统中常见的指令类型包括:数据传送指令、算术运算指令、逻辑运算指令、程序控制指令、输入输出指令、字符串处理指令、系统控制指令10 九月 2022384.3.1 数据传送指令数据传送指令是最基
18、本、最常用、最重要的指令用来使数据在主存与CPU寄存器之间进行传输可以一次传送一个数据或一批数据包括取数指令LOAD、存数指令STORE、存储器或寄存器间数据传送指令MOVE等10 九月 2022394.3.2 算术运算指令算术运算是计算机能够执行的基本数值计算包括加法ADD、减法SUB、乘法MUL、除法DIV等指令算术运算指令的操作数有多种类型定点数、浮点数,定点数又可以分为带符号数和无符号数,浮点数又可以分为单精度和双精度因此,每一种运算指令也按操作数的类型分为带符号数定点运算、无符号数定点运算、单精度浮点运算、双精度浮点运算等10 九月 2022404.3.3 逻辑运算指令逻辑运算是对数
19、据进行逻辑操作包括逻辑与AND、逻辑或OR、逻辑非NOT等三种基本操作以及同或、异或等组合逻辑操作10 九月 2022414.3.4 程序控制指令1转移指令2转子程序指令与子程序返回指令3程序中断指令10 九月 202242控制程序的流程,使程序具有调试与判断功能主要包括:转移指令、转子程序指令与子程序返回指令、程序中断指令等10 九月 2022431转移指令包括条件转移和无条件转移指令将程序计数器PC(Program Counter)中的指令地址值更新为需要转移的目标指令的地址值条件转移指令是指当满足规定的条件后才执行转移无条件转移指令则不受任何约束地将程序转移10 九月 2022442转子
20、程序指令与子程序返回指令转子程序指令是实现子程序调用的指令子程序是能够完成某一特定功能的程序段由于经常要使用,所以独立出来作为子程序,在需要时由主程序调用子程序返回指令为了能够从子程序中正确返回到主程序的断点(Breakpoint)并继续执行,在调用子程序时,首先将主程序中下一条指令的地址存放在一个临时存储单元中然后转入执行子程序等子程序执行到最后一条指令(通常是返回指令)时,将存放在临时存储单元中的地址取出作为下一条指令地址,这样就返回了主程序10 九月 2022453程序中断指令中断一般是在计算机系统出现异常情况或接到特殊请求时随机产生的当产生中断时,程序转入中断处理程序为了在应用程序中使
21、用中断服务程序,指令系统提供了各种引起中断的指令10 九月 2022464.3.5 输入输出指令主机与外围设备进行信息交换的一类指令用于启动外设、检测外设的工作状态、读写外设的数据等信息由外围设备传向主机称为输入(Input),反之则称为输出(Output)有些计算机对于主存和外设未采用统一编码技术因此需要专门的输入输出操作指令;有些计算机把外设看作一个特殊的存储单元而与存储器单元统一编址因此用一般的访问存储器的指令即可访问外设10 九月 2022474.3.6 字符串处理指令字符串处理指令包括字符串传送、转换、比较、查找、匹配、替换等这些指令的设置可以大大加快文字处理软件的运行速度10 九月
22、 2022484.3.7 系统控制指令用于改变计算机系统的工作状态包括停机指令、空操作指令、条件码指令和开/关中断指令等当用户程序执行完毕时,可以安排一条停机指令此时计算机不再继续执行程序空操作指令除了递增程序计数器之外,不进行任何其他操作10 九月 202249条件码用来保存当前指令执行结果的特征,条件码指令对条件码进行置位或清除操作开/关中断指令可以视作为特殊的条件码指令开/关中断意味着对中断请求的允许或禁止在某些计算机中可以用条件码中的一位标志位来进行设置在其他计算机中可采用设定程序优先级的方法来实现开/关中断的功能10 九月 202250除了以上提到的指令外,还有特权指令特权指令是指具
23、有特殊权限的指令主要用于系统资源的分配和管理一般不直接提供给用户使用10 九月 2022514.4 寻址方式4.4.1 指令寻址方式4.4.2 操作数寻址方式4.4.3 堆栈寻址方式10 九月 202252存储器既可用来存放指令,又可用来存放数据在程序运行过程中,形成指令或操作数地址的方式,称为寻址方式寻址方式可以分为两类指令寻址方式较为简单数据寻址方式较为复杂10 九月 2022534.4.1 指令寻址方式1顺序寻址方式2跳跃寻址方式10 九月 2022541顺序寻址方式由于指令地址在主存中顺序排列,当执行一段程序时,通常是一条指令接着一条指令地顺序执行从存储器取出第一条指令,然后执行这条指
24、令接着从存储器取出第二条指令,再执行第二条指令10 九月 202255这种程序顺序执行的过程称为指令的顺序寻址方式CAI演示为此,必须使用程序计数器PC来计数指令的顺序号该顺序号就是指令在主存中的地址指令逐条顺序执行,由PC+1PC控制10 九月 2022562跳跃寻址方式所谓指令的跳跃寻址,是指下一条指令的地址码不是由程序计数器给出,而是由本条指令直接给出CAI演示程序跳跃后,按新的指令地址开始顺序执行指令计数器的内容也必须相应改变,以便及时跟踪新的指令地址10 九月 202257采用指令跳跃寻址方式,可以实现程序转移或构成循环程序,从而缩短程序长度,或将某些程序作为公共程序调用指令系统中的
25、各种条件转移或无条件转移指令,就是为了实现指令的跳跃寻址而设置的10 九月 2022584.4.2 操作数寻址方式1立即寻址方式2直接寻址方式3间接寻址方式4寄存器寻址方式5基址寻址方式6变址寻址方式7相对寻址方式10 九月 202259指令中形成操作数或操作数地址的方式称为操作数的寻址方式一般把指令中直接给出的地址称为形式地址从形式地址生成有效地址的各种方式称为各种不同的存储器寻址方式每种寻址方式都有一种对形式地址进行变换处理的运算规则10 九月 2022601立即寻址方式指令的地址码字段指出的不是地址,而是操作数本身,这种寻址方式称为立即寻址方式立即寻址由于在取出指令的同时也取出了操作数,
26、所以指令的执行速度很快但由于操作数是指令的一部分,不便于修改,降低了程序的通用性和灵活性因此,立即寻址方式只适合于操作数固定的场合通常用于为主存单元和寄存器提供常数例如:ADD B, 33H;33H为立即数10 九月 2022612直接寻址方式直接寻址就是在指令的地址字段中直接指出操作数在主存中的地址即形式地址等于有效地址这种寻址方式简单、直观,是一种最基本的寻址方式10 九月 202262例如,INC 3A00H是一条加1指令,采用直接寻址方式,指令有效地址E=3A00H,表示将地址为3A00H的存储单元中的操作数加1CAI演示10 九月 2022633间接寻址方式间接寻址中指令地址码字段所
27、指向的存储单元中存储的不是操作数本身,而是操作数的地址间接寻址方式需要多次访问主存储器,既增加了指令的执行时间,又要占用主存储器单元但是,这种寻址方式也为编程人员带来了较大的灵活性,实现起来也很简便10 九月 202264而且,间接寻址指令可以访问较大的存储空间,从而扩大指令的寻址能力由于地址码位数的限制,如果采用直接寻址方式,能够访问的存储空间十分有限而间接寻址的地址码所指向的存储单元则有足够的位数,因此可以访问全部存储空间10 九月 202265例如,INC (3A00H)是一条加1指令,采用间接寻址方式,指令有效地址E=(3A00H)=4000H,将地址为4000H的存储单元中的操作数加
28、1CAI演示10 九月 2022664寄存器寻址方式寄存器寻址方式就是指令中的地址码是寄存器的编号,而不是操作数地址或操作数本身寄存器的寻址方式也可以分为直接寻址和间接寻址,两者的区别在于:前者的指令地址码给出寄存器编号,寄存器的内容就是操作数本身;后者的指令地址码给出寄存器编号,寄存器的内容是操作数的地址根据该地址访问主存后才能得到真正的操作数寄存器寻址方式的优点用寄存器来暂存操作数或其地址,无需访问主存,速度快10 九月 202267例如,INC R1是一条加1指令,采用寄存器直接寻址方式,指令有效地址E=R1,将寄存器R1中的操作数加1CAI演示10 九月 202268例如,INC (R
29、1)是一条加1指令,采用寄存器间接寻址方式,指令有效地址为E=(R1)=3A00H,将地址为3A00H的存储单元中的操作数加1CAI演示10 九月 2022695基址寻址方式基址寻址是将基址寄存器的内容加上指令中的形式地址而形成操作数的有效地址其优点是可以扩大寻址能力相对于形式地址,基址寄存器的位数可以设置得很长,从而可以在较大的存储空间中进行寻址10 九月 202270例如,INC BX+300H是一条加1指令,采用基址寻址方式,指令有效地址E=(BX)+300H=0380H,将地址为0380H的存储单元中的操作数加1CAI演示10 九月 2022716变址寻址方式变址寻址方式是将变址寄存器
30、的内容加上指令中的形式地址而形成操作数的有效地址使用变址寻址方式的目的不在于扩大寻址空间,而在于实现程序块的规律性变化例如,有一个字符串存储在以AC1H为首址的连续主存单元中,只需要将首地址AC1H作为指令中的形式地址,而在变址寄存器中指出字符的序号,便可访问字符串中的任一字符10 九月 202272例如,INC RX+300H是一条加1指令,采用变址寻址方式,指令有效地址E=(RX)+300H=03AAH,将地址为03AAH的存储单元中的操作数加1CAI演示10 九月 202273变址寻址和基址寻址方法十分类似,但用途不同变址寻址主要用于数组的访问基址寻址则用于扩大寻址范围,从而在较大的存储
31、空间中进行寻址10 九月 2022747相对寻址方式相对寻址,是相对于当前的指令地址而言的寻址方式相对寻址是把程序计数器PC的内容加上指令中的形式地址而形成操作数的有效地址程序计数器的内容就是当前指令的地址,所以相对寻址是相对于当前的指令地址而言的此时的形式地址通常称为位移量也就是操作数位置与当前指令位置之间的相对距离其值可正可负,相对于当前指令地址而浮动在相对寻址方式中,由于指令的地址和它所涉及的操作数位置相对固定,因此,操作数与指令可以放在主存的任何地方,但仍能保证程序的正确执行10 九月 202275例如,INC PC+200H是一条加1指令,采用相对寻址方式,指令有效地址E=(PC)+
32、200H=2200H,将地址为2200H的存储单元中的操作数加1CAI演示10 九月 202276除了以上提到的几种操作数寻址方式之外,还有块寻址、段寻址方式等块寻址是在指令中指出数据块的起始地址和数据块的长度,使用一条块寻址指令完成一个数据块的传送段寻址是指将存储器空间划分为若干个单元,在寻址一个具体单元时,由一个基地址(CPU中的段寄存器)再加上某些寄存器提供的偏移量来形成有效地址段寻址方式的实质还是基址寻址方式10 九月 202277【例4-1】 一种二地址RS型指令的结构如下所示:其中I为间接寻址标志位,X为寻址模式字段,D为偏移量字段。通过I、X、D的组合,可构成下表所示的寻址方式。
33、请写出6种寻址方式的名称。【解】直接寻址相对寻址变址寻址寄存器间接寻址 间接寻址基址寻址 6位4位1位2位16位OP通用寄存器IX偏移量D寻址方式IX有效地址E算法说明(1)000E=D(2)001E=(PC)DPC为程序计数器(3)010E=(R2)DR2为变址寄存器(4)111E=(R3)(5)100E=(D)(6)011E=(R1)DR1为基址寄存器10 九月 202278【例4-2】 某16位机器所使用的指令格式和寻址方式如下所示。指令格式中的S(源)、D(目标)都是通用寄存器,M是主存中的一个单元,MOV是传送指令,STA为写数指令,LDA为读数指令。要求: 分析三种指令的指令格式与
34、寻址方式特点。 CPU完成哪一种操作所花时间最短?哪一种操作所花时间最长?第二种指令的执行时间有时会等于第三种指令的执行时间吗?15 109 87 43 0OP目标源MOV S, D15 109 87 43 0OP基址源变址STA S, M位移量15 109 87 43 0OP目标LDA S, M20位地址10 九月 202279【解】 第一种指令是单字长二地址指令,RR型;第二种指令是双字长二地址指令,RS型,其中S采用基址寻址或变址寻址,R由源寄存器决定;第三种也是双字长二地址指令,RS型,其中R由目标寄存器决定,S由20位地址(直接寻址)决定。 处理机完成第一种指令所花时间最短,因为是R
35、R型指令,不需要访问存储器。第二种指令所花时间最长,因为是RS型指令,需要访问存储器,同时要进行寻址方式的变换运算(基址或变址),这也需要时间。第二种指令的执行时间不会等于第三种指令,因为第三种指令虽然也访问存储器,但节省了求有效地址运算的时间开销。10 九月 202280【例4-3】 某微机的指令格式如下所示:OP:操作码;D:位移量;X:寻址特征位,X=00:直接寻址;X=01:用变址寄存器X1进行变址;X=10:用变址寄存器X2进行变址;X=11:相对寻址。设(PC)=1234H,(X1)=0037H,(X2)=1122H,请确定下列指令的有效地址。(1)4420H(2)2244H(3)
36、1322H(4)3521H15 109 87 0OPXD10 九月 202281【解】(1)4420H = 010001 00 00100000 BX=00,D=20H,是直接寻址,有效地址E=D=20H(2)2244H = 001000 10 01000100 BX=10,D=44H,是X2变址寻址,有效地址E=(X2)+D =1122H+44H=1166H(3)1322H = 000100 11 00100010 BX=11,D=22H,是相对寻址,有效地址E=(PC)+D =1234H+22H=1256H(4)3521H = 001101 01 00100001 BX=01,D=21H,
37、是X1变址寻址,有效地址E=(X1)+D =0037H+21H=0058H10 九月 2022824.4.3 堆栈寻址方式1寄存器堆栈2存储器堆栈10 九月 202283计算机中的堆栈(Stack)是一组能存储和取出数据的暂时存储单元所有信息的存入和取出均按照后进先出(LIFO)或先进后出(FILO)的原则进行堆栈存取方式决定了其“一端存取”的特点数据按顺序存入堆栈称为进栈或压栈(Push)堆栈中一个单元的数据称为栈项栈项按与进栈相反的顺序从堆栈中取出称为出栈或弹出(Pop)最后进栈的数据或最先出栈的数据称为栈顶元素10 九月 2022841寄存器堆栈寄存器堆栈又称串联堆栈、硬堆栈某些计算机在
38、CPU中设置了一组专门用于堆栈的寄存器,每个寄存器可保存一个字的数据因为这些寄存器直接设置于CPU中,所以它们是极好的暂存单元CPU通过进栈指令(PUSH)把数据存入堆栈,通过出栈指令(POP)把数据从堆栈中取出10 九月 202285寄存器堆栈(CAI演示)空栈表示栈顶无数据,即位于栈顶的寄存器中无可用的数据;存入数据a,即把数据a存入栈顶,数据a可以来自主存、程序计数器PC等部件;再存入数据b,数据b位于栈顶,先进入的数据a则移至下一个寄存器;执行出栈操作,位于栈顶的数据b被取出,与此同时数据a移至栈顶10 九月 202286最后进栈的数据位于栈顶,位于栈顶的数据出栈时最先被取出在寄存器堆
39、栈中,还必须有“栈空”和“栈满”的指示,以防在栈空时企图执行出栈、在栈满时企图执行进栈的误操作可以通过另外设置一个计数器来实现:每次进栈,计数器加1,计数值等于堆栈中寄存器个数时表示栈满;每次出栈,计数器减1,该计数值等于0时表示栈空寄存器堆栈的特点是仅有一个出入口,后进先出,且堆栈的容量固定,不需要占用主存10 九月 2022872存储器堆栈当前计算机普遍采用的一种堆栈结构是存储器堆栈从主存中划出一块区域来作堆栈,又称软堆栈这种堆栈的大小可变,栈底固定,栈顶浮动由于主存的容量越来越大,存储器堆栈能够满足程序员对堆栈容量的要求,而且在需要时可建立多个存储器堆栈这种堆栈有三个主要优点: 堆栈能够
40、具有程序员要求的任意长度; 只要程序员喜欢,愿意建立多少堆栈,就能建立多少堆栈 可以用对存储器寻址的任何一条指令来对堆栈中的数据进行寻址10 九月 202288构成存储器堆栈的硬件有两部分一是在主存中开辟用于堆栈的存储区二是在CPU中设置一个专用的寄存器堆栈指针SP(Stack Pointer)来保存栈顶地址除了硬件之外,还必须有实现进栈、出栈操作的指令作为堆栈的存储区,其两端的存储单元有高、低地址之分,因此,存储器堆栈又可分为两种:从高地址开始生成堆栈从低地址开始生成堆栈10 九月 2022891)从高地址开始生成堆栈(自底向上生成堆栈)从高地址开始生成堆栈是一种较常用的方式,这种堆栈的栈底
41、地址大于栈顶地址CAI演示在建栈时,SP指向堆栈中地址最大的单元(栈底)每次进栈时,首先把要进栈的数据存入SP所指向的存储单元,然后把指针SP-1;出栈时,先把指针SP+1,然后从SP所指向的存储单元取出数据10 九月 202290进栈操作:首先数据Msp,然后指针(SP)-1SPMsp表示SP所指定的存储单元出栈操作:首先(SP)+1SP,然后(Msp)读出(Msp)表示SP所指定的存储单元的内容10 九月 2022912)从低地址开始生成堆栈(自顶向下生成堆栈)这种堆栈的栈底地址小于栈顶地址建栈时SP指向堆栈中地址最小的单元(栈底)进栈操作:首先数据Msp,然后指针(SP)+1SP出栈操作:首先(SP)-1SP,然后(Msp)读出10 九月 202292存储器堆栈的操作方式与寄存器堆栈不同,它移动的是栈顶而在寄存器堆栈中移动的是数据堆栈中对数据的操作具有后进先出的特点凡是以后进先出方式进行的信息传送都可以用堆栈很方便地实现例如,在子程序的调用中,用堆栈存放主程序的返回地址,实现子程序的嵌套和递归调用在程序中断处理中,用堆栈存放多级中断的相关信息,实现多级中断的嵌套10 九月 2022934.5 指令系统实例4.5.1 8086/8088指令系统4.5.2 Pentium指令系统4.5.3 Pe
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年Web考试创新攻略试题及答案
- 2025年Web开发岗位需求试题及答案
- 2025年证券从业资格《证券市场基本法律法规》模拟试卷四
- 2025年监理工程师《建设工程监理基本理论和相关法规》试题(网友回忆版)
- 归纳总结的计算机三级软件测试试题及答案
- VFP网络应用开发试题及答案
- 经济法基础重点总结试题及答案清单
- 2025年计算机二级C语言考试分析与试题及答案
- 2025版高考生物一轮复习课时规范练7ATP和酶含解析苏教版
- 八年级语文下册第10课为你打开一扇门教学设计新教版汉语
- 东莞2025年东莞滨海湾新区管理委员会下属事业单位招聘笔试历年参考题库附带答案详解
- 生死擂台免责协议书
- 试管婴儿合格协议书
- 事业单位公开招聘分类考试公共科目笔试考试大纲(2025版)
- 2023年甘肃省榆中县事业单位公开招聘笔试题带答案
- 高考考务人员培训系统试题答案
- 2023年江苏省沭阳县事业单位公开招聘辅警33名笔试题带答案
- 健康管理PBL教程 课件 项目八 肥胖症的健康管理
- 移动营业厅合作合同协议
- 家政搬家合同协议
- 2025-2030中国核电用钢行业市场发展分析及发展趋势预测研究报告
评论
0/150
提交评论