intel cpu, 80x86, 这个名字是怎么取的,为什么叫80,又为什么叫86呢?

作者&投稿:彩贡 (若有异议请与网页底部的电邮联系)
80X86微处理器有几代?各代的名称是什么?~

1.7 Intel 80x86处理器简介

到此,您已经看到了两个将要实际编译和运行的HLA程序。然而至今为止,出现在程序中的所有语句要么是数据声明,要么是对HLA标准库例程的调用,还不是真正的汇编语言。在我们学习真正的汇编语言之前,必须理解Intel 80x86处理器系列的基本结构,否则机器指令将没有任何意义。

Intel 系列CPU一般都被归为冯·诺依曼式机器。冯·诺依曼计算机系统包括三个主要模块:中央处理单元(CPU),存储器和输入/输出设备(I/O)。这三部分通过系统总线(由数据、地址和控制总线组成)相连。图1-4中的模块图表示了这种关系。





图1-4 冯·诺依曼计算机系统模块图

CPU与存储器和I/O设备之间的通信方法是向地址总线发送一个数值来选取一个存储单元或者I/O设备端口,它们都有惟一的二进制地址。因此,CPU、I/O以及存储器设备都通过将数据放到数据总线上来传递彼此之间的数据。控制总线则包含用于确定数据传输方向(在内存之间,以及I/O设备之间)的信号。

在CPU当中,寄存器是其最主要的特征。80x86 CPU的寄存器可以分成四类:通用寄存器、特殊目的寄存器、段寄存器以及特殊目的核心模式寄存器。本书不会介绍最后两类寄存器。段寄存器在现代的32位操作系统(例如:Windows,BeOS和Linux)当中用得不多;由于本书是专门针对32位操作系统所编写的程序,所以不需要讨论段寄存器。特殊目的核心模式寄存器专门用来编写操作系统、调试器以及其他系统级工具。这些软件的构建远远超出了本书的范围,所以也无需讨论特殊目的核心模式寄存器。

80x86(Intel系列)CPU提供了几个通用寄存器。其中包含八个32位寄存器,如下所示:

EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP

每个名称的前缀‘E’代表扩展(extended)的意思。该前缀将32位寄存器与如下所示的八个16位寄存器区分开来:

AX、BX、CX、DX、SI、DI、BP、SP

最后,80x86 CPU还提供了八个8位的寄存器,它们的名称如下所示:

AL、AH、BL、BH、CL、CH、DL、DH

遗憾的是,这些并非都是分离的寄存器。即80 x 86并未提供24个独立的寄存器。实际上,80x86将16位寄存器重叠于32位寄存器之上,也将8位寄存器重叠于16位寄存器之上。图1-5给出了这种关系。





图1-5 80x86(Intel系列CPU)的通用寄存器

关于通用寄存器,需要注意的是它们并不独立。修改一个寄存器可能会影响其他三个寄存器。例如,对EAX的修改可能会影响寄存器AL,AH以及AX。这一点相当重要。在汇编语言初学者所编写的程序当中,一个很常见的错误就是寄存器值的破坏,因为这些编程人员尚未完全理解图1-5的含义。

EFLAGS是一个32位寄存器,它包含几个1位的布尔值(true/false)。EFLAGS寄存器中的大多数要么是为核心模式(操作系统)函数保留的,要么就是程序员不感兴趣的。其中有8位(或标志)是程序员编写汇编语言程序需要用到的。它们分别是溢出标志、方向标志、中断禁止[4]标志、符号标志、零标志、辅助进位标志、奇偶标志以及进位标志。图1-6显示了EFLAGS寄存器低16位中标志的布局情况。

在应用程序员感兴趣的8个标志中,有4个标志特别重要:溢出标志、进位标志、符号标志以及零标志。这4个标志统称为条件码[5]。根据这些标志的状态就可以测试前一次计算的结果。例如,在对两个值进行比较以后,条件码标志就会告诉您其中一个值是小于,等于还是大于另一个值。





图1-6 标志寄存器的布局(EFLAGS的低16位)

