汇编语言ch028086计算机组织.ppt_第1页
汇编语言ch028086计算机组织.ppt_第2页
汇编语言ch028086计算机组织.ppt_第3页
汇编语言ch028086计算机组织.ppt_第4页
汇编语言ch028086计算机组织.ppt_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

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

文档简介

第2章 8086计算机组织,2.1 80x86微处理器 2.2 基于微处理器的计算机系统构成 2.3 中央处理机 2.4 存储器,课前思考,微计算机系统一般包括哪两部分? 8086微处理器主要由哪几部分组成?它们的功能是什么? 一个字节和一个字分别由几个二进制位组成? 在Intel系列微型机中是如何编址的? 一个字节和一个字在存储器中是如何存储的? 字单元的地址是偶数或是奇数时,访问存储器有什么不同? 8086微型机可以访问的最大存储空间是多少?应用几位地址来表示?,在8086微机中,如何提供20位的地址?如何形成物理地址? 8086微机中,存储器空间可分为几种逻辑段?每段的可寻址空间是多大?段地址存放在哪些寄存器中? CPU中有哪几类寄存器,它们各自的专门用途是什么? 条件码标志和控制标志各包含几位?它们每位所表示的意义是什么? 什么是DOS和BIOS功能调用?,学习目标,了解计算机系统的主要组成部分; 掌握存储器地址分段的方法以及存储单元物理地址的形成方法; 熟悉8086各类寄存器的用途; 熟悉标志寄存器各标志位的意义。,学习指南,本章内容是汇编语言程序设计所需要了解的硬件知识,已熟悉计算机基本原理的学员可直接学习后面的章节。,重点与难点,存储器分段; 存储器单元物理地址的形成; 各寄存器的用途。,本章知识点,基于8086的微计算机系统 8086寄存器 通用寄存器 专用寄存器 段寄存器 8086微处理器的存储器管理 存储单元的地址和内容 存储器分段管理 外部设备 I/O端口 DOS和BIOS功能调用,2.1 80x86微处理器,80386,80486,奔腾,奔腾II,奔腾4,80286,8086,奔腾III,IA-64(安腾),4004,不是我不明白, 这世界变化太快。 扎扎实实掌握知识, 以不变应万变!,IA-32,8086,16位结构的微处理器:数据总线为16位 主存容量1MB:地址总线为20位 时钟频率5MHz(IBM PC使用4.77MHz) 准16位微处理器8088:外部数据总线为8位 IBM PC和PC/XT机使用Intel 8088 CPU 8086的16位指令系统:Intel 80x86基本指令集 80186/80188的核心是8086/8088,配以支持电路 80186/80188指令系统比8086指令系统新增了若干条实用的指令,涉及堆栈操作、移位指令、输入输出指令、过程指令和边界检测及乘法指令,80286,16位数据总线,24位地址总线(16MB主存) 实方式(Real Mode),与8086工作方式一样 保护方式(Protected Mode) 存储管理、保护机制和多任务管理的硬件支持 IBM PC/AT机使用Intel 80286 CPU 80286指令系统新增15条保护方式指令,16位Intel 80x86 CPU:8086 / 80186 / 80286 32位Intel 80x86 CPU(IA-32微处理器):80386,80486,Pentium系列 英特尔32位结构:IA-32(Intel Architecture-32),80386,32位结构 数据总线32位,地址总线32位,寻址4GB主存 虚拟8086方式(Virtual 8086 Mode) 保护方式下的8086工作方式 系统管理方式(System Management Mode) 低功耗节能状态 80386指令系统全面升级为32位 兼容原来16位指令系统 新增有关位操作、条件设置指令以及对控制、调试和测试寄存器的传送指令等,80486,8048680386803878KB Cache 浮点处理单元FPU 8086/8088:8087 80286:80287 80386:80387 高速缓冲存储器Cache 复杂指令集计算机CISC融合精简指令集计算机RISC的技术特点 80486指令系统新增用于多处理器和内部Cache操作的6条指令,Pentium,俗称的80586微处理器,奔腾微处理器 32位结构,连接主存的数据总线是64位 超标量(Superscalar)技术 Pentium指令系统新增 一条8字节比较交换指令 一条处理器识别指令 4条系统专用指令,Pentium Pro,原称P6,中文名称为“高能奔腾” 两个芯片组成 扩展的超标量技术 动态执行技术 Pentium Pro新增3条指令,Pentium II,多媒体扩展指令(MMX指令) MMX(MutliMedia eXtension) 整数运算多媒体指令 优化图像、音频、视频和通信方面的程序进行 提升微机对多媒体的处理能力 Pentium MMX(多能奔腾):MMX指令应用于Pentium处理器 Pentium II:MMX指令应用于Pentium Pro,Pentium III,数据流SIMD扩展指令(SSE指令) SSE(Streaming SIMD Extensions) 浮点单精度多媒体运算指令 提高浮点3D数据的处理能力。 SSE指令类似于AMD公司发布的3D Now!指令 Pentium III:SSE指令应用于Pentium II 单指令多数据SIMD Single Instruction Multiple Data 表示一条指令具有同时处理多组数据的能力,Pentium 4,NetBurst的微结构(Microarchitecture) 进一步发掘指令之间可以同时执行的能力 超线程HT(Hyper Threading) 发掘程序中的并行性 一个物理处理器形成两个逻辑处理器 SSE2指令 增强浮点双精度多媒体运算能力 SSE3指令 增强和完善MMX,SSE和SSE2指令,Celeron和Xeon,Celeron(赛扬)微处理器 面向低端(低价位)PC机 Xeon(至强)微处理器 面向高端服务器、工作站 AMD微处理器 AMD公司生产的IA-32微处理器兼容芯片 Intel公司最主要的竞争对手,双核微处理器 单芯片多处理器SMP技术 Intel的Pentium D:单芯片双Pentium 4核心 64位微处理器 AMD的K8核心:兼容IA-32的64位微处理器 Intel的EM64T(扩展64位技术): IA-32的64位扩展,2.2 基于微处理器的计算机系统构成,硬件(Hardware) 中央处理机(CPU) 存储器(memory) 输入输出(I/O) 软件(Software) 系统软件 应用软件,计算机结构,系统总线,数据总线DB 传送信息 地址总线AB 指出信息的来源和目的地 控制总线CB 规定总线的动作,如方向等,汇编语言程序员看到的硬件,中央处理单元 CPU(Intel 80x86) 对汇编语言程序员,最关心其中的寄存器 存储器(主存储器) 呈现给汇编语言程序员的,是存储器地址 外部设备(接口电路) 汇编语言程序员看到的是端口(I/O地址),2.3 中央处理机,2.3.1 中央处理机CPU的组成 2.3.2 80x86寄存器组,2.3.1 中央处理机CPU的组成,算术逻辑部件(arithmetic logic unit,ALU) 用来进行算术和逻辑运算 控制逻辑部件 负责对全机的控制工作 工作寄存器 存放计算过程中的操作数、操作数地址及运算的中间结果 存取速度比存储器要快的多,2.3.2 80x86寄存器组,通用寄存器,专用寄存器,段寄存器,1、通用寄存器,AX(accumulator) 累加器,使用频度最高,用于算术、逻辑运算以及与外设传送信息等。 BX(base) 基址寄存器,常存放存储器地址。 CX(count) 计数器,循环和串操作等指令中的隐含计数器。 DX(data) 数据寄存器,常用来存放双字长数据的高16位,或存放外设端口地址。,SP(stack pointer) 堆栈指针寄存器,指示堆栈段顶的偏移地址。 BP(base pointer) 基址指针寄存器,表示数据在堆栈段中的基地址。 SI(source index) 源变址寄存器 DI(destination index) 目的变址寄存器,2、专用寄存器,IP(instruction pointer) 指令指针寄存器。存放代码段中的偏移地址。 它与代码段寄存器CS联用,确定下一条指令的物理地址,计算机通过CS : IP寄存器来控制指令序列的执行流程。 FLAGS 标志寄存器,又称程序状态字寄存器PSW。存放条件码标志、控制标志和系统标志。,标志位的符号表示,进位标志CF(Carry Flag),当运算结果的最高有效位有进位(加法)或借位(减法)时,CF = 1;否则CF = 0。 如: 3AH + 7CHB6H,没有进位:CF = 0 AAH + 7CH(1)26H,有进位:CF = 1,零标志ZF(Zero Flag),若运算结果为0,则ZF = 1;否则ZF = 0 如: 3AH + 7CHB6H,结果不是零:ZF = 0 84H + 7CH(1)00H,结果是零:ZF = 1,注意:ZF为1表示的结果是0!,符号标志SF(Sign Flag),运算结果最高位为1,则SF = 1;否则SF = 0 有符号数据用最高有效位表示数据的符号。所以,最高有效位就是符号标志的状态。 如: 3AH + 7CHB6H,最高位D71:SF = 1 84H + 7CH(1)00H,最高位D70:SF = 0,奇偶标志PF(Parity Flag),当运算结果最低字节中“1”的个数为零或偶数时,PF = 1;否则PF = 0 如: 3AH + 7CHB6H10110110B 结果中有5个1,是奇数:PF = 0,PF标志仅反映最低8位中“1”的个数是偶或奇,即使是进行16位字操作!,溢出标志OF(Overflow Flag),算术运算的结果有溢出,则OF1;否则OF0。 如: 3AH + 7CHB6H,产生溢出:OF = 1 AAH + 7CH(1)26H,没有溢出:OF = 0,问题 什么是溢出? 溢出和进位有什么区别? 处理器怎么处理,程序员如何运用? 如何判断是否溢出?,什么是溢出,处理器内部以补码表示有符号数 8位表达的整数范围是:127128 16位表达的范围是:32767 32768 如果运算结果超出这个范围,就产生了溢出 有溢出,说明有符号数的运算结果不正确,3AH7CHB6H,就是58124182, 已经超出128127范围,产生溢出,故OF1; 另一方面,补码B6H表达真值是-74, 显然运算结果也不正确,溢出和进位,溢出标志OF和进位标志CF是两个意义不同的标志 进位标志 表示无符号数运算结果是否超出范围,超出范围后加上进位或借位运算结果仍然正确; 溢出标志 表示有符号数运算结果是否超出范围,超出范围后运算结果不正确。,溢出和进位的对比,例1:3AH + 7CHB6H 无符号数运算: 58124182 范围内,无进位 有符号数运算: 58124182 范围外,有溢出 例2:AAH + 7CH(1)26H 无符号数运算: 170124294 范围外,有进位 有符号数运算: 8612438 范围内,无溢出,如何运用溢出和进位,处理器对两个操作数进行运算时,按照无符号数求得结果,并相应设置进位标志CF;同时,根据是否超出有符号数的范围设置溢出标志OF 应该利用哪个标志,则由程序员来决定。也就是说,如果将参加运算的操作数认为是无符号数,就应该关心进位;认为是有符号数,则要注意是否溢出,溢出的判断,判断运算结果是否溢出的简单规则: 只有当两个相同符号数相加(包括不同符号数相减),而运算结果的符号与原数据符号相反时,产生溢出;因为,此时的运算结果显然不正确 其他情况下,则不会产生溢出,辅助进位标志AF(Auxiliary Carry Flag),运算时D3位(低半字节)有进位或借位时,AF = 1;否则AF = 0。 如:3AH + 7CHB6H,D3有进位:AF = 1 这个标志主要由处理器内部使用,用于十进制算术运算调整指令中,用户一般不必关心!,方向标志DF(Direction Flag),用于串操作指令,控制地址的变化方向: 设置DF0,存储器地址自动增加; 设置DF1,存储器地址自动减少。 CLD指令复位方向标志:DF0 STD指令置位方向标志:DF1,中断允许标志IF(Interrupt-enable Flag),用于控制外部可屏蔽中断是否可以被处理器响应: 设置IF1,则允许中断; 设置IF0,则禁止中断。 CLI指令复位中断标志:IF0 STI指令置位中断标志:IF1,陷阱标志TF(Trap Flag),用于控制处理器进入单步操作方式: 设置TF0,处理器正常工作; 设置TF1,处理器单步执行指令。 单步执行指令处理器在每条指令执行结束时,便产生一个编号为1的内部中断,这种内部中断称为单步中断 所以TF也称为单步标志 利用单步中断可对程序进行逐条指令的调试 这种逐条指令调试程序的方法就是单步调试,3、段寄存器,CS(code segment) 代码段,存放当前正运行的程序。 DS(data segment) 数据段,存放当前正运行程序所用的数据。 SS(stack segment) 堆栈段,定义了椎栈的所在区域。 ES(extra segment) 附加段,附加的一个辅助的数据区。,2.4 存储器,2.4.1 存储单元的地址和内容 2.4.2 实模式存储器寻址,2.4.1 存储单元的地址和内容,计算机中信息的单位 二进制位bit:存储一位二进制数:0或1 字节Byte:8个二进制位,D7D0 字Word:16位,2个字节,D15D0 双字DWord:32位,4个字节,D31D0 最低有效位LSB:数据的最低位,D0位 最高有效位MSB:数据的最高位,对应字节、字、双字分别指D7、D15、D31位,数据的存储格式,低地址,存储单元及其存储内容,主存储器需要利用地址区别 每个存储单元都有一个编号;被称为存储器地址 每个存储单元存放一个字节(8bit)的内容 如: 0002H单元存放有一个数据34H 表达为:(0002H)34H,多字节数据存放方式,多字节数据在存储器中占连续的多个存储单元。 存放:低字节存入低地址,高字节存入高地址 表达:用低地址表示多字节数据占据的地址空间 例如: 2号“字”单元的内容为: (0002H)= 1234H 2号“双字”单元的内容为: (0002H)= 78561234H,80x86处理器采用“低对低、高对高”:小端方式Little Endian,数据的地址对齐,同一个存储器地址可以是字节单元地址、字单元地址、双字单元地址等等 字单元安排在偶地址(xxx0B)、双字单元安排在模4地址(xx00B)等,被称为“地址对齐(Align)” 对于不对齐地址的数据,处理器访问时,需要额外的访问存储器时间 应该将数据的地址对齐,以取得较高的存取速度,2.4.2 实模式存储器寻址,1、存储器的分段管理 8086 CPU有20条地址线 最大可寻址空间为2201MB 物理地址范围从00000HFFFFFH 8086CPU将1MB空间分成许多逻辑段(Segment) 每个段最大限制为64KB 段地址的低4位为0000B 这样,一个存储单元除具有一个唯一的物理地址外,还具有多个逻辑地址,物理地址和逻辑地址,每个物理存储单元有一个唯一的20位编号,即物理地址: 00000HFFFFFH 分段后用户编程时,采用逻辑地址: 段基地址 : 段内偏移地址,分隔符,逻辑地址,段地址说明逻辑段在主存中的起始位置 8086规定段地址必须是模16地址:xxxx0H 省略低4位0000B,段地址就可以用16位数据表示,就能用16位段寄存器表达段地址 偏移地址说明主存单元距离段起始位置的偏移量 每段不超过64KB,偏移地址也可用16位数据表示,物理地址和逻辑地址的转换,将逻辑地址中的段地址左移4位,加上偏移地址就得到20位物理地址 一个物理地

温馨提示

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

评论

0/150

提交评论