《计算机的编程结构》PPT课件_第1页
《计算机的编程结构》PPT课件_第2页
《计算机的编程结构》PPT课件_第3页
《计算机的编程结构》PPT课件_第4页
《计算机的编程结构》PPT课件_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

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

文档简介

计算机的编程结构 本部分需掌握内容 寄存器各类寄存器用途存储器寻址 实地址和虚拟地址方式输入 输出端口寄存器 默认16位段 偏移寻址组合 默认32位段 偏移寻址组合 微机硬件系统 用总线将微处理器 存储器和各种输入输出设备接口电路连接在一起的计算机体系结构 计算机的编程结构 1 连接系统各部件2 在部件间传送数据3 数据分类 数值 地址 命令或状态 总线部件 算术运算和逻辑运算 形成内存或I O端口地址 寄存器 分别命名内存 按字节统一编址I O端口 每一个端口分配1个地址 寄存器 1 通用寄存器8个32位寄存器 EAX EBX ECX EDX ESP EBP ESI和EDI8个16位寄存器 AX BX CX DX SP BP SI和DI8个8位寄存器 AH BH CH DH AL BL CL和DL2 段寄存器 CS DS ES SS FS和GS3 指令指针寄存器 EIP 32位 和IP 16位 4 FLAGS 标志 寄存器 EFR 32位 和FR 16位 寄存器 通用寄存器 作用 通用寄存器经常被用来存放操作数和运算结果 有些也可以存放地址各个寄存器的专用目的EAX AX AL 累加器 Accumulator 使用频度最高 用于算术和逻辑运算 串操作及I O操作指令EBX BX 基址寄存器 BaseAddressRegister 在某些寻址方式中存放地址偏移量ECX CX 计数寄存器 CountRegister 在循环 移位和串操作等指令中作隐含计数器EDX DX 数据寄存器 DataRegister 在双 四字长运算中存放高位数据 且DX存放I O端口地址 通用寄存器 ESP SP 堆栈指针寄存器 StackPointerRegister 作用 存放当前堆栈栈顶单元的偏移地址注意 ESP SP只能在栈操作中提供栈顶偏移地址EBP BP 基址指针寄存器 BasePointerRegister 在某些寻址方式中 参与形成堆栈存储单元的有效地址注意 ESP SP和EBP BP与SS联合使用 确定堆栈段中存储单元的物理地址 用于堆栈内存单元的寻址 BX作为基址寄存器指向数据段 BP作为基址寄存器指向堆栈段 通用寄存器 ESI SI和EDI DI的作用 在内存操作数寻址中提供内存单元的偏移地址在串操作中 2寄存器的专用目的 ESI SI 源变址寄存器 SourceIndexRegister 在串操作中存放源串偏移地址EDI DI 目的变址寄存器 DestinationIndexRegister 在串操作中存放目的串的偏移地址 EBX BX ESI SI和EDI DI作为地址指针默认地指向数据段 而EBP BP作为地址指针默认地指向堆栈段 段寄存器 存储器分段管理的原因 8086有20条地址线最大可编址 220 1MB内存空间8086CPU内部地址寄存器为16位16位寄存器寻址范围 216 64KB 段寄存器 解决方案 用2个16位寄存器描述内存单元地址分段管理内存实施办法 将正运行程序的指令 数据和系统暂存数据分别放在不同段中段寄存器提供各段首地址的高16位 段基值 由段基值和有效地址 偏移地址 合成内存单元的物理地址段容量 64KB 段寄存器 CS 代码段寄存器 CodesegmentRegister 代码段 存放当前正在运行的程序的指令SS 堆栈段寄存器 StacksegmentRegister 堆栈段 存放按 后进先出 原则存取的数据DS 数据段寄存器 DatasegmentRegister 数据段 存放原始数据和程序运行结果ES 附加段寄存器 ExtrasegmentRegister 附加段 存放原始数据和程序运行的中间结果在串操作中存放目的操作数FS和GS 32位微处理器中的附加段寄存器 每个段寄存器用来确定一个逻辑段的起始地址 段寄存器 当前段1个程序划分段的数目是任意的 由CS SS DS ES FS和GS指向的段是当前段 在一个程序运行的任一时刻 最多有6个当前段在一个程序运行的任一时刻 最少有1个当前段 即由CS指向的代码段 需要时 编程更换段寄存器的内容 可使其它段成为当前段 例 某程序已建立2个数据段D1和D2 当DS指向D1时 D1是当前段 如程序需要访问D2某存储单元 必须编程将D2段首地址装入DS 使D2成为当前数据段 段寄存器 段基值 段寄存器内容段基址 段首地址 20位 偏移地址 偏移量 有效地址 一个内存单元与它所在段的段基址之间的距离 以字节计算 位移量 一个内存单元与所在段内另一内存单元之间的距离 以字节计算 注意 默认情况 每个段第一个字节的偏移地址等于0 偏移地址 段基址 段基值 位移量 代码段 CodeSegment 用途 存放程序的指令序列代码段地址形成 段寄存器CS 提供代码段段基值指令指针寄存器EIP IP 指示代码段的偏移地址CPU利用CS EIP IP 合成欲取指令的物理地址 堆栈段 StackSegment 用途 1 存放中断调用及子程序调用时程序保存的断点2 存放程序使用的原始数据及中间结果堆栈段地址形成 堆栈段寄存器SS堆栈指针寄存器ESP SP 指示堆栈栈顶的偏移地址CPU利用SS ESP SP 在堆栈顶部内存单元存取数据 数据段 Datasegment 用途 存放运行程序所用原始数据及中间和最终结果数据段地址形成 数据段寄存器DS有效地址 EA 各种存储器寻址方式得到的内存操作数的偏移地址CPU利用DS EA存取数据段中的数据串操作指定将数据段作为源操作数的存放区域 其地址由DS SI给出 附加段 Extrasegment 用途 保存数据附加段地址形成 附加段寄存器ES有效地址 EA 各种存储器寻址方式得到的内存操作数的偏移地址CPU利用ES EA存取附加段中的数据串操作指定将附加段作为目的操作数的存放区域 其地址由ES DI给出 指令指针寄存器 EIP IP InstructionPointerRegister 功能 指示代码段中要取出指令的偏移地址与代码段段寄存器合成下一条欲取指令的物理地址CPU通过CS IP控制指令序列执行的流程注意 程序运行过程中 IP值不断修改 标志寄存器 EFR FR ExtendedFlagRegister 缩写EFR或Flags FlagRegister 缩写FR或Flag 功能 记录程序执行时的状态或控制指令执行8086提供1个16位的标志寄存器其中共有9个常用标志位 标志寄存器 常用标志的分类6个状态标志 名称 CF ZF SF PF OF AF功能 记录程序运行结果的状态信息3个控制标志名称 DF IF TF功能 控制微处理器的操作和系统所处的工作方式 进位标志CF CarryFlag 进位标志 CF作用 当运算结果的最高有效位有进位 加法 或借位 减法 时CF 1 否则CF 0 例1 3AH 7CH B6H例2 AAH 7CH 1 26H 00111010 01111100 10110110 10101010 01111100 100100110 进位 没有进位 CF 0 有进位 CF 1 零标志ZF ZeroFlag 零标志 ZF作用 若运算结果为0 则ZF 1 否则ZF 0 例1 3AH 7CH 例2 84H 7CH B6H结论 运算结果不是零 ZF 0 1 00H结论 运算结果是零 ZF 1 CF 1 符号标志SF SignFlag 符号标志 SF作用 运算结果最高位为1 SF 1 否则SF 0带符号数的符号位指示了符号标志的状态 例1 3AH 7CH B6H例2 84H 7CH 1 O0H 最高位D7 1 SF 1最高位D7 0 SF 0 奇偶标志PF ParityFlag 奇偶标志 PF作用 运算结果低8位有偶数个 l 时 PF l 否则PF 0注意 置标志结果与操作数的长度无关 例 3AH 7CH B6H 因为 B6H 10110110B结果中有5个1 是奇数 故PF 0 溢出标志OF OverflowFlag 溢出标志 OF作用 若带符号数算术运算结果超出给定位数所能表示的范围称为溢出 则OF 1 否则OF 0 下面以带符号数加法为例例1 58 124 182 换算为16进制 3AH 7CH B6H结果产生溢出 OF 1 何谓溢出 CPU内部用补码表示符号数8位符号二进制整数数值范围 128 12716位二进制数数值范围 32768 32767若运算结果超出上述范围 就产生了溢出有溢出 说明运算结果出错 何谓溢出 实例分析 3AH 7CH B6H分析1 因为上例即58 124 182 结果超出 128 127范围 故产生溢出 OF 1分析2 结果B6H的真值是 74 原题为两正数相加 结果显然不应该是负数 故产生溢出 OF 1 如何判断溢出 判断运算结果是否溢出的规则 两个同号数相加 或两个异号数相减 时 若运算结果的符号与原数据符号相反 表示溢出 其他情况 不会产生溢出 CF和OF对比 CF判断无符号数运算结果是否超出范围 8位运算 0 25616位运算 0 65535运算结果正确OF判断符号数运算结果是否超出范围 8位符号整数数值范围 128 12716位数数值范围 32768 32767运算结果不正确 数值部分进位至符号位 如何使用CF和OF CPU对两操作数进行运算时 按照无符号数求得结果 并设置CF 同时 根据该结果是否超出符号数数值范围设置OF 在程序中具体应该利用哪个标志控制程序流向 由程序员决定 即如果参加运算的数被认为是无符号数 就应该关心CF 若认为是符号数 则要注意结果是否溢出 练习 符号数补码运算 练习1 01100100 01100100 11001000 结论 CF 0OF 1结果出错 练习2 练习3 10101011 11111111 110101010 结论 CF 1OF 0结果正确 10101011 10001011 100110110 结论 CF 1OF 1结果出错 辅助进位标志AF AuxiliaryCarryFlag 辅助进位标志 AF作用 在进行字节算术运算时 若D3位 低半字节 向D4位有进位 加法 或借位 减法 时 AF l 否则AF 0说明 字加 减法 双字加 减法则以D7位向D8位或D15位向D16位有无进 借位判断应用 AF可用于BCD码运算的调整 例 3AH 2CH 66H 00111010 00101100 01100110 半进位 结果 D3有进位 AF 1 方向标志DF DirectionFlag 方向标志 DF作用 用于在串操作中控制地址变化的方向 设置DF 0 变址寄存器ESI SI和EDI DI自动增量设置DF 1 变址寄存器ESI SI和EDI DI自动减量 中断允许标志IF Interrupt enableFlag 中断允许标志 IF作用 用于控制外部可屏蔽中断是否可以被CPU响应 设置IF l 开中断 CPU响应外部可屏蔽中断请求 设置IF 0 关中断 CPU不响应外部可屏蔽中断请求 单步标志TF TrapFlag 单步标志 TF作用 用于控制CPU进入单步操作方式设置TF 0 CPU正常工作设置TF l CPU执行完当前指令后产生单步中断 然后由单步中断服务程序把IF置0 应用 在调试程序DEBUG中 可利用单步命令 在每条指令执行完后停下来查看结果 存储器 Memory CPU与内存间的信息交换内存单元简介32位微处理器的工作方式存储器的段结构逻辑地址与物理地址 CPU与内存间的信息交换 内存框图 内存单元 内存单元简介 内存单元 内存中信息存取的基本单位 1个字节 内存单元地址 无符号二进制整数内存单元编号 例如8086系统 内存单元内容 存放程序运行时使用的指令和数据数据以字节 字 双字等数据类型存储于内存单元 32位微处理器的工作方式 实地址方式RealAddressMode虚拟地址方式 保护方式 ProtectedVirtualAddressMode虚拟8086方式Virtual8086Mode 32位微处理器的工作方式 8086只能工作于实地址方式80286以上的微处理器工作于实模式或保护模式80386以上的微处理器可工作于实模式 保护模式和虚拟8086模式注意 1 DOS要求微处理器工作于实模式2 32位微处理器为向下兼容仍保留实模式3 80286以上的微处理器每次加电或复位后都默认地以实模式开始工作4 实模式下 为8086编写的程序可在32位微处理器直接运行 实地址方式 实模式只允许微处理器寻址第1个1MB存储器空间注意 1 第1个1MB存储器亦称为常规内存2 32位地址线中的A31 A20不起作用 以8086为例 学习实地址方式 8086CPU有20条地址线 A19 A0 最大可寻址的内存空间为220 1MB内存物理地址范围从00000H 0FFFFFH注意 每一个内存单元都有唯一的物理地址 8086的数据格式 字节数据 以无符号数和符号整数形式存储于1个内存单元中字节 D7 D0例 12H 8086数据格式 字数据 由相邻两个字节的数据组成 用地址较小的内存单元的地址作为该字单元的地址数据的低8位存放在地址较小的内存单元中 数据的高8位存放在地址较大的内存单元中8086要在访问内存数据前定义其数据类型字 D15 D0例 1234H 8086数据格式 双字数据 由相邻4个字节的数据组成 用地址最小的内存单元的地址作为该双字数据的地址 数据的低8位存放在地址最小的内存单元中 数据的高8位存放在地址最大的内存单元中 双字 D31 D0例 12345678H 8086的数据格式 多字节数据在内存中占据连续多个存储单元 Intel系列微处理器采用 低对低 高对高 的存储方式 称为小端方式 LittleEndian Motorola系列微处理器采用 低对高 高对低 的存储方式 称为大端方式 BigEndian 例 在内存中存储数据12345678H 小端方式 大端方式 存储器的段结构 8086分段管理1MB内存逻辑段 在源程序中用段定义伪指令定义的段物理段 内存中由段寄存器指定的段每个段是1个可独立寻址的逻辑单位 段基址 段寄存器 CS DS ES SS 10H段基址高16位由段寄存器提供 低4位为0000B默认情况下

温馨提示

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

评论

0/150

提交评论