微机原理与接口技术02.ppt_第1页
微机原理与接口技术02.ppt_第2页
微机原理与接口技术02.ppt_第3页
微机原理与接口技术02.ppt_第4页
微机原理与接口技术02.ppt_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

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

文档简介

第2章处理器结构 2 1处理器功能结构2 2寄存器2 3存储器组织2 4汇编语言基础 复习汇编语言程序设计 2 1处理器功能结构 从应用角度看到的处理器内部结构 Intel80386 8位CPU IntelPentium Intel8086 2 1 1处理器基本结构 算术逻辑单元寄存器指令处理单元 1 算术逻辑单元ALU 计算机的运算器 负责处理器所能进行的各种运算 主要就是算术运算和逻辑运算累加器结构的处理器累加器 Accumulator 提供一个操作数保存运算结果标志 Flag 寄存器反映运算结果的辅助信息例如 有无进借位 是否为零 是否为负等也称为程序状态字 PSW 2 寄存器 Register 处理器内部需要高速存储单元 用于暂时存放程序执行过程中的代码和数据透明寄存器对应用人员不可见 不能直接控制的寄存器可编程 Programmable 寄存器具有引用名称 供编程使用通用寄存器数量较多 使用频度较高 具有多种用途专用寄存器只用于特定目的 3 指令处理单元 处理器的控制单元 它控制指令的执行和信息的传输指令执行的过程取指 指令处理单元将指令从主存取出 并通过总线传输到处理器内部的指令寄存器译码 指令处理单元通过指令译码电路获得该指令的功能执行 指令处理单元的时序和控制逻辑按一定的时间顺序发出和接收相应信号 完成指令所要求的操作 2 1 28086的功能结构 123456 内部寄存器 IP ES SS DS CS 输入 输出控制电路 外部总线 执行部分控制电路 ALU 标志寄存器 AHAL BHBL CHCL DHDL SP BP SI DI 通用寄存器 地址加法器 指令队列 执行单元 EU 总线接口单元 BIU 16位 20位 16位 1 总线接口单元和执行单元 总线接口单元指令队列 指令指针 段寄存器 地址加法器和总线控制逻辑管理与系统总线的接口 负责对存储器和外设访问执行单元ALU 通用寄存器 标志寄存器和控制电路负责指令译码 数据运算和指令执行指令执行的两个主要阶段 取指和执行取指 从主存取出指令代码进入指令队列执行 译码指令 并发出有关控制信号实现指令功能 2 指令预取 Prefetch 8086处理器的指令读取 实际上是指令预取8086处理器维护着长度为6个字节的指令队列EU单元译码 执行指令 同时BIU单元读取后续指令BIU和EU两个单元相互独立 可以并行操作最简单的指令流水线技术节省许多取指时间 提高了工作效率程序转移将使预取指令作废 降低了效率 2 1 380386的功能结构 总线接口单元 为处理器提供同外部的接口指令预取单元 先行读取指令指令译码单元 从预取队列中取来指令 译码成微指令代码执行单元 ALU 乘法器 除法器和移位器等分段单元 逻辑地址变换成线性地址分页单元 将线性地址变换成物理地址 各功能部件可以并行工作 进行流水线处理 示意图 80386的功能结构 返回 2 1 4Pentium的功能结构 1 超标量流水线 2条指令流水线2 分离Cache 指令Cache和数据Cache3 动态分支预测 预测程序执行顺序4 其他性能增强的浮点处理单元FPU常用指令固化改进复杂指令的微代码算法节能特性电源电压 3 3V 示意图 Pentium的功能结构 返回 2 2寄存器 寄存器就是暂时存放数据的地方通过编写程序 由处理器执行指令控制IA 32处理器基本执行环境 8个32位通用寄存器6个16位段寄存器32位标志寄存器32位指令指针 对应用人员 程序员 来说 处理器被抽象为可编程寄存器 示意图 IA 32常用寄存器 返回 2 2 1通用寄存器 处理器最常使用的整数通用寄存器可用于保存整数数据 地址等8个32位通用寄存器EAX EBX ECX EDX ESI EDI EBP ESP8个16位通用寄存器AX BX CX DX SI DI BP SP8个8位通用寄存器AH AL BH BL CH CL DH DL 存取16位寄存器 高16位不受影响存取8位寄存器 16 32位寄存器其他位不受影响 示意图 通用寄存器的名称 EAX 累加器 Accumulator EBX 基址寄存器 Base ECX 计数器 Counter EDX 数据寄存器 Data ESI 源变址寄存器 SourceIndex EDI 目的变址寄存器 DestinationIndex EBP 基址指针 BasePointer ESP 堆栈指针 StackPointer ESP SP 应该作为专用寄存器对待 示意图 2 2 2标志寄存器 标志 Flag 反映指令执行结果或控制指令执行形式用一个或多个二进制位表示一种标志0或1的不同组合表达标志的不同状态8086支持16位标志寄存器FLAGSIA 32处理器形成32位EFLAGS标志寄存器状态标志 记录指令执行结果的辅助信息控制标志 方向标志DF 仅用于串操作指令系统标志 控制操作系统或核心管理程序的操作方式 示意图 标志寄存器EFLAGS 返回 1 状态标志 最基本的标志 有6个用来记录指令执行结果的辅助信息加减运算和逻辑运算指令是主要设置它们其他有些指令的执行也会相应地设置它们处理器主要使用其中5个构成各种条件 分支指令判断这些条件实现程序分支 进位标志CF CarryFlag 当加减运算结果的最高有效位有进位 加法 或借位 减法 时 进位标志置1 即CF 1 否则CF 0针对无符号整数 判断加减结果是否超出表达范围N个二进制位表达无符号整数的范围 0 2N 18位 0 25516位 0 6553532位 0 232 1 进位标志CF 举例 8位二进制数相加 00111010 01111100 10110110十六进制表达 3A 7C B6转换成十进制数 58 124 182没有产生进位 CF 0 8位二进制数相加 10101010 01111100 1 00100110十六进制表达 AA 7C 1 26转换成十进制数 170 124 294 256 38产生进位 CF 1 0 182 255 进位1表达256 溢出标志OF OverflowFlag 有符号数加减结果有溢出 则OF 1 否则OF 0针对有符号整数 判断加减结果是否超出表达范围N个二进制位表达有符号整数的范围 2N 1 2N 1 18位 128 12716位 32768 3276732位 231 231 1 杯中水已满 再加就溢出 溢出标志OF 举例 8位二进制数相加 00111010 01111100 10110110十六进制表达 3A 7C B6转换成十进制数 58 124 182超出范围 OF 1 8位二进制数相加 10101010 01111100 1 00100110十六进制表达 AA 7C 1 26转换成十进制数 86 124 38没有超出范围 OF 0 182 127 补码AAH表达 86 进位和溢出的区别 进位标志反映无符号整数运算结果是否超出范围有进位 加上进位或借位后运算结果仍然正确溢出标志反映有符号整数运算结果是否超出范围有溢出 运算结果已经不正确处理器按照无符号整数求得结果设置进位标志CF设置溢出标志OF程序员决定操作数是无符号数 关心进位操作数是有符号数 注意溢出 溢出标志的判断 处理器硬件判断规则最高位和次高位同时有进位或同时无进位 无溢出 最高位和次高位进位状态不同 有溢出人工判断的简单规则只有当两个相同符号数相加 含两个不同符号数相减 而运算结果的符号与原数据符号相反时 产生溢出 其他情况下 不会产生溢出 零标志ZF ZeroFlag 运算结果为0 则ZF 1 否则ZF 0 结果是0 ZF标志不是0 举例 8位二进制数相加 00111010 01111100 10110110结果不是0 ZF 08位二进制数相加 10000100 01111100 1 00000000结果是0 ZF 1 结果 进位 符号标志SF SignFlag 运算结果最高位为1 则SF 1 否则SF 0 举例 8位二进制数相加 00111010 01111100 10110110最高位 1 SF 18位二进制数相加 10000100 01111100 1 00000000最高位 0 SF 0 结果 进位 最高位 符号位 SF 奇偶标志PF ParityFlag 当运算结果最低字节中 1 的个数为零或偶数时 PF 1 否则PF 0 举例 8位二进制数相加 00111010 01111100 10110110 1 的个数为5个 PF 08位二进制数相加 10000100 01111100 1 00000000 1 的个数为0个 PF 1 结果 进位 仅最低8位 1 的个数 2 控制标志 方向标志DF DirectionFlag 仅用于串操作指令 控制地址的变化方向设置DF 0 每次串操作后的存储器地址就自动增加 即从低地址向高地址处理数据串设置DF 1 每次串操作后的存储器地址就自动减少 即从高地址向低地址处理数据串执行CLD指令设置DF 0执行STD指令设置DF 1 3 系统标志 中断允许标志IF Interrupt enableFlag 陷阱标志TF TrapFlag 单步标志I O特权层标志IOPL I OPrivilegeLevel 任务嵌套标志NT虚拟8086方式标志VM恢复标志RF对齐检测标志ACCPU识别标志ID IdentificationFlag 虚拟中断标志VIF虚拟中断挂起标志VIP 2 2 3专用寄存器 专用寄存器往往只用于特定指令或场合1 指令指针寄存器EIP保存将要执行的指令在主存的地址2 段寄存器段是安排相关代码或数据的主存区域段寄存器表明段在主存中的位置6个16位段寄存器 CSDSSSESFSGS3 其他寄存器浮点寄存器 多媒体寄存器系统专用寄存器 2 3存储器组织 物理存储器以字节为基本存储单位每个存储单元被分配一个唯一的地址这个地址就是物理地址物理地址空间从0开始顺序编排 直到处理器支持的最大存储单元8086处理器支持1MB存储器 00000H FFFFFHIA 32处理器支持4GB存储器 00000000H FFFFFFFFH操作系统利用存储管理单元进行存储管理 程序并不直接寻址物理存储器IA 32处理器提供3种存储模型 用于程序访问存储器 2 3 1存储模型 1 平展存储模型 Flatmemorymodel 存储器是一个连续的地址空间 线性地址空间IA 32处理器支持4GB容量线性地址空间2 段式存储模型存储器由一组独立的地址空间 段 Segment 每个段都可以达到4GB容量在处理器内部 所有的段都被映射到线性地址空间3 实地址存储模型8086处理器的存储模型段式存储模型的特例线性地址空间最大为1MB容量 段最大为64KB 2 3 2工作方式 1 保护方式 Protectedmode IA 32处理器固有的工作状态具有强大的段页式存储管理和特权与保护能力使用全部32条地址总线 可寻址4GB物理存储器使用平展或段式存储模型利用虚拟8086方式支持实地址8086软件2 实地址方式 Real addressmode 可以进行32位处理的快速8086只能寻址1MB物理存储器空间 每个段不超过64KB可以使用32位寄存器 32位操作数和32位寻址方式只能支持实地址存储模型3 系统管理方式实现节能和系统安全管理 2 3 3逻辑地址 LogicalAddress 在处理器内部 程序员编程时采用的地址逻辑地址 段基地址 偏移地址段基地址 在主存中的起始地址偏移地址 距离段基地址的位移量某个存储单元可以有多个逻辑地址 但只有一个唯一的物理地址 示意图 逻辑地址与物理地址 返回 1 基本段 编写应用程序时 涉及三类基本段 代码段 CodeSegment 存放指令代码程序的指令代码必须安排在代码段数据段 DataSegment 存放数据程序的数据默认存放在数据段数据也可放在其他段堆栈段 StackSegment 堆栈区域程序使用的堆栈一定在堆栈段 基本段的逻辑地址 代码段 CodeSegment 段基地址 代码段寄存器CS指示偏移地址 指令指针寄存器EIP保存数据段 DataSegment 段基地址 数据段寄存器DS指示有时也用附加段寄存器ES 段寄存器FS和GS指示偏移地址 各种存储器寻址方式计算出来堆栈段 StackSegment 段基地址 堆栈段寄存器SS指示偏移地址 堆栈指针寄存器ESP保存 2 段选择器 16位段寄存器保存16位段选择器段选择器指向64位段描述符 Descriptor 段描述符包括段基地址平展存储模型 指向地址0位置段式存储模型 指向线性地址空间不同的段实地址存储模型 保存段基地址的高16位 3 保护方式的地址转换 平展存储模型段基地址为0 偏移地址等于线性地址段式存储管理段基地址和偏移地址都是32位段基地址加上偏移地址形成线性地址线性地址映射到物理地址不使用分页机制 线性地址与物理地址对应使用分页机制 硬件支持下由操作系统或核心程序管理 构成虚拟存储器 转换成物理地址 应用程序看到的都是线性地址空间 4 实地址方式的地址转换 主存空间1MB 220B 00000H FFFFFH程序设计时分段管理 但有两个限制 每个段最大为64KB段只能开始于低4位地址全为0的物理地址处逻辑地址 段地址 偏移地址16位段寄存器保存20位段起始地址的高16位偏移地址也用16位数据表示物理地址 段地址 16 偏移地址 示意图 实地址存储模型的逻辑地址和物理地址 返回 2 4汇编语言基础 汇编语言以助记符形式表示计算机指令助记符 mnemonic 是便于人们记忆 并能描述指令功能和指令操作数的符号助记符是表明指令功能的英语单词或其缩写汇编格式指令以及使用它们编写程序的规则就形成汇编语言 AssemblyLanguage 汇编语言程序 用汇编语言书写的程序汇编程序 将汇编语言程序 汇编 成机器代码目标模块的程序 汇编语言程序与汇编程序是两个概念 2 4 1指令代码格式 Instructionformat IA 32处理器采用可变长度指令格式操作码可选的指令前缀 用于扩展指令功能 1 3字节的主要操作码操作数可选的寻址方式域 包括ModR M和SIB字段 可选的位移量可选的立即数 2 4 2语句格式 程序由语句组成一个语句常占一行 MASM有续行符 一个语句不超过132个字符 4个部分执行性语句 表达处理器指令 硬指令 标号 硬指令助记符操作数 操作数 注释说明性语句 表达伪指令 控制汇编方式名字伪指令助记符参数 参数 注释 这是MASM语法 但具有一般性 2 4 3源程序框架 32位控制台 eg0000 asminWindowsConsoleincludeio32 inc 包含32位输入输出文件 data 定义数据段 数据定义 数据待填 code 定义代码段start 程序执行起始位置 主程序 指令待填 exit0 程序正常执行结束 子程序 指令待填 endstart 汇编结束 7 1 4源程序框架 16位DOS平台 eg0700 asminDOSincludeio16 inc 包含16位输入输出文件 data 定义数据段 数据定义 数据待填 code 定义代码段start 程序执行起始位置movax datamovds ax 主程序 指令待填 exit0 程序正常执行结束 子程序 指令待填 endstart 汇编结束 例2 1 信息显示程序 在数据段给出这个字符串形式的信息 数据段msgbyte Hello Assembly 13 10 0 定义要显示的字符串在代码段编写显示字符串的程序 代码段moveax offsetmsg 指定字符串的偏移地址calldispmsg 调用I O子程序显示信息 32位控制台 例2 1 源程序 eg0201 asmincludeio32 inc data 数据段msgbyte Hello Assembly 13 10 0 code 代码段start 程序执行起始位置moveax offsetmsgcalldispmsgexit0 程序正常执行结束endstart 汇编结束 Hello Assembly 运行结果 运行于32位控制台MAKE32 BAT汇编连接 16位DOS平台 例7 1 源程序 includeio16 inc 包含16位输入输出文件 data 数据段msgbyte Hello Assembly 13 10 0 code 代码段start 程序起始位置movax datamovds axmoveax offsetmsgcalldispmsg 调用I O子程序显示信息exit0 程序正常执行结束endstart 汇编结束 运行于DOS环境MAKE16 BAT汇编连接 操作演示 DOS应用程序 END 温馨提示 EXIT命令关闭DOS窗口 输入输出子程序库 键盘输入和显示器输出的I O子程序含IO16 INC和IO16 LIB 需要包含文件声明源程序文件开始使用包含命令声明INCLUDEIO16 INC子程序调用方法MOVAX 入口参数CALL子程序名宏调用方法宏名入口参数 2 4 4开发过程 例2 2 数据寻址程序 1 16位DOS版本 数据段countword5678h 0def0h 0 0 3721h 代码段movax 1100h AX 1100H 立即数寻址 movbx ax BX AX 寄存器寻址 movcx count CX 5678H 直接寻址 movbx offsetcount BX count变量的有效地址 立即数寻址 例2 2 数据寻址程序 2 16位DOS版本 movdx bx DX 5678H 寄存器间接寻址 movsi bx 2 SI DEF0H 寄存器相对寻址 movsi 4 SI 2 立即数寻址 movdi count si DI DEF0H 寄存器相对寻址 movdi bx si DI DEF0H 基址变址寻址 例2 2 数据寻址程序 3 16位DOS版本 movdx bx si 6 DX 0 相对基址变址寻址 0000002C8BECmovbp sp BP SP 寄存器寻址 calldisprw 显示8个32位通用寄存器内容 复习主要MASM伪指令 第3 2 3 3节 常量表达常数 后缀B H分别表示二进制 十六进制 字符和字符串 英文缩略号括起来 符号常量 EQU 数值表达式 变量定义BYTE WORD DWORD DUP变量属性地址操作符 OFFSET SEG类型操作符 PTR TYPE LENGTHOF SIZEOF 复习主要处理器指令 第3 4章 数据传送指令MOV XCHG PUSH POP LEA加减运算指令ADD ADC SUB SBB INC DEC NEG CMP逻辑运算指令AND OR XOR TEST NOT移位指令SHL SHR SAL SAR ROL ROR RCL RCR控制转移指令JMP Jcc LOOP CALL RET过程定义伪指令 PROC ENDP 例3 9 换码显示程序 16位DOS版本 数据段numbyte6 7 7 8 3 0 0 0 被转换数字tabbyte 0123456789 代码表 代码段movcx lengthofnu

温馨提示

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

评论

0/150

提交评论