IA-32结构微处理器课件_第1页
IA-32结构微处理器课件_第2页
IA-32结构微处理器课件_第3页
IA-32结构微处理器课件_第4页
IA-32结构微处理器课件_第5页
已阅读5页,还剩84页未读 继续免费阅读

下载本文档

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

文档简介

IA-32结构微处理器2.1IA-32微处理器的概要历史

1971年Intel400470年代中期Intel8080、808580年代初Intel8086、8088

从8086(8088)到80286、80386、80486、奔腾(也称为80586)、奔腾MMX、奔腾PRO(也称为80686)、奔腾Ⅱ、奔腾Ⅲ,直至最新的奔腾4,形成了IA(IntelArchitecture)-32结构。2.1.1Intel8086微处理器

从历史的观点看,IA-32结构微处理器同时包括16位微处理器和32位微处理器。目前,对于许多操作系统和十分广泛的应用程序,32位IA-32结构是最流行的计算机结构。

IA-32结构的最重要的成就之一,是在从1978年开始的那些处理器上建立的目标程序仍然能够在IA-32结构系列的最新的处理器上执行。Intel8086微处理器有16位寄存器和16位外部数据总线,具有20位地址总线,寻址1MB地址空间。

8086引进段到IA-32结构。关于段,有16位的段寄存器,它包含最大为64KB的内存段的指针。一次用四个段寄存器,8086/8088微处理器能寻址256KB而不需要在段之间切换。用段寄存器指针和附加的16位指针能形成20位地址提供总共是1MB的地址范围。2.1.2Intel80386微处理器Intel80386微处理器是在IA-32结构微处理器系列中的第一个32位处理器。它在结构中引入了32位寄存器用于容纳操作数和地址。每个32位寄存器的后一半保留两个早期处理器版本(Intel8086和80286)的16位寄存器的特性,以提供完全的后向兼容。提供了一种新的虚拟8086方式,以在新的32位处理器上最有效地执行为8086和8088微处理器建立的程序。Intel80386微处理器有32位地址总线并能支持多至4GB的物理存储器。32位结构为每个软件进程提供逻辑地址空间。32位结构同时支持分段的存储模式和“平面(flat)”存储模式。在“平面”存储模式,段寄存器指向相同地址,而且每个段中的所有4GB可寻址空间对于软件程序员是可以访问的。Intel80386微处理器把分页引进了IA-32结构,用4KB固定尺寸的页提供一种虚拟存储管理方法,它比分段更为优越。分页对于操作系统更为有效,且对应用程序完全透明,对执行速度没有明显影响。4GB虚拟地址空间的支持能力、存储保护与分页支持一起,允许IA-32结构成为高级操作系统和应用程序的最流行的选择。2.1.3Intel80486微处理器

Intel80486微处理器由把Intel80386微处理器的指令译码和执行单元扩展为五个流水线段,增加了更多的并行执行能力,其中每个段(当需要时)与其他的并行操作最多可在不同段上同时执行五条指令。每个段以能在一个时钟周期内执行一条指令的方式工作,所以Intel80486微处理器能每个时钟周期执行一条指令。

在芯片上增加了一个8KB的一级缓存(Cache)大大增加了每个时钟执行一条指令的百分比,包括操作数在一级Cache中的存储器访问指令。Intel80486微处理器也是第一次把80x87FPU(浮点处理单元)集成到处理器上并增加了新的引脚、位和指令以支持更复杂和更强有力的系统(二级Cache支持和多处理器支持)。2.1.4Intel奔腾(Pentium)处理器Intel奔腾(Pentium)处理器增加了第二个执行流水线以达到超标量性能(两个已知的流水线u和v一起工作,实现每个时钟执行两条指令)。片上的一级Cache也加倍了,8KB用于代码,另外8KB用于数据。数据Cache使用MESI协议以支持更有效的回写方式,以及由Intel80486处理器使用的写通方式。加入的分支预测和片上的分支表增加了循环结构中的性能。