令汇编语言初学者惊讶的一个重要事实是,在80x86 CPU中进行的所有计算几乎都和寄存器有关。例如,将两个变量相加,把它们的和存入第3个变量中,必须先将其中一个变量装入一个寄存器中,并将第2个操作数和寄存器的值相加,然后将寄存器中的值存入目的变量。寄存器在每次计算中都充当媒介。因此,在80x86汇编语言程序中寄存器是非常重要的。

还有一点很重要,虽然某些寄存器被称为是“通用”的,但并不能就此推断每个寄存器都能随意使用。以寄存器对SP/ESP为例,它们就有特殊的目的,而不能用于任何其他的目的(它们是栈指针)。同样,寄存器BP/EBP也具有特殊目的,它们的使用受到限制而无法当作通用寄存器使用。所有80x86寄存器都有它们自己特殊的目的,因此它们都限定在一个范围内使用。目前,您应该避免将ESP和EBP寄存器用于一般的计算当中;还应该记住,余下的寄存器在程序中不可以完全互换。存储子系统

运行32位操作系统的80x86处理器可以访问多达232个不同的存储单元,或者四十多亿字节。在几年以前,4G字节的存储器是最大的;然而,现代的机器已经远远超出了这一限制。由于在使用像Windows和Linux这样的32位操作系统时,80x86体系结构支持最大4G字节的地址空间,下面的讨论将假设最大有4G字节的空间。

当然,您应该问的第一个问题是:“确切地说,什么是一个存储单元?”80x86支持字节可寻址存储器(byte addressable memory)。因此基本的存储单元就是一个字节,这足以容纳一个单字符或是一个(非常)小的整数值(第2章将更详细地讨论这一点)。

将内存看作是字节线性数组。首字节的地址为0,末字节的地址为。对于奔腾处理器来说,下面的伪Pascal数组声明就是一个对内存非常好的比拟:

Memory: array [0..4294967295] of byte;

C/C++和Java用户可能偏爱下面这种语法:

byte Memory[4294967296];

为了执行Pascal语句“Memory[125]:=0;”的等效语句,CPU将数值0放在数据总线上,将地址125放到地址总线上,并设置写信号线(通常要将该线置0),如图1-7所示。





图1-7 存储器的写操作

若执行“CPU:=Memory[125];”的等效语句,CPU会将地址125放到地址总线上,并设置读信号线(因为CPU正在从存储器读取数据),然后从数据总线上读取数据结果(如图1-8所示)。





图1-8 存储器的读操作

这里的讨论只适用于访问内存中单个字节的情况。那么当处理器访问一个字或者双字时又会如何呢?由于存储器由一个字节数组构成,那么我们应该怎样处理大于一个字节的数据呢?很简单,要存储更大的值,80x86使用连续的存储单元序列就可以了。图1-9给出了80x86如何在存储器中存储字节、字(双字节)以及双字(四字节)。每个对象的内存地址就是它的首字节地址(最低地址)。

现代的80x86处理器实际上并不直接与存储器相连。而是CPU上有一个专门的存储缓冲器称为高速缓存(cache),它充当CPU与主存储器之间的高速媒介。虽然高速缓存可以自动处理细节,但应该明白一个事实,即如果该对象的地址为对象长度的整数倍,那么访问内存中的数据对象的效率更高。因此,用4的整数倍的地址来对准四字节(双字)对象的确是个好主意。同样,让双字节对象对准偶数地址是最有效的。在后面的章节中,您将学习如何设置内存对象的对准。





图1-9 存储器中字节、字和双字的存储

在结束讨论内存对象以前,应该理解内存与HLA变量之间的相关性。使用像HLA这样的汇编器/编译器的一个好处是不必担心内存地址值。只需在HLA中声明一个变量,HLA负责将该变量与惟一一组内存地址集合相关联。例如,对于下面的声明段:

static

i8 :int8;

i16 :int16;

i32 :int32;

HLA将在内存中找到某个未使用的8位字节,将其与变量i8相关联;还将找到一对连续未使用的字节,并将它们与i16相关联。最后,HLA将找到4个连续未使用的字节,并将i32的值与这4个字节(32位)相关联。以后就要通过变量的名称来引用它们,而不必关心它们的地址值。但是,您仍然应该知道HLA在后台完成了这些工作。

