微机原理与接口技术第3章 8086指令系统_第1页
微机原理与接口技术第3章 8086指令系统_第2页
微机原理与接口技术第3章 8086指令系统_第3页
微机原理与接口技术第3章 8086指令系统_第4页
微机原理与接口技术第3章 8086指令系统_第5页
已阅读5页,还剩182页未读 继续免费阅读

下载本文档

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

文档简介

微机原理与接口技术 清华大学出版社 第 3章 8086指令系统 清华大学出版社 2013年 4月 24日 第 2页 第 3章 8086指令系统 指令是指计算机执行操作的命令,一台计算机的所有指令的集合构成该计算机的指令系统。指令系统位于硬件和软件的交界面上,决定了计算机的基本功能,指令系统的设计是计算机系统设计的一个核心问题,它不仅与计算机的硬件设计紧密相关,而且直接影响到系统软件设计。 清华大学出版社 2013年 4月 24日 第 3页 主要内容 计算机指令系统的发展与性能 指令的格式 寻 址 方 式 指令的分类与高级语言 8086的寻址方式和指令系统 8086的指令系统 清华大学出版社 2013年 4月 24日 第 4页 计算机指令系统的发展与性能 指令系统的发展 指令系统的性能要求 清华大学出版社 2013年 4月 24日 第 5页 计算机指令系统的发展与性能 指令系统的发展 在计算机发展的早期,由于计算机采用分立元件,价格昂贵,因此,大多数计算机的硬件结构比较简单,所支持的指令系统一般只有定点加减、逻辑运算、数据传输和转移等十几至几十条最基本的指令,而且寻址方式简单。到 20世纪 60年代中后期,随着集成电路的出现,计算机的价格不断下降,硬件功能不断增强,指令系统也越来越丰富,除具有以上最基本的指令以外,还设置了乘除运算指令、浮点运算指令、十进制运算指令、字符串处理指令和特权指令等,指令数多达一、二百条。 清华大学出版社 2013年 4月 24日 第 6页 现代计算机的基本工作原理可以简单概括为“程序存储、程序执行”,即人们使用计算机求解时,必须首先将该问题的计算程序和所需数据预先输入到计算机的存储器中,然后由控制器控制完成读出、识别、解释并执行程序中每一条指令。程序就是使计算机执行某个特定任务的一系列指令。指令是指示机器执行某种操作的命令。 指令是由一组二进制代码组成的。表示一条指令意义的二进制代码,被称为指令码。指令码的编码规则称为指令格式。指令码中二进制码的位数称为指令长度。每条指令都具有一个确定的指令码,对应于计算机能执行的一种操作。在不同类型的计算机中,不同功能操作的指令之间、指令码有着各自的样式、特征和规则。在每个计算机中,指令码都是按照一种预先精心设计的、该机型共同约定好的编码规则来加以编排和设置的。 清华大学出版社 2013年 4月 24日 第 7页 一台计算机能执行多少条功能不同的指令,它们是些什么样功能的指令,指令格式如何,这些都是由计算机指令系统明确加以规定和指示的。一台计算机所能执行的全部指令的集合称为指令系统,或称为指令集。 不同型号的计算机有着不同的指令系统。从程序设计者的角度来看,指令系统是一台计算机的主要属性,是软、硬件的主要交界面。程序设计者使用该机指令系统中的各种指令来编制软件,而程序又利用指令系统所具有的各种指令去指挥计算机硬件进行各种操作。一台计算机指令系统功能的强弱,对编制程序的支持程度,往往影响到该计算机能否获得较为广泛的应用。 指令系统要由计算机的硬件来支持和实现,从计算机硬件工程设计的角度来看,指令系统是设计计算机硬件的一个主要依据。指令系统一直是计算机系统结构设计者十分重视的一个方面。在研制每一种新的计算机时,设计者面临的一个基本问题是如何巧妙而又富有创造性地设计一个指令系统。 清华大学出版社 2013年 4月 24日 第 8页 随着集成电路的发展和计算机应用领域的不断扩大, 20世纪 60年代后期开始出现系列计算机。所谓系列计算机,是指基本指令系统、基本体系结构相同的一系列计算机。如 个系列往往有多种型号,但由于推出时间不同,采用器件不同,它们在结构和性能上有所差异。通常新机种在性能和价格方面比旧机种优越。系列机解决了各机种的软件兼容问题,其必要条件是同一系列的各机种有共同的指令集,而且新推出的机种指令系统一定包含所有旧机种的全部指令。因此旧机种上运行的各种软件可以不加任何修改便可在新机种上运行,大大减少了软件开发费用。 20世纪 70年代末期,计算机硬件结构随着 术的飞速发展而越来越复杂化,大多数计算机的指令系统多达几百条。我们称这些计算机为复杂指令系统计算机 (但是如此庞大的指令系统不仅使计算机的研制周期变长,正确性难以保证,不易调试维护,而且由于采用了大量使用频率很低的复杂指令造成了硬件资源的浪费。为此人们又提出了便于 清华大学出版社 2013年 4月 24日 第 9页 指令系统的性能要求 指令系统的性能决定了计算机的基本功能,指令系统的设计是计算机系统设计中的一个核心问题,它不仅与计算机的硬件结构紧密相关,而且直接关系到用户的使用需求。 一个完善的计算机指令系统应该具备以下几方面的要求。 清华大学出版社 2013年 4月 24日 第 10页 1. 完备性 指令系统的完备性是指用汇编语言编制各种程序时,指令系统直接提供的指令足够使用,不必用软件方法实现。一台计算机中最基本的、必不可少的指令构成了指令系统的完备性。而其他一些指令,如乘、除运算指令、浮点运算指令,可以直接用硬件实现,也可以用其他指令实现,即用软件的方法实现,两者只是在执行时间和编写程序的难易程度上有差别。之所以在指令系统中设计特殊指令,是为了提高程序执行的速度和便于用户编写程序。 2. 有效性 有效性是指利用该指令系统所提供的指令编制的程序能够产生高效率。高效率主要表现在空间和时间方面,即占用存储空间小、执行速度快。通常,一个功能完善的指令系统必定有很好的有效性。 清华大学出版社 2013年 4月 24日 第 11页 3. 规整性 规整性是指指令操作的对称性、匀齐性和指令格式与数据格式的一致性。 指令的对称性是指在指令系统中,所有的寄存器和存储单元都可同等对待,这对简化程序设计、提高程序的可读性非常有用。 指令的匀齐性是指一种操作性质的指令可以支持各种数据类型,如算术运算指令可支持字节、字和双字整数运算、十进制数运算和单、双精度浮点数运算等。指令的这种性质,可以使程序设计者无需考虑数据类型而选用指令,从而提高编程效率。 指令的格式与数据格式的一致性是指指令长度与数据长度有一定关系,以方便存取和处理。 4. 兼容性 兼容性一般是指计算机的体系结构设计基本相同,计算机之间具有相同的基本结构、数据表示和共同的基本指令集合。指令系统的兼容性指的是同一个软件可以不加修改就可以在系统结构相同的计算机中运行,获得相同的结果,差别在于运行的时间长短不同。软件兼容性不仅在同一厂家的系列机中存在,而且也出现在不同厂家所生产的具有相同系统结构的计算机系统中,这些计算机系统一般称为“兼容机”。如 清华大学出版社 2013年 4月 24日 第 12页 指令的格式 指令操作码与地址码 一条指令一般由两个字段组成:操作码字段和操作数地址码字段,可表示为图 3 清华大学出版社 2013年 4月 24日 第 13页 (1) 操作码( 操作码是指明指令操作性质的命令码。 令中的操作码就告诉 如用操作码“ 0000”表示“加法”操作,操作码“ 0001”表示“减法”操作等。 每条指令都要求它的操作码必须是独一无二的位组合。指令系统中的每一条指令都有一个确定的操作码,并且每一条指令只与一个规定好的操作码一一对应。指令不同,其操作码也不同。 操作码的长度取决于指令系统中的指令条数。例如,若操作码长度为 4位时,指令系统中指令的个数不能多于 16条。 清华大学出版社 2013年 4月 24日 第 14页 汇编语言 典型的指令助记符 清华大学出版社 2013年 4月 24日 第 15页 (2) 操作数地址码( 地址码用来描述该指令的操作对象。在地址码中可以直接给出操作数本身,也可以指出操作数在存储器中的地址或寄存器地址,或表示操作数在存储器中的间接地址等。 。 清华大学出版社 2013年 4月 24日 第 16页 一条指令中含有的操作数地址不一定只有一个。随着指令功能的不同,操作数地址可能是两个或多个。例如加减法运算,一般要求有两个操作数地址。但若再考虑操作运算结果的存放地址,就需要有 3个地址,若继续考虑本条指令完成以后下一条指令的地址,则需要 4个地址。 指令字中操作数地址字段的位数取决于指令操作所需要的操作数地址个数和每个操作数地址的位数。所以,一个指令的字长应满足下面等式: 指令字长 =操作码的位数 +(操作数地址个数 ) (操作数地址码位数 ) 根据地址码部分所给出地址的个数,指令格式可分为以下几种 清华大学出版社 2013年 4月 24日 第 17页 1. 零地址指令格式 这是一种没有操作数地址部分的指令格式,如图 3 清华大学出版社 2013年 4月 24日 第 18页 这种指令有两种可能。 (1) 无需任何操作数。如空操作指令,停机指令等。 (2) 所需的操作数是默认的。如堆栈结构计算机的运算指令所需的操作数是由一个隐含的保存操作数的硬件机构来提供。该隐含机构就是堆栈。 清华大学出版社 2013年 4月 24日 第 19页 堆栈是若干个存储单元 (或寄存器 )的有序集合。它顺序地存放一组元素,第一个被压入元素的堆栈单元称为栈底,最后一个被压入元素的单元称为栈顶。数据的存取只能在栈顶单元内进行,即数据的进栈与出栈都只能经过栈顶单元这个“出入口”。 堆栈中的数据采用的是“先进后出”、“后进先出”的存取工作方式。 为了向堆栈存入数据,要将堆栈中各单元原有的数据 (元素 )依次向栈底方向移动一个单元,空出栈顶单元来存放新数据,这个操作称为堆栈压入 (为了取得运算操作所必需的操作数,对堆栈要执行弹出 (作。该操作从栈顶单元取出数据,并将下面各单元所存的数据依次向栈顶方向移动一个单元,由紧挨栈顶的单元数据来补充栈顶单元。 清华大学出版社 2013年 4月 24日 第 20页 真正实用的堆栈中,对每压入 (或弹出 )一个元素时整个堆栈单元内容都下移 (或上移 )一个单元的做法作了改进。改进的措施是:在压入和弹出数据时,各堆栈单元的原内容都不移动,而作为数据“出入口”的栈顶单元地址加以变动,即栈顶位置动态变化。对栈顶的位置可使用一个寄存器来跟踪,这个保存栈顶单元地址的寄存器称为栈顶指示器 ( 清华大学出版社 2013年 4月 24日 第 21页 设数据进栈方向为从高地址向低地址,当向堆栈压入数据时, 把数据写入此栈顶单元;当数据弹出堆栈时,立即读出 把: X; (1 (X)( X; (X (1 堆栈结构除了在零地址指令格式中提供操作数外,另一个重要作用是实现程序调用。即在调用子程序时,能把返回地址、局部变量和中间结果等自动地压入堆栈;在子程序返回时,又能方便地把有关信息和返回地址弹出堆栈交还。对于子程序嵌套调用和递归调用,堆栈具有别的程序调用方法所无法比拟的优势。对于“中断”技术,堆栈更是不可缺少的。 具有堆栈结构的机器使用零地址指不仅指令长度短、指令结构简单、机器硬件简化,而且又能为软件中广泛使用堆栈结构数据提供了直接的有力支持。 清华大学出版社 2013年 4月 24日 第 22页 2. 一地址指令格式 如图 3地址指令也有两种可能: 清华大学出版社 2013年 4月 24日 第 23页 (1) 指令中给出的一个地址既是操作数的地址,又是操作结果的存储地址。如加 1、减 1和移位等单操作数指令。 (2) 在某些计算机中,指令中提供的一个地址提供一个操作数,另一个操作数是由机内硬件寄存器“隐含”自动提供的。所谓“隐含”是指此操作数在指令中不出现,而是按照事先约定由寄存器默认提供,运算结果仍送到寄存器中。因为这个寄存器在连续运算时,保存着多条指令连续操作的累计结果,故称为累加器 ( 清华大学出版社 2013年 4月 24日 第 24页 3. 二地址指令格式 如图 3是最常见的指令格式。常把保存操作前原来操作数的地址称为源地址 (把保存指令执行结果的地址称为目的地址目的地址(将源操作数与目的操作数进行操作码规定的操作后,将结果存入目的地址。通常二地址指令又称为双操作数指令。 清华大学出版社 2013年 4月 24日 第 25页 例如,双操作数加法指令 0寄存器的内容和 结果存入 ( 0寄存器的内容作为地址,到内存中取出该地址所指向的单元内容作为源操作数,和作为目的操作数的 结果存入 清华大学出版社 2013年 4月 24日 第 26页 4. 三地址指令格式 如图 3操作是对 将结果存入 如: X Y 单元内容加上 果送 清华大学出版社 2013年 4月 24日 第 27页 5. 多地址指令格式 例如,四地址指令格式,如图 3多数算术运算需要两个操作数和一个运算结果,这样一条指令除操作码外需要给出: (1) 两个操作数的地址。 (2) 存放结果的地址。 (3) 下一条要执行的指令地址 这是计算机能够自动地、连续地并且不需人介入地执行程序所不必不可少的。 清华大学出版社 2013年 4月 24日 第 28页 四地址机器指令的优点是直观明了,所用的参数被明显标示在指令中;每条指令都有明确的下条指令地址,程序执行的流向明确;操作数和结果可以分散在内存各处。缺点是指令字长度太长。 在某些性能较好的大、中型计算机甚至高档微小型机中,往往设置一些功能强大,用于处理特殊对象的指令,如字符串处理指令、向量和矩阵运算指令等。为了描述一批数据,指令中需要多个地址来指出数据存放的首地址、长度等信息。例如 有 7个地址段,用于指出运算的两个矩阵存储情况及结果的存放情况。 清华大学出版社 2013年 4月 24日 第 29页 一台计算机选择怎样的指令格式,涉及多方面因素,一般要求指令的字长要尽量短一些,以得到时间和空间上的优势。指令字长越短,意味着要占用的存储器规模就越小,存取所需要的时间就可能越少。在同一个存储器的同一传输速率下,每秒钟从存储器中能读出的短指令数目肯定会比长指令的读出数目多,从而使处理器执行指令的速度加快。 指令也必须有足够的长度以利于增加信息量。尽管希望指令字长尽量短,但必须满足指令系统的要求,至少要具有必要的操作码位数与操作数地址字段的位数。随着字长的增加,操作码和操作数地址可使用的位数也成比例地增加,每条指令的内容也就越丰富。 清华大学出版社 2013年 4月 24日 第 30页 再者,指令字长一般应是机器字符长度的整数倍以便于存储系统的管理。若机器中字符码长是 机器字长最好是 L、 2L、 4样就能使一个字存储单元能够存放整个字符,否则在存储字符时,一个或几个字符就无法存满一个字存储单元,造成存储空间的浪费。当然也可以规定每个字单元存储如 这样做会使存取字符非常不方便。而一个指令字可能占用一个字或几个字单元,也可能几条指令仅占用一个字单元。这样字符长对字长 (字单元长 )的限制就影响到指令长。目前普遍采用的 7位 )加一个奇偶校验位,字符长度 位 (称字节 )。机器字长在小型机是 2字节 (16位 ), 4字节(32位 ),微型机还小到单字节 (8位 )。 清华大学出版社 2013年 4月 24日 第 31页 另外,指令格式的设计还与如何选定指令中操作数地址的位数有关。例如,对同一容量 (如 64存储器,若取存储单元为一字节长,则需要 16位地址码,若存储单元长度为 32位,则只需 14位地址码。对比一下会发现各有利弊:前者对字符操作方便,但地址码位数多,后者地址码位数少,但字符操作困难,分辨率低。 清华大学出版社 2013年 4月 24日 第 32页 2. 指令扩展方法 指令操作码的长度决定了指令系统中完成不同操作的指令条数。指令操作码通常有两种编码格式。 (1) 固定格式 在这种格式中操作码长度固定,且集中放在指令字的一个字段中。这种格式对于简化硬件设计,减少指令译码时间非常有利,在字长较长的大中型计算机和超级小型机以及 作码长度均为 8位。 (2) 可变格式 在这种格式中操作码长度可变,且分散在指令字的不同字段中。这种格式能有效地压缩指令的平均长度,在字长较短的微、小型计算机中广泛采用。如 0386和 种方法也称为扩展操作码方式。 清华大学出版社 2013年 4月 24日 第 33页 扩展操作码方法的基本思想是:操作码位数不采用单一固定不变的位数,而是随地址码个数变化,操作码采取可变长度的类型。假设一台计算机指令字长 16位,操作码与地址码都为 4位,如图 3采用操作码长度固定格式,则最多可以设计16条三地址指令,而采用扩展操作码的方法可以获得更大的灵活性,具体方法如下: 清华大学出版社 2013年 4月 24日 第 34页 (1) 4位操作码中用 00005条三地址指令,剩下的一个编码 1111作为扩展标志与下一个 4位组成一个 8位操作码,引出二地址指令; (2) 8位操作码中用 111100005条二地址指令,剩下的一个编码11111111与下一个 4位组成一个 12位的操作码,引出一地址指令; 清华大学出版社 2013年 4月 24日 第 35页 (3) 12位操作码中用 1111111100005条一地址指令,剩下的一个编码 111111111111与下一个 4位组成 16位操作码,引出零地址指令; (4) 零地址指令最多有 16种组合; (5) 扩展操作码可以根据需要灵活设计。如在第 (1)步中可以保留 00004种编码作为三地址指令使用,留出 1110和 1111两个作为扩展标志引出更多的二地址指令等,以此类推。 清华大学出版社 2013年 4月 24日 第 36页 【 例 3 假设某计算机的指令长度为 20位,具有双操作数、单操作数和无操作数三类指令形式,每个操作数地址规定用 6位表示。若操作码字段固定为 8位,现已设计出 此情况下,这台计算机最多可以设计出多少条单操作数指令? 答:双操作数指令地址字段占用 12位,操作码字段是 8位。由于假定全部指令采用 8位固定的 这台计算机最多的指令条数为 256条。由于双操作数指令有 操作数指令有 此单操作数指令最多还可以设计出 (256。 如果采用扩展操作码的方法来设计,则在同样的前提下,该计算机的指令系统将获得更多的灵活性,读者计算后可以很容易发现这一点。 清华大学出版社 2013年 4月 24日 第 37页 寻 址 方 式 指令寻址方式 操作数寻址方式 清华大学出版社 2013年 4月 24日 第 38页 寻 址 方 式 寻址方式指的是确定本条指令的数据地址以及下一条要执行的指令地址的方法。它对丰富程序设计手段、方便程序的编制、提高程序的质量、压缩程序占用的存储空间等方面都起着重要作用。 一般把指令中直接给出的地址称为形式地址(从形式地址生成有效地址 (各种方式称为寻址方式,也称为各种不同的存储器访问方式。每种寻址方式都有一种对形式地址进行变换处理的运算规则。通常这些运算变换是由硬件自动实现的。 清华大学出版社 2013年 4月 24日 第 39页 寻址方式的引入带来以下的好处: (1) 丰富程序设计手段,提高程序质量。 (2) 减少访问主存的次数,压缩程序占用的存储空间。保证指令的地址码字段尽可能缩短,而访问的存储空间尽可能地大。 例如,假定在以地址 次存放着数据表内的各元素,编写一个求连续 100个元素之和的程序;又如,将内存中某一数据区中连续的数据传递到另一个区域当中,这种数据处理情况在程序设计时经常出现。若采用变址寻址方式,以上两种情况的处理就变得非常简单。 再如,类似于图书馆对所有书籍的管理,若一组数据可以存放在内存中任意位置,如何组织才能使得数据的查找、更新最为快捷方便。利用间接寻址方式对于这种情况的处理是十分方便的,就相当于对所有图书建立索引一样。 还有,若在指令中操作数地址字段直接明确地指出操作数在主存器中的具体位置,则这种指令可能访问 (指读或写 )的主存储器空间的大小,取决于操作数地址字段的位数。如假设指令字长是 16位,操作数地址字段 10位,则指令可访问的主存空间最多只能是 210=1024个单元。但如果我们在操作数地址字段采用寄存器寻址方式,则既可以使指令的字长缩短,又可以获得较大的存储器访问空间。 清华大学出版社 2013年 4月 24日 第 40页 寻址方式的类型很多,选用的依据是: (1) 要与数据的表示方式相配合,对各种结构的数据能方便地进行存取和处理。 (2) 要与指令系统相匹配,依据对机器性能要求的高低来考虑选择。 (3) 还要考虑硬件实现的可能性与复杂程度、成本高低、设备与价格增加的合理性。 清华大学出版社 2013年 4月 24日 第 41页 指令寻址方式 指令的寻址方式有两种,一种是顺序寻址方式,另一种是跳跃寻址方式。 (1) 顺序寻址方式 由于指令地址在内存中按顺序安排,当执行一段程序时,通常是一条指令、一条指令地顺序进行。就是说,从存储器取出第一条指令,然后执行这条指令;接着从存储器取出第二条指令,再执行第二条指令;接着再取出第三条指令 。这种程序顺序执行的过程,我们称为指令的顺序寻址方式。为此,必须使用程序计数器 (又称指令指针寄存器 )顺序号就是指令在内存中的地址。 (2) 跳跃寻址方式 当程序转移执行时,指令的寻址就采取跳跃寻址方式。所谓跳跃,是指下条指令的地址码不是由程序计数器给出,而是由本条指令给出。程序跳跃后,按新的指令地址开始顺序执行。因此,指令计数器的内容也必须相应改变,以便及时跟踪新的指令地址。 采用指令跳跃寻址方式,可以实现程序转移或构成循环程序,从而能缩短程序长度,或将某些程序作为公共程序引用。指令系统中的各种条件转移或无条件转移指令,就是为了实现指令的跳跃寻址而设置的。 清华大学出版社 2013年 4月 24日 第 42页 操作数寻址方式 常用的操作数寻址方式有以下几种: (1) 立即寻址方式( 若指令中操作数地址字段给出的不是通常的地址,而是可以立即使用的操作数实际值,这种寻址方式称为立即寻址方式。其特点是无需专门访问存储器来获得操作数,故这种方式提供操作数最快,因而也就加快了指令的执行速度。立即提供的操作数称为立即数,它是计算过程中要使用的各种常数。 例如:在 05 这条指令的功能是将 05 一般立即数受地址码长度限制,精度较低。为了能提高精度,指令可采用变字长格式。 清华大学出版社 2013年 4月 24日 第 43页 (2) 直接寻址方式( 即由指令字中操作数地址字段直接指明操作数在存储器内的位置的寻址方式。即形式地址等于有效地址。如图 3接寻址方式中指令字长限制了一条指令所能够访问的最大主存空间,可以使用可变字长指令格式来解决此局限性。利用扩大了的操作数地址码就能全部访问主存储器的所有的存储单元。 这种寻址方式简单、直观,也便于硬件实现。但是,随着计算机的存储器容量不断增加,所需要的地址码越来越长,势必要增加指令字长。而且,操作数的地址是指令的一部分,不能修改,故这种寻址方式只能用来访问固定的存储器单元。 清华大学出版社 2013年 4月 24日 第 44页 (3) 间接寻址方式( 间接寻址意味着指令中地址码字段所指向的存储单元保存的不是所需要的操作数,而是操作数的地址。指令字中地址码字段给出的不是操作数地址,而是操作数地址的地址。 间接寻址方式需要多次访问内存,明显地增加了指令的执行时间,同时又要占用主存储器的存储单元,这些都是它的缺点。但是这种寻址方式实现起来简便,对程序编制能带来较大的灵活性: 间接寻址方式的指令可以访问大的存储空间,扩大了指令的寻址能力。尽管指令中的形式地址较短,但它所指向的存储单元的内容是个有足够位数的有效地址,从而保证可以访问全部主存储器。保存并能提供有效地址的主存单元 (或寄存器 )称为操作数地址指示器或间接地址指示器。 例如,某机器字长 16位,指令地址码为 10位,若采用直接寻址方式,则寻址空间是 1采用间接寻址方式,由于间接地址指示器字长 16位,其寻址空间可扩大到64K,用较短的指令地址长度就可以访问较大的存储器空间。 当操作数地址改变时,只需修改间接地址指示器的单元内容,而不必修改指令,原指令的功能照样实现。这给程序编制带来很大方便。 间接寻址可分为一级间接寻址和多级间接寻址。一级间接寻址中,按指令给出的地址码从主存中先取出操作数的有效地址,再按它取出操作数本身,如图 3 清华大学出版社 2013年 4月 24日 第 45页 (4) 变址寻址方式( 变址寻址方式的含义是:把指令字中的形式地址自动相加, 成操作数的有效地址 : +X。其中,与形式地址相加的数 为“变址值”,保存变址值的设备称为变址器。 变址寻址方式是一种广泛使用的寻址方式,对于实现各种地址修改非常方便。当要求变动操作数地址时,只要修改变址值即可。这特别适用于向量、矩阵一类的运算。 清华大学出版社 2013年 4月 24日 第 46页 例如,假设一个数组 、A+1、 , A+要求编写一个传输程序段,把数组依次传输到另一组连续单元 B、 B+1、 , B+定机器有传输指令 A、 B,它的操作是把地址 ,即 (A)B。若没有变址寻址方式的支持,每次传输一个数据以后,地址的修改将是一件非常麻烦的事情。 为了改善程序的质量,如果这个地址修改的工作不用程序去做,而由硬件自动完成,那将是很有意义的。变址寻址方式就可以完成这样的工作。 存放变址值的变址器可以使用内存中某个存储单元来充当,一般计算机中变址器都用寄存器来实现,称为变址寄存器,如 086/8088。在 086/8088中变址寄存器可以根据 例如:在 I 其中 效地址的形成是形式地址和变址寄存器中的内容相加后得到的结果,在段寄存器的配合之下,得到源操作数并将其传到 图 3 清华大学出版社 2013年 4月 24日 第 47页 (5) 基址寻址方式 ( 在计算机中设置一个专用的基址寄存器,或由指令指定一个通用寄存器作为基址寄存器。操作数的地址由基址寄存器的内容和指令中的形式地址 式地址起到位移量的作用。这种寻址方式就称为基址寻址方式。 基址寻址方式与变址寻址方式很相似,但程序功能不同。在较大的计算机中基址寄存器是由系统软件管理控制程序使用特权指令来管理的。根据需要,管理程序给基本地址寄存器赋予一个地址值,一个应用程序在执行期间,每个程序地址都要加上这个基本地址寄存器的内容,即基本地址。在形成整个应用程序的地址时都以此基本地址为准做统一偏移,从而使应用程序在主存储器中可以按照需要而任意浮动。对基本地址寄存器,用户程序无权操作和修改。 基址寻址方式主要用以解决程序在存储器中的定位和扩大寻址空间等问题。 例如,当存储器容量较大,由指令的地址码部分直接给出的地址不能直接访问到存储器的所有单元时,通常把整个存储器空间分成若干个段,段的首地址存放于基址寄存器或段寄存器中,段内位移量由指令给出。存储器的实际地址等于基址寄存器与段内位移量之和,这样通过修改基址寄存器的内容就可以访问存储器的任一单元。 在 086/8088中有 1要 20位地址,但其字长仅有 16位长。为了能访问到 20位的地址空间, 086/8088中设置了段寄存器,实际上相当于基址寄存器。 20位的地址由 16位段寄存器向左移动 4位后再与 16位段内偏移量相加形成。 清华大学出版社 2013年 4月 24日 第 48页 (6) 相对寻址方式( 如图 3程序计数器 令字中的形式地址码作为位移量,则有效地址为 A。相对寻址主要用于转移指令,它有两个主要特点: 位移量可正、可负,通常用补码表示。若位移量为 向有个位置,负向有个位置,则程序可以直接访问的实际存储空间是个位置的小块,或称为一页。 位移量是操作数位置与本指令之间的相对距离。若位移量不变,无论本指令出现在存储器的任何位置,指令操作所需的操作数总是与本指令地址保持一个距离并紧紧跟随着。这就意味着这种指令不需任何修改,就能在主存的任意位置正确地执行。采用相对方式指令编写的程序可在主存中任意浮动,它在主存的任何地方执行,其效果都是一样的。 清华大学出版社 2013年 4月 24日 第 49页 (7) 寄存器寻址方式( 寄存器寻址方式的含义是:把指令字中的地址码用寄存器编号来代替,寄存器的作用由寻址方式码来指定。 寄存器寻址方式在有效地压缩指令长度,提高程序速度方面具有明显的优点。 根据寻址方式码定义的不同,寄存器寻址方式可有多种变化: 寄存器直接寻址方式( 在这种寻址方式中,地址码给出寄存器编号,寄存器的内容为操作数。 例如在 0, 其含义是源操作数和目的操作数均采用寄存器直接寻址方式,将 1寄存器的内容相加以后,结果送 寄存器间接寻址方式( 在这种寻址方式中,地址码给出寄存器编号,寄存器的内容为操作数的有效地址。根据寄存器中的内容访问内存以后,可以得到真正的操作数。 例如在 其含义是源操作数采用寄存器间接寻址方式,目的操作数采用寄存器直接寻

温馨提示

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

评论

0/150

提交评论