奔腾系列的最后一个处理器(具有MMX技术的奔腾处理器)把IntelMMX技术引入IA-32结构。IntelMMX技术用单指令多数据(SIMD)执行方式,在包含在64位MMX寄存器中组合的整型数据上执行并行计算。此技术在高级媒体、影像处理和数据压缩应用程序上极大地增强了IA-32处理器的性能。2.1.5IntelP6系列处理器1995年,Intel公司引入了P6系列处理器。此系列处理器是基于新的超标量微结构上的,它建立了新的性能标准。

IntelPentiumPro处理器是基于P6微结构的第一个处理器。P6处理器系统随后的成员是IntelPentiumⅡ、IntelPentiumⅡXeon(至强)、IntelCeleron(赛扬)、IntelPentiumⅢ和IntelPentiumⅢXeon(至强)处理器。2.1.6Intel奔腾Ⅱ处理器IntelPentiumⅡ处理器把MMX技术加至P6系列处理器具有新的包装和若干硬件增强。第一级数据和指令Caches每个扩展至16KB,支持256KB、512KB和1MB二级Cache。2.1.7Intel奔腾Ⅲ处理器PentiumⅢ处理器引进流SIMD扩展(SSE)至IA-32结构。SSE扩展把由IntelMMX引进的SIMD执行模式,扩展为新的128位寄存器和能在组合的单精度浮点数上执行SIMD(单指令多数据)操作。

2.1.8Intel奔腾4处理器IntelPentium4处理器是最新的IA-32结构微处理器,也是第一个基于IntelNetBurst

微结构的处理器。IntelNetBurst微结构是新的32位微结构,它允许处理器操作在时钟速度和性能比以前的IA-32结构微处理器更高。2.2IA-32微处理器的功能结构IA-32结构微处理器基本上按照摩尔定律发展,已经经历许多代。但从使用者(包括程序员)的角度来看,最关心的是处理器的功能结构。即,呈现在程序员面前的功能和编程结构。2.2.1Intel8086微处理器的功能结构Intel8086微处理器的功能结构如图2-1所示。

8086(8088)CPU从功能上来说分成两大部分:总线接口单元BIU(BusInterfaceUnit)和执行单元EU(ExecutionUnit)。

BIU负责与存储器接口,即8086CPU与存储器之间的信息传送,都是由BIU进行的。

BIU负责从内存的指定部分取出指令,送至指令流队列中排队,在执行指令时所需要的操作数,也由BIU从内存的指定区域取出,传送给EU部分去执行。

EU部分负责指令的执行。这样,取指部分与执行指令部分是分开的,于是在一条指令的执行过程中,就可以取出下一条(或多条)指令,在指令流队列中排队。在一条指令执行完以后就可以立即执行下一条指令,减少了CPU为取指令而等待的时间,提高了CPU的利用率,提高了整个运行速度。2.2.2Intel80386微处理器的功能结构Intel80386微处理器的功能结构如图2-4所示。Intel80386微处理器拥有32位数据线和32位地址线,可以寻址4GB(232)的物理地址空间,内部寄存器与数据线都是32位,但段寄存器仍为16位。80386处理器首次将32位的寄存器组引入80x86体系的微处理器中,它们都能够用于计算和寻址操作。每个32位寄存器的低半部分与Intel8086/8088、80286微处理器的16位寄存器具有相同的特性,完全向下兼容。Intel80386微处理器的功能结构由6个能并行操作的功能部件组成,即总线接口部件、代码预取部件、指令译码部件、存储器管理部件、指令执行与控制部件。这些部件按流水线结构设计,指令的预取、译码、执行等步骤都由各自的处理部件并行处理。这样,可以同时处理多条指令,提高了微处理器的处理速度。