80X86微处理器系列是美国Intel公司从20世纪70年代开始研制的微处理器的总称。我们先简单介绍80X86微处理器的发展概况,然后简要说明基于微处理器8086的计算机系统构成,最后将根据汇编语言编程的需要分节介绍8086微处理器的基本组成、8086寄存器组、存储器和外部设备。

1.从8080/8085到8086
8086是1978年Intel公司推出的16位微处理器。与其前一代8位微处理器8080/8085相比,8086有如下几点进步:
(1)8086有16位数据总线,处理器与外部传送数据时,一次可传送16位二进制数,而8080/8085一次只能传送8位。
(2)8086的寻址空间从8080/8085的64K字节提高到1M字节。
(3)8086采用了流水线技术,而8080/8085是非流水线结构。在一个具有流水线结构处理器的系统中,可以实现处理器的内部操作与存储器或I/O接口之间的数据传送操作重叠进行,从而提高了处理器的性能。

2.从8086到8088
8086的内部寄存器、功能部件、数据通路以及对外的数据总线均为16位宽度,它的出现是计算机技术上一个很大的进步。但是,当时已有的微处理器外围配套芯片的数据总线都是8位的,为了使用这些8位的外围芯片组成系统,Intel公司又推出了8088微处理器。8088的内部结构与8086基本相同,也提供16位的处理能力,但对外的数据总线设计成8位。

1981年IBM公司选择8088微处理器作为核心来设计IBM PC微计算机系统,推向市场后获得了巨大的成功,为后来的80x86系列微处理器成为主流微计算机的处理核心打下了基础。

3.80286、80386到Pentium微处理器
由于用户对PC机性能的要求迅速提高,Intel公司在1982年推出了80286微处理器,它仍然是16位结构。80286的内部及外部数据总线都是16位的,但它的地址线是24位的,可寻址16M字节的存储空间。80286有两种工作方式,即实模式和保护模式。实模式与8086工作方式相同,但速度比8086快。保护模式除了仍具有16M字节的存储器物理地址空间外,她还能为每个任务提供1G(230)字节的虚拟存储器地址空间。保护方式把操作系统及各任务所分配到的地址空间隔离开,避免程序之间的相互干扰,保证系统在多任务环境下正常工作。

80386是1985年研制出的一个32位微处理器,内部及外部数据总线均为32位,地址线也为32位,因此它可处理4G(232)字节的物理存储空间。80386为每个任务提供的虚拟存储空间增加到64T(246)字节。

1989年Intel公司又研制出新一代的微处理器80486,80486芯片内除了有一个与80386相同结构的主处理器外,还集成了一个浮点处理部件FPU以及一个8K字节的高速缓冲存储器(cache),使80486的计算速度和总体性能比80386有了明显的提高。

1993年Intel公司又推出了Pentium微处理器,此后几乎每两年就推出一个新型号,至今市场上的Intel微处理器已是PentiumⅣ。由此可见,微处理器芯片的发展速度是非常快的。在微处理器的发展过程中,芯片主频越来越快,寻址空间越来越大,数据和地址总线也越来越宽,加之许多体系结构方面的改进措施,如流水线结构、存储器层次结构等,使微计算机的性能大大提高,其应用领域也更加广泛。

这个起源可以从8085说起,这个名字的字面意思是:80年代生产的8位5伏电压处理器。后来,对这个进行升级,就简单的在个位上加1,变成了8086,也就出现了那个非常著名的x86鼻祖,于是就延用下来了。其实,后来的32位和64位系统,全名叫做x86-32 和 x86-64。但是,为了方便区分,就变成了x86和x64....你想听的是这种答案是不是?总结一下:8085是8位,8086是16位,x86-32是32位,x86-64是64位。其中,x86就是x86-32的简称,x64就是x86-64的简称。

80x86是架构名称。
X86是由Intel推出的一种精简指令集,用于控制芯片的运行的程序,现在X86已经广泛运用到了家用PC领域。

