




已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章 intel 80x86汇编语言编程结构,主讲:,2.1 intel 8086 cpu的汇编语言编程结构 2.2 intel的32位cpu汇编语言编程结构,2.1 intel 8086 cpu的汇编语言编程结构,intel 8086/8088 cpu是intel 公司于上个世纪七十年代末先后推出的两种16位的微处理器,它们被ibm公司选择作为流行于世界各地的16位微型计算机ibm-pc机和ibm-pc/xt机的cpu,同时也是世界各国16位兼容机的主流cpu。 intel 8086/8088 cpu的设计思想领先,指令系统丰富,寻址方式众多,是intel 后续处理器乃至pentium处理器的鼻祖,因而,基于intel 8086/8088 cpu的16位微型计算机的影响极其深远,今天的32位机都尽量保持与基于intel 8086/8088 cpu的16位计算机的兼容。,2.1.1 8086 cpu结构概述 2.1.2 8086 cpu寄存器结构 2.1.3 8086 cpu内存组织 2.1.4 8086 cpu的i/o组织,2.1.1 8086 cpu结构概述 微型计算机中包含运算器和控制器电路的大规模集成电路,称为“微处理器”,又称“中央处理器(cpu)”,其职能是执行算术/逻辑运算,并负责控制整个计算机系统,使之能自动协调地完成各种操作。,18086的基本性能指标 16位微处理器; 采用高速运算性能的hmos工艺制造,芯片上集成了2.9万只晶体管; 使用单一的+5v电源,40条引脚双列直插式封装; 时钟频率为5mhz10mhz,基本指令执行时间为0.3ms0.6ms 16根数据线和20根地址线,可寻址的地址空间达1mb 8086可以和浮点运算器、i/o处理器或其他处理器组成多处理器系统,从而极大地提高了系统的数据吞吐能力和数据处理能力。,28086微处理器内部结构组成 从功能上看,可以分为两大部分,结构图如下: (1)总线接口单元biu (bus interface unit) 包括总线控制逻辑(输入/输出控制电路)和指令队列缓冲器两部分。 总线控制逻辑用于分时传递地址信息或数据信息;指令队列缓冲器:用于暂存指令、取指令和执行指令可重叠操作 (2)执行单元eu (execution unit) 用于从指令队列中取出指令;对指令进行译码,发出相应的控制信号;接收由总线接口送来的数据或发送数据至接口。,2.1.2 8086 cpu寄存器结构 8086微处理器内部共有14个16位可编程寄存器,按大至的功能分为4组,即数据寄存器、指针及变址寄存器、段寄存器、控制寄存器四组,1.数据寄存器 这组寄存器包括ax、bx、cx、dx四个寄存器,它们都可以以字(16位)的形式访问,也可以以字节(8位)的形式访问。ax、bx、cx、dx这四个寄存器除了作为一般的数据寄存器使用以外,还有各自的专用场合,这些专用场合只有该寄存器可以使用,其他的存储器件无法代替。 ax(accumulator):是乘除法运算和输入/输出时使用的专用寄存器。 bx(base):用来存放存储器的地址或地址的一部分。 cx(count):在循环(loop)和串处理指令中用作隐含的计数器。 dx(data):在乘除法运算和输入/输出时使用的专用寄存器。,2.指针及变址寄存器 这组寄存器包括sp、bp、si、di四个16位寄存器。它们可以像数据寄存器一样在运算过程中存放操作数,但它们只能以字(16位)为单位使用。此外,在段内寻址时用它们来提供偏移地址(又称指针)。 sp(stack pointer):称为堆栈指针寄存器。用来指示栈顶的偏移地址, bp(base pointer):称为基址指针寄存器。用作堆栈区中的一个基地址以便访问堆栈中的其他信息。 si(source index):源变址寄存器。当与ds联用时,用来确定数据段中某一存储单元的地址,在串处理指令中,si作为隐含的源变址寄存器,与ds联用达到在数据段寻址的目的。 di(dest index):目的变址寄存器。在串处理指令中,di作为隐含的目的变址寄存器并es联用在附加段中寻址,其它功能和使用方法与si基本相同。,3.段寄存器 这组寄存器包括cs、ds、es、ss四个16位寄存器。它们是intel 8086/8088的四个段寄存器。为了寻址1mb内存,intel 8086/8088将内存分成若干个逻辑段。每个段长64kb。这四个段寄存器存放各段的段地址(段基址)。 intel 8086/8088中的四个段寄存器分别称为 代码段cs(code segment) 寄存器、 数据段ds(data segment) 寄存器、 堆栈段ss(stack segment) 寄存器和附加段es(extra segment) 寄存器。 cs段寄存器给出当前代码段的段地址。ds段寄存器给出当前数据段的段地址。ss段寄存器给出当前堆栈段的段地址。es段寄存器给出当前使用的附加段的段地址。,4.控制寄存器 这组寄存器包括ip(instruction pointer)和flags两个16位寄存器。ip为指令指针寄存器,用来存放代码段中的偏移地址,它与cs寄存器联用确定下一条指令的物理地址。flags为标志寄存器,又称程序状态字寄存器psw(program status word),是一个16位的寄存器,intel 8086/8088使用其中的9位,即6位条件码标志(flag)和3位控制标志,具体情况见下表所示:,其中,标示的那一位为无用位,该位为0或1没有任何实际意义。条件码标志用来记录程序中运行结果的状态信息,控制标志用来控制cpu的工作状态。,(1)条件码标志 of(overflow flag)溢出标志 溢出即把参加运算的两个数当成有符号数时,当运算结果超过了补码的表数范围,从而导致结果出错,这种情况称为溢出。 当溢出时,cpu自动使of=1否则cpu自动使of= 0。如两个正数相加结果为负,两个负数相加结果为正,正数减负数结果为负数,负数减正数结果为正,这四种情况,显然结果都是错误的,它们都是溢出。虽然是否会溢出cpu自身可以判别出来,但读者应该也要掌握简单有效的判别方法。,sf(sign flag)符号标志 把参加运算的两个数当成有符号数时,结果为负时sf=1,否则sf=0。这种情况下,sf就是最高位的状态。 zf(zero flag)零标志 结果为0时zf=1,否则zf=0。 cf(carry flag)进位标志 记录运算时最高有效位是否产生了进位或借位值。当最高有效位有进位或借位时cf=1,否则置cf=0。 af(auxiliary carry flag)辅助进位标志 记录运算时第3位(字节运算)或第7位(字运算)产生的进位或借位值。例如,执行加法指令时第3位有进位时af=1,否则af=0。 pf(parity flag)奇偶标志 当传送信息时可用pf来帮助进行奇偶校验。当结果操作数中1的个数为偶数时pf=l,否则pf=0。,(2)控制标志 控制标志是控制程序的运行及cpu的工作,包括df、if、tf三位。 df(direction flag)方向标志 当机器执行串操作指令时,若df位为1,每次操作后使变址寄存器si和di减量.当df为0时,则使si和di增量。可用相应的汇编语言指令来设置该位。 if(interrupt flag)允许标志 if为l时,开放可屏蔽中断中断,否则关中断。可用相应的汇编语言指令来设置该位。 tf(trap flag)陷阱标志 tf=1时,每条指令执行完后产生陷井,tf=0时,cpu正常工作不产生陷阱。tf无法使用汇编语言指令来设置该位,但可通过间接的方法改变该位的值。,2.1.3 8086 cpu内部组织 1.内存储器的组成 存储器由若干个基本存储单元组成,每个基本存储单元有一个惟一的存储器地址即物理地址。每个基本存储单元存放1个字节的数据,所以基本存储单元又称字节单元。1个字节包含了8个二进制位。 存储容量是指存储器所具有的基本存储单元个数,存储容量的基本单位是字节b,常用的单位还有kb(千字节),mb(兆字节),gb(吉字节),甚至tb(太字节)。 换算规则为:1kb=210字节=1024字节1mb=220字节,1gb=230字节,1tb=240字节。,2.基于intel 8086/8088 cpu的内存结构 8086/8088 cpu有20条地址线,因此具有1m(220)的寻址能力,即可以在1m字节单元中寻找出所需的一个存储单元。在机器内部是用20位二进制无符号数表示存储单元地址。 (1)存储单元的地址和内容 存储单元有字节单元和字单元两种,其中,一个字节单元只有一个字节,而一个字单元包含几个字节单元,取决于机器字长,字长为16的机器,字单元包含连续的两个字节单元,字长为32的机器,字单元包含4个连续的字节单元,其它字长的机器依此类推。,存储单元的地址 众多的存储单元以存储单元的地址加以区分。存储单元地址从0开始顺序编址,依次加1。存储单元的地址是无符号数。 存储单元的内容 一个存储单元中存放的信息称为该存储单元的内容。,(2)存储单元物理地址的形成 内存物理空间 intel 8086/8088cpu地址线是20位的,所以,基于intel 8086/8088 cpu的计算机的内存物理空间最大可达220b=1mb,其物理寻址范围是00000hfffffh。在实际的计算机内存配置中,可以小于1mb。 存储单元物理地址 物理地址即真正的地址,即由cpu地址引脚输出的地址,在基于intel 8086/8088 cpu的计算机中,存储单元的物理地址是20位的,每个存储单元拥有惟一的20位物理地址。 存储器地址空间的分段 在基于intel 8086/8088 cpu的计算机中,把1mb地址空间字节划成若干逻辑段。每个逻辑段必须满足两个条件:一是逻辑段的起始字节单元物理地址(简称段首址)必须是16的倍数,即20位物理地址的最末4位为全0;二是逻辑段的最大长度为64kb,最小长度为1b。,段地址 在一个逻辑段中,所有存储单元的段地址都是一样的,16位,等于逻辑段在主存中的起始字节单元物理地址(简称段首址)的高16位,程序运行后,段地址被装入cpu中对应的段寄存器中。 段内偏移地址 是指同一段内存储单元距离段首址的偏移量,简称偏移地址(或称有效地址),用ea来表示,由于每段最长为64kb,所以偏移地址为16位。 物理地址形成 物理地址由intel 8086/8088 cpu内部的20位地址加法器产生,由20根地址引脚输出。20位地址加法器的两个输入量是段寄存器中的16位段地址和指令执行产生的16位偏移地址,按照(段地址16)偏移地址的机制相加。即:物理地址(段地址16)偏移地址,其中(段地址16)也可由段地址左移4位,其后补4个0来实现。,2.1.4 8086 cpu的i/o组织 众多的外部设备与主机(cpu和存储器)的通信是通过外设接口(interface)进行的,每个接口的具体形式,功能都不尽相同,每个接口都包括一个或若干个寄存器,数目不尽相同,但所有这些寄存器按照它们的功能大致可以分为三类,这三类寄存器分别是: 数据寄存器:存放外设和主机间传送的数据 状态寄存器:保存外设或接口的状态信息 命令寄存器:保存cpu发给外设或接口的控制命令,在基于intel 8086/8088 cpu的计算机中,为了区别cpu中的寄存器,我们把接口中的寄存器称为端口。因此接口中的数据寄存器、状态寄存器、命令寄存器又称数据端口、状态端口、控制端口。为了区分外设接口中的众多端口,给每个端口赋予一个端口地址(又称端口号),这样就构成一个独立于内存的端口地址空间,也称i/o空间。,2.2 intel的32位cpu汇编语言编程结构,intel 32位 cpu是指intel公司生产的字长为32位的cpu,从80386pentium 4,基于intel 32位 cpu的计算机的汇编语言编程结构和基于intel 8086/8088 cpu的计算机的汇编语言编程结构没有本质的区别,但在工作模式,可编程寄存器的字长及数量,内存管理等方面有很大的改进。,2.2.1工作模式概述 2.2.2 intel 32位cpu的编程结构介绍,2.2.1工作模式概述 intel 32位cpu共有三种工作模式,即实模式,保护模式,虚拟8086模式。,1 实模式: 只能访问实地址的工作模式。intel32位cpu被复位或加电时以实模式启动。 特点: (1)intel32位cpu都只有低20位地址线起作用,仅能寻址第一个1mb的内存空间,禁用cpu的所有保护功能,也不支持分页; (2)采用16位分段,段地址与偏移地址都是16位,20位物理地址是由16位段地址左移4位加上16位偏移地址得到的; (3)cpu总是从地址cs:ip处取指令,ss:sp指向堆栈段的栈顶地址;可以使用32位寄存器和32位操作数,但以32位表示偏移地址时,只使用其中的低16位,高16位为0。,2 保护模式: 在保护模式下,intel 32位cpu的所有功能都是可用的。全部地址线都能寻址;支持多任务,能够快速地进行任务切换和保护任务环境;4个特权级和完善的特权检查机制,既能实现资源共享又能保证代码和数据的安全和保密及任务的隔离;支持虚拟8086方式,便于执行8086程序。 特点: (1)具有4个特权级(03级),其中0级为最高特权级,3级为最低特权级; (2)采用32位物理地址,偏移地址也是32位,每段的长度可达4gb; (3)特权指令只能由运行在特权级0下的程序使用; (4)程序设计方法与实模式基本相同,但部分指令所执行的操作与实模式有一定差别。,3 虚拟8086模式: 虚拟8086模式是保护模式下的一种工作方式,也称为v8086模式,或者简称为v86模式。在此模式下,处理器类似于8086。寻址的地址空间是1m字节;段寄存器的内容作为段值解释;20位存储单元地址由段地址乘以16加偏移地址构成。可以运行dos及以其为平台的软件。但v86模式毕竟是虚拟8086的一种方式,所以不完全等同于8086。 特点: (1)可以运行8086程序; (2)分段寻址与实模式相同; (3)分页寻址与保护模式相同; (4)支持保护机制; (5)该模式下的程序处于特权级3,因而不能使用特权指令。,2.2.2 intel 32位cpu的编程结构介绍 基于intel 32位cpu的汇编语言编程结构,相比基于intel 8086/8088 cpu的编程结构,没有本质的改变。在实模式下和虚拟8086模式下,和8086/8088汇编语言编程结构几乎完全一样,在保护模式下,有所区别。在cpu中,可编程寄存器的字长、数目有所增加;在内存中,最大寻址空间为4gb(232);至于i/o端口,除了可以使用32位端口地址外,整个i/o空间仍然为64kb。,1.基于intel 32位 cpu的可编程寄存器组 intel 32位 cpu主要是80386、80486以及pentium系列cpu,其中应用程序可以用汇编语言直接编程的可编程的寄存器只有16个,按照大致的功能,分为三组:通用寄存器,段寄存器,专用寄存器。 (1)通用寄存器 32位通用寄存器有8个,分别是eax、ebx、ecx、edx、esi、edi、ebp、esp,其中它们的低16位分别与8086、80286的寄存器ax、bx、cx、dx、si、di、bp、sp相同,可以独立使用。ax、bx、cx、dx也可分成两个8位寄存器:ah、al、bh、bl、ch、cl、dh、dl。 功能上,8位及16位的寄存器仍然保持其在实模式下其原有的功能,而对于32位通用寄存器来说,除了一些专用功能及存放32位的操作数外,eax、ebx、ecx、edx、esi、edi、ebp、esp这8个寄存器都可作基址寄存器使用,而eax、ebx、ecx、edx、esi、edi、ebp这7个寄存器还可以作变址寄存器使用。,(2)段寄存器 除了cs、ds、es和ss外,32位的cpu还引入了另外两个16位的段寄存器fs和gs。通常,fs和gs也称为附加段寄存器。在实模式下,段寄存器用来存放对应段的段地址,而在保护模式下,存放段选择符。 (3)专用寄存器 专用寄存器共2个,分别是指令指针寄存器eip和标志寄存器eflags。 指令指针寄存器eip 指令指针寄存器eip的低16位是16位的指令指针寄存器ip,它与前面介绍过的8086cpu中的ip相同。由于实方式下段的最大范围是6
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建筑拆除项目的节能环保技术应用方案
- 小升初语文-文言文专项复习训练三(含答案)
- 建筑工地噪音控制措施
- 隋唐时期陶瓷作品欣赏一02课件
- 建筑项目工程项目完工前检查方案
- 混凝土施工过程中温控管理方案
- 水电安全知识培训资料课件
- 2025版水电项目施工承包合同书
- 水电厂运维管理课件
- 2025版毛坯房出租租赁期限合同范本
- 公务车驾驶员安全课件
- 地铁安检培训课件
- 2025年豪华别墅室内外装饰设计及施工一体化服务合同
- 废铅酸蓄电池回收处置项目可行性研究报告
- 2025年重庆对外建设有限公司招聘考试笔试试题
- 2025年阿克苏社区专职工作人员招聘真题
- 药学教学课件下载
- 急性下壁心肌梗死患者PCI术后护理个案
- 出生缺陷防治知识课件
- 口腔门诊护理人员管理
- 通山城区污水处理厂运营维护方案
评论
0/150
提交评论