总线接口部件提供微处理器与外部环境的接口,在操作时对相应信号进行驱动,包括32位地址总线和32位数据总线。由于地址总线和数据总线是分开的,所以,最快能在两个时钟周期内从存储器存取32位数据。显然,具有32位操作数和寻址形式的指令在执行性能上得到增强。还提供了一些用于位处理的新指令。80386总线结构具有动态改变数据和地址宽度的能力,既支持16位也支持32位操作。

存储器管理部件MMU由分段部件和分页机构组成。分段部件通过提供一个额外的寻址机构对逻辑地址空间进行管理,可以实现任务之间的隔离,也可以实现指令和数据区的再定位。80386微处理器也首次将分页机制引入到80x86结构中,尺寸固定为4KB的页面为虚拟存储管理提供了基础,它比Intel8086/8088地址空间的分段管理更加有效,并且对应用程序来说是完全透明的,也不会减低应用程序的执行速度。2.2.3Intel80486微处理器的功能结构Intel80486微处理器是功能上的另一次飞跃,它把Intel80386微处理器、Intel80x87FPU和片上的Cache集成在一起,从功能上形成了IA-32微处理器结构,也就是IA-32微处理器的功能结构,如图2-5所示。Intel80486微处理器基础结构等同于Intel80386微处理器,它们在寄存器组、寻址方式、存储器管理特征、数据类型方面都完全相同。为了进一步提高微处理器的执行性能,在内部结构上,对80486微处理器进行了一些改进,使80486的性能更高。

80486微处理器从功能结构来说,已经形成了IA-32结构微处理器的基础。后续的处理器往往是在指令的流水线结构上,在Cache上以及在指令扩展上有了新的发展。较新的IA-32微处理器的功能结构如图2-6所示。2.3IA-32结构微处理器的执行环境

本节描述汇编语言程序员看到的IA-32结构微处理器的执行环境,它描述处理器如何执行指令以及如何存储和操作数据。执行环境包括内存(地址空间)、通用数据寄存器、段寄存器、标志寄存器和指令指针寄存器等。2.3.1操作模式IA-32结构微处理器支持三种操作模式:保护模式、实地址模式和系统管理模式。操作模式确定哪些指令和结构特性是可以访问的。

(1)保护模式。这是处理器的基本模式。在这种模式中,所有的指令和结构特性是可用的,提供最高的功能和性能。对于所有的操作系统和新的应用程序建议采用此模式。在多任务环境的保护模式下,每一个任务都可以执行“实地址方式下的8086指令”,这就是虚拟8086方式。(2)实地址模式。这是实现Intel8086微处理器编程环境的工作模式并有一些扩展(32位寄存器和切换至保护模式或系统管理模式的能力等)。在系统上电或复位(reset)后,处理器总是处在实地址模式。

(3)系统管理模式(SSM)。此模式是操作系统为实现平台特定的功能或者系统安全提供的一种透明机制。此模式主要用于自动暂停、睡眠等节省电源的模式。2.3.2基本执行环境概要

在IA-32处理器上执行的程序或任务,都给予一组执行指令的资源,用于存储代码、数据和状态信息。这些资源构成了IA-32结构微处理器的执行环境。

(1)地址空间。在IA-32结构微处理器上运行的任或程序能寻址多至4GB(232)的线性地址空间(对于80386以上的处理器,因为8086只有20条地址线,只能寻址1MB)和多至64GB(236)的物理存储器(对于奔腾pro以上的处理器)。(2)基本程序执行寄存器。八个通用寄存器、六个段寄存器、标志寄存器(EFLAGS)和指令指针(EIP)寄存器组成了执行通用指令的基本执行环境。这些指令能执行字节、字和双字整型数的基本整数算术运算;处理程序流程控制;在位和字节串上操作和寻址存储器。(这些就是8086微处理器的操作。)(3)80x87FPU寄存器。八个80位的80x87FPU数据寄存器、80x87FPU控制寄存器、状态寄存器、指令指针寄存器、操作数(数据)指针寄存器、标记寄存器和操作码寄存器。这样的执行环境能对单精度、双精度和双扩展精度浮点数,字、双字和四字整数以及二进制编码的十进制(BCD)值进行操作。(4)MMX寄存器。八个MMX寄存器支持在64位组合的(组合的是指一个字节中具有两位BCD十进制数)字节、字和双字整数上执行单指令多数据(SIMD)操作。