x86架构于1978年推出的Intel 8086中央处理器中首度出现,它是从Intel 8008处理器中发展而来的,而8008则是发展自Intel 4004的。8086在三年后为IBM PC所选用,之后x86便成为了个人计算机的标准平台,成为了历来最成功的CPU架构。

希望对你有帮助。

这个x可能指代不同的数字。因为有80286,80386,80486等芯片

是处理器的一种,具体的可以百度一下


汉阳区19147055747: 80X86指的是什么? -
晏莘盐酸: 答: 总的来讲不是属于 CPU 或 机器 什么型号是一种汇编语言 进制的代码----------------------------------------------------------------------Intel公司出的一系列处理器8086 80186 80286 ,都是16位(以及8088等变种) 80386 80486 都是32位从奔腾开始,已不再沿用80586这样的模式,因为更新太快了.但是大家习惯上都以586,686来称谓.现在的PC机处理器,都是向下一直兼容到8086这些就统称为80x86在汇编语言下常提到“80x86指令集”这个术语,意思是兼容这些cpu的指令集.

汉阳区19147055747: intel cpu, 80x86, 这个名字是怎么取的,为什么叫80,又为什么叫86呢? -
晏莘盐酸: 这个起源可以从8085说起,这个名字的字面意思是:80年代生产的8位5伏电压处理器.后来,对这个进行升级,就简单的在个位上加1,变成了8086,也就出现了那个非常著名的x86鼻祖,于是就延用下来了.其实,后来的32位和64位系统,全名叫做x86-32 和 x86-64.但是,为了方便区分,就变成了x86和x64....你想听的是这种答案是不是?总结一下:8085是8位,8086是16位,x86-32是32位,x86-64是64位.其中,x86就是x86-32的简称,x64就是x86-64的简称.

汉阳区19147055747: CPU X86是什么意思? -
晏莘盐酸: 早期的cpu是用80X86 表示的~ 比如 80386 80486 80506 X86指令集是美国Intel公司为其第一块16位CPU(i8086)专门开发的,美国IBM公司1981年推出的世界第一台PC机中的CPU— i8088(i8086简化版)使用的也是X86指令,同时电脑中为提高浮...

汉阳区19147055747: 求详细介绍intel 80386 cpu的书籍,资料 -
晏莘盐酸: IBM PC微机CPU采用Intel公司80X86系列,随着性能的提高,80X86已发展到P6,主流机型采 用Pentium,它们均保持向上兼容性.这里,我们将以386微机为主,阐述PC微机系统的工作原 理.80386是Intel公司1985年推出的与8086、80286...

汉阳区19147055747: 为什么只学X86汇编.86以上的为什么不学 -
晏莘盐酸: cpu最常见是intel的80X86系列:1978年8086;1979年8088;1982年80286;以后就是(80)386,(80)486,Pentium(586),PentiunPro(P6),PentiumII.....这些CPU的核心部分都是差不多的,而汇编是针对CPU的,所以学X86这个系列就行了

汉阳区19147055747: Intel公司的8038b微处理器的商业化的名称是 -
晏莘盐酸: 该微处理器的商业化名称为英特386微处理器.英特尔286最初的名称为80286,故而,8038b微处理器,也就是,英特尔386微处理器拥有275,000个晶体管,是早期4004处理器的100多倍.该处理器是一款32位芯片,具有多任务处理能力,也就是说它可以同时运行多种程序.

汉阳区19147055747: Intel 80386/80486CPU的字长是 - -------位的 -
晏莘盐酸: 8B

汉阳区19147055747: 下列微处理器中,属于INTEL的有哪个? -
晏莘盐酸:[选项] A. 8086 B. 80X86 C. PENTIUM D. IBM

汉阳区19147055747: 英特尔公司研发的CPU由80268发展到什么系列 -
晏莘盐酸: 80286之后是80368,也就是我们熟知的386机器!后来80486、……为了囊括这一些系列里的指令集,也是对这一些系列的延续,于是就有了80x86,也就是现在的X86体系,准确说这些是延续的最初的那些处理器的指令集,后来有了奔腾、赛扬,后来又有了酷睿.但是最早的英特尔处理器是4004.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网