第二节 操作数类型和操作类型

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

6.程序流控制 前面所述的指令都不明显地给出下一条指令的地址。而总是约定随后的指令为下
一条。 程序流控制指令通过在指令中明显给出下条指令的地址或约定跳过下条指令来改
变指令执行顺序。 五类控制指令: 无条件转移/分支/跳步/调用与返回/陷阱 CPU 必须完成的动作: 对某些标志(条件码)进行判断,根据条件转移 根据寻址方式计算目标指令地址并送 PC 对于程序调用指令,还要保存返回地址到栈顶 程序流控制(观看动画演示) 无条件转移 如,“JMPx”表示无条件转移到 x 处执行 分支 根据相关标志的值决定是顺序执行,还是转移 如,“JEx”表示若相等(ZF=0),则转移到 x 处执行 跳步 根据相关标志的值决定是顺序执行,还是跳过下条指令
按边界对齐(假定字的宽度为 32 位,按字节编址) 双字地址:8 的倍数(低三位为 0) 字地址:4 的倍数(低两位为 0) 半字地址:2 的倍数(低位为 0) 字节地址:任意
不按边界对齐 这种情况可能会增加访存次数。 对齐方式示例 示例假设数据顺序:字-半字-双字-字节-半字-……
按边界对齐
边界不对齐 操作类型
在寄存器之间传送,则仅 CPU 内部操作 在寄存器和主(虚)存或主(虚)存之间传送,则: (1)由寻址方式计算存储器地址 (2)若地址为虚址,则要转换成内存物理地址 (3)在 cache 中查找,若无,则再在主存中查找 2.算术运算(ADD/SUB/MUL/DIV/INC/DEC 等) 指令加工的数据: 带符号的定点数 浮点数 压缩十进制数 操作数个数和来源: 单/双源操作数:内(虚)存/寄存器/栈顶 CPU 必须完成的动作: 在寄存器和 ALU 之间传送 在 ALU 中进行相应的运算(加/减/乘/除/取负/增 1/减 1 等) 从主(虚)存取数或将结果送主(虚)存保存 改变机器状态并产生条件码(零/负/溢出/进位等) 80x86 中的主要条件码(标志位) CF 进位标志(CarryFlag):反映指令执行后是否在最高位产生进位或借位。
第二节 操作数类型和操作类型
操作数是指令处理的对象,其基本类型有: 地址
被看成无符号整数,用来参加运算以确定主(虚)存地址 数值数据
定点数(整数):一般用二进制补码表示 浮点数(实数):大多数机器采用 IEEE754 标准 十进制数:一般用 NBCD 码表示,压缩/非压缩
字符串 用来表示文本、声音和图像等
逻辑数据 操作数个数和来源:
单/双源操作数:内(虚)存/寄存器/栈顶 CPU 必须完成的动作:
在寄存器和 ALU 之间传送 在 ALU 中进行相应的运算 如:与/或/非/异或/逻辑移位/循环移位等 从主(虚)存取数或将结果送主(虚)存保存 4.字符串处理 指令加工的数据:
字符串(一个连续字节序列)--内(虚)存/寄存器/栈顶 首地址+字节个数 操作类型: 传送/传送转换/比较/扫描/跨越/定位/匹配子串等 CPU 必须完成的动作: 在寄存器和 ALU 之间传送 在 ALU 中进行相应的运算(比较) 从主(虚)存取数或将结果送主(虚)存保存 根据比较结果产生条件码 5.输入输出操作 若计算机的输入输出空间和主存统一编址(存储映射编址)的话,就不需要专门的 输入输出指令。 指令功能: 用于启动外设、测试外设的状态、读写外设的数据 操作数个数和来源: 内(虚)存/寄存器 (首地址+字节个数) CPU 必须完成的动作: 从外设端口取数或将结果送外设端口保存
AF 辅助进位标志(AuxiliaryCarryFlag):反映指令执行后是否在低 4 位产生进 位或借位。用于 BCD 码加减法运算结果的调整。
PF 奇偶标志(ParityFlag):反映运算结果低 8 位的奇偶性。 ZF 零标志(ZeroFlag):反映运算结果是否为 0。 SF 符号标志(SignFalg):用于带符号数的算术运算,SF 的值就是有符号数的最 高位(符号位)。 OF 溢出标志(OverflowFlag):用于带符号数的算术运算,当运算结果超出了机 器所能表示的范围,就产生溢出,置 OF=1。 3.逻辑运算(AND/OR/XOR/SHL/SHR 等) 指令加工的数据:
小端方式(LittleEndian) 将最低字节存储在最小(低)地址位置上
如上例,其各数据的存放位置为:
操作数存储方式----数据对齐 目前计算机所用数据字长一般为 32 位或 64 位,而存储器地址按字节编址。计算 机指令系统可支持对字节、半字、字及双字的运 算。也有位处理指令。各种不同长度的数据存放时,有两种处理方式。
调用与返回 包括过程调用、系统调用和子程序调用 调用(CALL)和返回(RETURN)配合进行 调用指令执行时,必须记住或保存返回地址
陷阱 实际上是发生意外事件时的中断 一般是隐指令,即由 CPU 自动转移到故障处理程序,也有些机器也提供专门的 “陷阱”指令或访管指令,如“INTn”指令用来进行系统调用(n 为中断类型号)。 操作类型 7.系统控制 系统控制指令用于改变计算机的工作状态,如,停机、开中断、改变执行的特 权、进入特殊的处理程序等。它常用于在操作系统中对系统资源的访问进行控制,这 些资源对应用程序员是透明的。这种指令只有在系统管理状态下才能执行。有时称为 管态(访管、特权)指令。
Pentium 处理器浮点数格式
操作数类型和操作类型 操作数存储方式----字节排序 当一个数据元素的位数超过一个字节和一个字的宽度时,这个数据就要存储在相 邻的位置上。根据是向高(大)端放还是向低 (小)端放,可有两种存储方式。
大端方式(BigEndian) 将最低字节存储在最大(高)地址位置上 例 如 : 若 数 据 元 素 “ 12345678 ” 的 地 址 为 10 , 则 : 各 数 据 存 放 位 置 为 :
逻辑(布尔)数据 按位操作(0-假/1-真) Pentium 的数据类型 Pentium 处理器数据类型
基本类型: 字节、字(16 位)、双字(32 位)、四字(64Leabharlann Baidu位)
整数:
16 位、32 位、64 位三种 2 补码表示的整数 18 位压缩 BCD 码表示的十进制整数 序数: 字节、字或双字长无符号整数 近指针: 表示段内偏移的 32 位有效地址。用于不分段存储器的所有指针和分段存储器的 段内访问。 位串:最长为 232-1 位 浮点数:IEEE754 Pentium 处理器整数类型
按操作功能分为以下几种: 数据传送 算术逻辑运算 字符串处理 输入/输出操作 程序流控制 系统控制 1.数据传送(MOV,STOR/LOAD,PUSH/POP,SET/CLR 等) 指令中需给出的信息: 传送源:内(虚)存/寄存器/栈顶 传送目的地:内(虚)存/寄存器/栈顶 传送数据的个数: 每个操作数的寻址方式 CPU 必须完成的动作:
相关文档
最新文档