(5)XMM寄存器。八个XMM数据寄存器和MXCSR寄存器支持在128位组合的单精度和双精度浮点值和128位组合的字节、字、双字和四字整数上执行SIMD操作。(6)堆栈(Stack)。为支持过程或子例程调用并且在过程或子例程之间传递参数,堆栈和堆栈管理资源包含在基本执行环境中。堆栈定位在内存中。

(7)I/O端口。IA-32结构支持数据在处理器和输入输出(I/O)端口之间的传送。

IA-32结构微处理器的基本执行环境如图2-7所示。

除了基本执行环境中提供的资源之外,IA-32结构微处理器提供以下系统资源。这些资源是IA-32结构微处理器的系统级结构的一部分,它们为操作系统和系统开发软件提供扩展的支持。

(1)控制寄存器。五个控制寄存器(CR0~CR4)确定处理器的操作模式和当前执行的任务的特征。(2)存储管理寄存器。GDTR、IDTR、任务寄存器和LDTR。规定用于保护模式存储管理的数据结构。

(3)调试寄存器。调试寄存器(DR0~DR7)允许监控处理器的调试操作。

(4)存储类型范围寄存器(MTRRs)。MTRRs用于赋存储器类型到存储分区。2.3.3存储器组织

处理器在它的地址总线上寻址的存储器称为物理存储器。物理存储器按8位字节序列组织。每个字节赋予一个惟一的地址,称为物理地址。物理地址空间的范围从零至64GB(236-1)的最大值。在IA-32处理器上工作的任何操作系统和执行程序使用处理器的存储管理设施访问存储器。这些设施提供例如分段和分页特性以允许有效和可靠地管理存储器。

本书重点介绍8086微处理器的结构、指令、汇编语言以及相应的外设接口。实地址方式存储器组织

IA-32结构微处理器中的实地址方式是为了与8086(8088)微处理器兼容而设置的。所以,IA-32结构微处理器的实地址方式从存储器组织来看与8086(8088)的存储器组织是一样的。8086CPU有20条地址引线,它的直接寻址能力为1MB(220)。所以,在一个8086组成的系统中,可以有多达1MB的存储器。这1MB逻辑上可以组织成一个线性矩阵,地址从00000H到FFFFFH。给定一个20位的地址,就可以从这1MB中取出所需要的指令或操作数。8086CPU内部的ALU能进行16位运算,有关地址的寄存器如SP、IP,以及BP、SI、DI等也都是16位的,因而8086对地址的运算也只能是16位。这就是说,对于8086来说,各种寻址方式,寻找操作数的范围最多只能是64KB。所以,整个1MB存储器以64KB为范围分为若干段。

在寻址一个具体物理单元时,由一个基地址再加上由SP、IP、BP、SI或DI等可由CPU处理的16位偏移量来形成实际的20位物理地址。这个基地址就是由8088中的段寄存器,即码分段寄存器CS、堆栈分段寄存器SS、数据分段寄存器DS以及附加分段寄存器ES中的一个来形成的。在形成20位物理地址时,段寄存器中的16位数会自动左移4位,然后与16位偏移量相加,如图2-8所示。

在8086系统中,存储器的访问如图2-9所示。在不改变段寄存器值的情况下,寻址的最大范围是64KB。所以,若有一个任务,它的程序长度、堆栈长度以及数据区长度都不超过64KB,则可在程序开始时,分别给DS、SS、ES置值,然后在程序中可以不再考虑这些段寄存器,程序就可以在各自的区域中正常地进行工作。若某一个任务所需的总的存储器长度(包括程序长度、堆栈长度和数据长度等)不超过64KB,则可在程序开始时使CS、SS、DS相等,程序也能正常地工作。

上述的存储器分段方法,对于要求在程序区、堆栈区和数据区之间隔离这种任务时是非常方便的。这种存储器分段方法,对于一个程序中要用的数据区超过64KB,或要求从两个(或多个)不同区域中去存取操作数,也是十分方便的,只要在取操作数以前,用指令给数据段寄存器重新赋值就可以了。

这种分段方法也适用于程序的再定位要求。在很多情况下,要求同一个程序能在内存的不同区域中运行,而不改变程序本身,这在8086微处理器中是可行的。只要在程序中的转移指令都使用相对转移指令,而在运行这个程序前设法改变各个段寄存器的值就可以了。如图2-10所示。分段模式存储器结构

IA-32结构微处理器的基本存储模式是分段式存储模式。与8086微处理器类似,程序中给出的地址由两部分组成:即段基地址(一个段的起始地址)和段内偏移量。段基地址由段寄存器的值确定,而段内偏移量是由指令的寻址方式确定。

在8086微处理器中,有四个段寄存器(码段寄存器CS、堆栈段寄存器SS、数据段寄存器DS和附加段寄存器ES),把寄存器的内容左移4位就形成了20位的段基地址。段内偏移量或是直接地址,或是在某一寄存器中的地址,或是经过计算以后的有效地址,总之是16位的偏移量,可以寻址64KB。

在Intel80386以上的IA-32微处理器中,段寄存器扩展为六个(增加了两个数据段寄存器FS和GS),每个段寄存器仍是16位的。但是在IA-32结构微处理器中,段基地址也是32位的,所以不能像8086那样经过移位来形成,而是把16位的段寄存器内容作为选择子,以它为索引从内存中找到包含32位段基地址的段描述符,以确定32位的段基地址。同样,确定段内偏移量的寄存器也是32位的,故一个段最大可以达到4GB。

在分段存储模式,存储器以称为段的独立地址空间组出现在程序中。当使用这种模式时,代码、数据和堆栈典型地包含在不同段中。为了寻址段中的一个字节,程序必须发出由段选择子和偏移量组成的逻辑地址。段选择子标识要访问的段(由它确定32位的段基地址)而偏移量标识段地址空间中的一个字节。运行在IA-32处理器上的程序能寻址多至16383个不同尺寸和类型的段,而每个段最大可以达到232字节。

从内部来说,在系统上定义的任一字节的地址由段基地址和段内偏移量两部分组成,这样的地址称为逻辑地址。在真正寻址时,要把逻辑地址映射至处理器的线性地址空间。为访问一个存储单元,处理器把每个逻辑地址转换为线性地址(32位的段基地址与32位的段内偏移量相加产生32位的线性地址)。这种转换对于应用程序是透明的。3.平面存储模式平面存储模式实质上是分段存储模式的一种特例。当所有段寄存器的值相等并且全指向线性地址0(所有段的段基地址都为0)时,所有段都重合于同一个线性地址空间,这种不分段的存储模式称做平面存储模式。如图2-11所示。在平面存储模式中,存储器作为单个连续的地址空间,称为线性地址空间。代码(程序的指令)、数据和过程堆栈全都包含在此地址空间中,线性地址空间是以字节寻址的,地址可以从0到232-1连续寻址。2.3.4基本的程序执行寄存器

处理器为通用系统和应用程序编程提供了16个基本程序执行寄存器,如图2-12所示。这些寄存器分组如下:

(1)通用寄存器。这八个寄存器能用于存放操作数和指针。(2)段寄存器。这些寄存器最多能保持六个段选择子。

(3)程序状态和控制(EFLAGS)寄存器。EFLAGS寄存器报告正在运行的程序的状态,并且允许有限地(应用程序级)控制处理器。

(4)指令指针(EIP)寄存器。EIP寄存器包含下一条要执行的指令的32位指针。通用寄存器八个32位通用寄存器EAX、EBX、ECX、EDX、ESI、EDI、EBP和ESP用于处理以下事项:

(1)逻辑和算术操作的操作数;

(2)用于地址计算的操作数;

(3)内存指针。

虽然所有这些寄存器都可用于存放操作数、结果和指针,但在引用ESP寄存器时要特别小心,ESP寄存器保持堆栈指针,通常不要用于其他目的。许多指令赋特定的寄存器以保持操作数。例如,串操作指令用ECX、ESI和EDI寄存器的内容作为操作数。当用分段存储模式时,某些指令假定在一定寄存器中的指针相对于特定的段。80386通用寄存器的低16位直接映射至8086微处理器中能找到的寄存器组,并用寄存器名AX、BX、CX、DX、BP、SP、SI和DI引用,如图2-13所示。这些16位寄存器中的前四个寄存器,即AX、BX、CX和DX,又可以分别作为AH、BH、CH和DH(高字节)以及AL、BL、CL和DL(低字节)8位寄存器引用。2.段寄存器段寄存器(CS、DS、SS、ES、FS和GS)保持16位段选择子。一个段选择子是标识内存中一个段的特殊指针。为访问在内存中的具体段,此段的段选择子必须存在于适当的段寄存器中。

当使用平面存储模式时,段寄存器用相同的段选择子加载,它们都指向同一个从地址0开始的线性地址空间,如图2-14所示。于是,这些重叠的段构成了程序的线性地址空间。(典型地定义了两个重叠的段:一个是码段,另一个是数据和堆栈段。CS段寄存器指向码段,而所有其他段寄存器指向数据和堆栈段。)

当使用分段存储模式时,初始,每一个段寄存器用不同的段选择子加载,所以每个段寄存器指向线性地址空间中的不同的段。如图2-15所示。任何时候,一个程序能访问多至线性地址空间中的六个段。为访问未由一个段寄存器指向的段,程序必须首先把要访问的段的段选择子加载至一个段寄存器。3.EFLAGS寄存器

32位EFLAGS寄存器包含一组状态标志、一个控制标志和一组系统标志。图2-16定义了此寄存器中的标志。

EFLAGS寄存器中的某些标志能用特定目的的指令直接修改,没有指令允许审查或直接修改整个寄存器。然而,某些特定的指令可以用来移动标志组到过程堆栈或EAX寄存器,以修改某些位。

EFLAGS寄存器包含以下标志:

(1)状态标志

EFLAGS寄存器的状态标志(位0、2、4、6、7和位11)指示算术指令,例如ADD、SUB、MUL和DIV指令的结果的一些特征。状态标志的功能如下:

①进位标志CF(CarryFlag)

进位标志CF又简称为C(注:以下各标志位用简称表述)。当结果的最高位(字节操作时的D7或字操作时的D15、双字操作的D31)产生一个进位或借位,则C=1,否则C=0。这个标志主要用于多字节数的加、减法运算。移位和循环指令也能够把存储器和寄存器中的最高位(左移时)或者最低位(右移时)放入进位标志C中。②辅助进位标志A(AuxitiaryCarryFlag)

在字节操作时,由低半字节(一个字节的低4位)向高半字节有进位或借位时,则A=1,否则A=0。这个标志用于十进制算术运算指令中。

③溢出标志O(OverflowFlag)

在算术运算中,带符号数的运算结果超出了8位、16位或32位带符号数能表达的范围,即在字节运算时大于+127或小于-128,在字运算时大于+32767或小于-32768,在双字运算时大于+231-1或小于-231,则此标志置位,否则复位。一个任选的溢出中断指令,在溢出情况下能产生中断。④符号标志S(SignFlag)

它的值与运算结果的最高位相同,即结果的最高位(字操作时为D15)为1,则S=1;否则S=0。由于在IA-32结构微处理器中,符号数是用补码表示的,所以S表示了结果的符号,“0”表示正,“1”表示负。

⑤奇偶标志P(ParityFlag)

若操作结果中“1”的个数为偶数,则P=1;否则P=0。这个标志可用于检查在数据传送过程中是否发生错误。

⑥零标志Z(ZeroFlag)

若运算的结果为0,则Z=1;否则Z=0。

条件指令Jcc(在条件码cc为真时,发生转移)、SETcc(在条件码cc为真时,设置)、LOOPcc

和CMOVcc(条件传送),用一个或多个状态标志作为条件码,并且在转移、设置字节或结束循环时测试它们。条件可以分成以下两大类:根据单个标志位所形成的条件;根据若干个标志位的逻辑运算所形成的条件。下面以条件转移指令为例介绍这两类条件:

①根据单个标志位的条件转移指令

■c标志

a.JB/JNAE/JC

这是当进位标志C=1时,能转移至目标地址的条件转移指令的三种助记符。

b.JAE/JNB/JNC

这是当进位标志C=0时,能转移至目的地址的条件转移指令的三种助记符。

■Z标志

a.JE/JZ

这是当零标志Z=1时,能转移至目标地址的条件转移指令的两种助记符。

b.JNE/JNZ

这是当零标志Z=0时,能转移到目标地址的条件转移指令的两种助记符。

■S标志

a.JS

这是当符号位S=1时,能转移到目标地址的条件转移指令。

b.JNS

这是当符号标志S=0时,能转移到目标地址的条件转移指令。

■P标志

a.JP/JPE

这是当奇偶标志P=1,能转移到目标地址的条件转移指令。

b.JNP/JPO

这是当奇偶标志P=0时,能转移到目标地址的条件转移指令的两种助记符。

■O标志

a.JO

这是当溢出标志O=1时,能转移到目标地址的条件转移指令的助记符。

b.JNO

这是当溢出标志O=0时,能够转移到目标地址的条件转移指令的助记符。②组合条件的条件转移指令

IA-32结构微处理器的这一类转移指令,主要用来判断两个数的大小。由于参加比较的数的性质不同,判断大小的方法也不同。两个正数相比较,可以用结果的符号位S标志来判断。两个无符号数相比较,可由进位标志来判断。若要考虑是否相等的条件即判断高于或等于的条件,或者低于或等于的条件,就要组合C标志和Z标志。而两个带符号数相比较,就要组合符号标志S和溢出标志O,包含是否相等的条件就要组合Z标志。

■判断无符号数的大小

a.JA/JNBE

即两个无符号数A和B相比较,当A>B(不包括相等的情况)时就满足这个条件。怎样来表示这个条件呢?不相等必须Z=0,高于则没有借位即C=0。所以,条件为C∧Z=0。当满足这个条件时,能转移到目标地址。

b.JBE/JNA

这也是一条条件转移指令的两种助记符。两个无符号数(A和B)相比较,当A≤B时就满足这个条件。反映这个条件的标志为:有相等情况,则Z=1;低于则必有借位C=1。所以,条件是C∨Z=1。当满足这个条件时,能转移到目标地址。

■判断带符号数的大小

a.JG/JNLE

这是一条条件转移指令的两种助记符。两个带符号数A和B相比较,当A>B(不包括相等)时就满足这个条件。不相等,则必然Z=0;带符号数大于,则必须S⊕O=0(两者都为0或两者都为1)。所以,反映这个条件的标志是:S⊕O=0&(Z=0)。当满足这个条件时,能转移到目标地址。

b.JGE/JNL

这也是一条条件转移指令的两种助记符。与上一条条件转移指令相比,本指令只是条件为A≥B,包含着相等的情况,所以去掉Z必须为0的条件即

温馨提示

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

评论

0/150

提交评论