




已阅读5页,还剩676页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 微机原理与接口技术 大家好 2 课程目标 掌握 微型计算机的基本工作原理汇编语言程序设计方法微型计算机接口技术建立微型计算机系统的整体概念 形成微机系统软硬件开发的初步能力 3 教材及实验指导书 教材 微机原理与接口技术 第3版 冯博琴 吴宁主编 清华大学出版社实验指导书 微机原理与接口技术实验指导书 讲义 陈文革 吴宁 夏秦编 西安交通大学 微机原理与接口技术题解及实验指导 第3版 吴宁 陈文革编 清华大学出版社 4 第1章微型计算机基础概论 主要内容 微机系统的组成计算机中的编码 数制及其转换无符号二进制数的运算算术运算和逻辑运算运算中的溢出机器数的表示及运算基本逻辑门及译码器 5 一 微型计算机系统 微型机的工作原理微机系统的基本组成 6 1 计算机的工作原理 冯 诺依曼计算机的工作原理存储程序工作原理 7 存储程序原理 将计算过程描述为由许多条指令按一定顺序组成的程序 并放入存储器保存指令按其在存储器中存放的顺序执行 由控制器控制整个程序和数据的存取以及程序的执行 8 冯 诺依曼计算机体系结构 运算器 存储器 控制器 输入设备 输出设备 9 冯 诺依曼机的工作过程 内存中的程序 指令1 指令2 指令n 分析 获取操作数 执行 存放结果 程序计数器PC 地址 CPU 取出 操作数 10 冯 诺依曼机的工作过程 取一条指令的工作过程 将指令所在地址赋给程序计数器PC PC内容送到地址寄存器AR PC自动加1 把AR的内容通过地址总线送至内存储器 经地址译码器译码 选中相应单元 CPU的控制器发出读命令 在读命令控制下 把所选中单元的内容 即指令操作码 读到数据总线DB 把读出的内容经数据总线送到数据寄存器DR 指令译码因为取出的是指令的操作码 故数据寄存器DR把它送到指令寄存器IR 然后再送到指令译码器ID 冯 诺依曼机的特点和不足 特点 程序存储 共享数据 顺序执行属于顺序处理机 适合于确定的算法和数值数据的处理 不足 与存储器间有大量数据交互 对总线要求很高 执行顺序有程序决定 对大型复杂任务较困难 以运算器为核心 处理效率较低 由PC控制执行顺序 难以进行真正的并行处理 11 典型的非冯 诺依曼机结构 数据流驱动的计算机结构当指令具有所需数据 且输出端没有数据时就可执行 12 DataflowImageProcessingSystem 13 2 系统组成 主机硬件系统外设微机系统系统软件软件系统应用软件 CPU存储器输入 输出接口总线 14 微处理器 微处理器简称CPU 是计算机的核心 主要包括 运算器控制器寄存器组 15 存储器 定义 用于存放计算机工作过程中需要操作的数据和程序 16 有关内存储器的几个概念 内存单元的地址和内容内存容量内存的操作内存的分类 17 内存单元的地址和内容 内存按单元组织每单元都对应一个地址 以方便对单元的寻址 10110110 38F04H 内存地址 单元内容 18 内存容量 内存容量 所含存储单元的个数 以字节为单位内存容量的大小依CPU的寻址能力而定实地址模式下为CPU地址信号线的位数 19 内存操作 读 将内存单元的内容取入CPU 原单元内容不改变 写 CPU将信息放入内存单元 单元中原来的内容被覆盖 20 内存储器的分类 随机存取存储器 RAM 只读存储器 ROM 按工作方式可分为 21 输入 输出接口 接口是CPU与外部设备间的桥梁 CPU I O接口 外设 22 接口的分类 串行接口并行接口 数字接口模拟接口 输入接口输出接口 23 接口的功能 数据缓冲寄存 信号电平或类型的转换 实现主机与外设间的运行匹配 24 总线 基本概念分类工作原理常用系统总线标准及其主要技术指标 具体内容见后续课程 25 软件系统 软件 为运行 管理和维护计算机系统或为实现某一功能而编写的各种程序的总和及其相关资料 系统软件 应用软件 操作系统编译系统网络系统工具软件 软件 26 二 计算机中的数制和编码 数制和编码的表示各种计数制之间的相互转换 27 1 常用计数法 十进制 D 二进制 B 十六进制 H 28 例 234 98D或 234 98 D1101 11B或 1101 11 BABCD BFH或 ABCD BF H 29 2 各种进制数间的转换 非十进制数到十进制数的转换十进制到非十进制数的转换二进制与十六进制数之间的转换 30 非十进制数到十进制数的转换 按相应的权值表达式展开例 1011 11B 1 23 0 22 1 21 1 20 1 2 1 1 2 2 8 2 1 0 5 0 25 11 755B 8H 5 161 11 160 8 16 1 80 11 0 5 91 5 31 十进制到非十进制数的转换 到二进制的转换 对整数 除2取余 对小数 乘2取整 到十六进制的转换 对整数 除16取余 对小数 乘16取整 32 二进制与十六进制间的转换 用4位二进制数表示1位十六进制数例 25 5 11001 1B 19 8H11001010 0110101B CA 6AH 33 3 计算机中的编码 BCD码用二进制编码表示的十进制数ASCII码西文字符编码 34 BCD码 压缩BCD码用4位二进制码表示一位十进制数每4位之间有一个空格扩展BCD码用8位二进制码表示一位十进制数 每4位之间有一个空格 35 BCD码与二进制数之间的转换 先转换为十进制数 再转换二进制数 反之同样 例 00010001 00100101 BCD 11 25 1011 01 B 36 ASCII码 西文字符的编码 一般用7位二进制码表示 D7位为校验位 默认情况下为0 要求 理解校验位的作用熟悉0 F的ASCII码 37 ASCII码的奇偶校验 奇校验加上校验位后编码中 1 的个数为奇数 例 A的ASCII码是41H 1000001B 以奇校验传送则为C1H 11000001B 偶校验加上校验位后编码中 1 的个数为偶数 上例若以偶校验传送 则为41H 38 三 无符号二进制数的运算 算术运算逻辑运算 无符号数有符号数 二进制数的运算 39 主要内容 无符号二进制数的算术运算无符号数的表达范围运算中的溢出问题无符号数的逻辑运算基本逻辑门和译码器 40 1 无符号数的算术运算 加法运算1 1 0 有进位 减法运算0 1 1 有借位 乘法运算除法运算 41 乘除运算例 00001011 0100 00101100B00001011 0100 00000010B即 商 00000010B余数 11B 42 2 无符号数的表示范围 0 X 2n 1若运算结果超出这个范围 则产生溢出 对无符号数 运算时 当最高位向更高位有进位 或借位 时则产生溢出 43 例 最高位向前有进位 产生溢出 44 3 逻辑运算 与 或 非 异或掌握 与 或 非门逻辑符号和逻辑关系 真值表 与非门 或非门的应用 45 与 或 运算 与 运算 任何数和 0 相 与 结果为0 或 运算 任何数和 1 相 或 结果为1 46 非 异或 运算 非 运算按位求反 异或 运算相同则为0 相异则为1 47 4 译码器 掌握74LS138译码器各引脚功能输入端与输出端关系 真值表 48 74LS138译码器 主要引脚及功能 49 三 机器数 有符号数 的运算 50 计算机中符号数的表示 机器数计算机中的数据构成 符号位 真值 0 表示正 1 表示负 51 例 52 0110100 00110100符号位真值 52 0110100 10110100符号位真值 52 1 符号数的表示 机器数的表示方法 原码反码补码 53 原码 最高位为符号位 用 0 表示正 用 1 表示负 其余为真值部分 优点 真值和其原码表示之间的对应关系简单 容易理解 缺点 计算机中用原码进行加减运算比较困难0的表示不唯一 54 数0的原码 8位数0的原码 0 00000000 0 10000000即 数0的原码不唯一 55 反码 对一个机器数X 若X 0 则 X 反 X 原若X 0 则 X 反 对应原码的符号位不变 数值部分按位求反 56 例 X 52 0110100 X 原 10110100 X 反 11001011 57 0的反码 0 反 00000000 0 反 11111111即 数0的反码也不是唯一的 58 补码 定义 若X 0 则 X 补 X 反 X 原若X 0 则 X 补 X 反 1 59 例 X 52 0110100 X 原 10110100 X 反 11001011 X 补 X 反 1 11001100 60 0的补码 0 补 0 原 00000000 0 补 0 反 1 11111111 1 100000000对8位字长 进位被舍掉 61 特殊数10000000 对无符号数 10000000 B 128在原码中定义为 0在反码中定义为 127在补码中定义为 128 62 符号数的表示范围 对8位二进制数 原码 127 127反码 127 127补码 128 127 63 2 符号二进制数与十进制的转换 对用补码表示的二进制数 1 求出真值2 进行转换 64 例 补码数转换为十进制数 X 补 00101110B正数所以 真值 0101110BX 46 X 补 11010010B负数所以 真值不等于 1010010B而是 X X 补 补 11010010 补 0101110 46 65 3 符号数的算术运算 通过引进补码 可将减法运算转换为加法运算 即 X Y 补 X 补 Y 补 X Y 补 X Y 补 X 补 Y 补 注 运算时符号位须对齐 66 例 X 0110100 Y 1110100 求X Y X 原 10110100 X 补 X 反 1 11001100 Y 补 Y 原 01110100 X Y 补 X 补 Y 补 11001100 01110100 01000000X Y 1000000 67 符号数运算中的溢出问题 两个带符号二进制数相加或相减时 若运算结果超出可表达范围 则产生溢出溢出的判断方法 最高位进位状态 次高位进位状态 1 则结果溢出 68 例 若 X 01111000 Y 01101001则 X Y 次高位向最高位有进位 而最高位向前无进位 产生溢出 事实上 两正数相加得出负数 结果出错 69 结束语 第1章难点 补码的概念及其运算 谢谢大家 70 第2章微处理器与总线 71 主要内容 微处理器的功能和结构8088 8086微处理器特点主要引线功能和内部结构内部寄存器实地址模式下的存储器寻址总线时序总线 一 微处理器及8088 8086CPU 72 1 微处理器 运算器控制器内部寄存器 73 微处理器 74 2 程序和指令 程序 具有一定功能的指令的有序集合指令 由人向计算机发出的 能够为计算机所识别的命令 75 3 指令执行的一般过程 取指令 取指部件 分析部件 执行部件 指令译码 读取操作数 执行指令 存放结果 76 4 顺序执行和并行流水线 顺序执行方式 各功能部件交替工作 按顺序完成指令的执行过程 并行流水线方式 各功能部件并行工作 77 顺序工作方式 78 并行流水线工作方式 EU CPU 79 5 8088 8086CPU的特点 采用并行流水线工作方式 通过设置指令预取队列实现对内存空间实行分段管理 将内存分为4个段并设置地址段寄存器 以实现对1MB空间的寻址支持多处理器系统 CPU内部结构 存储器寻址部分 工作模式 80 6 8088CPU的两种工作模式 8088可工作于两种模式下最小模式最大模式最小模式为单处理器模式 最大模式为多处理器模式 81 两种工作模式的选择方式 8088是工作在最小还是最大模式由MN MX引线的状态决定 MN MX 0 工作于最大模式MN MX 1 工作于最小模式 82 二 8088 8086的引线及功能 83 1 主要引线 最小模式下的8088引线 地址线和数据线 AD0 AD7 低8位地址和低8位数据信号分时复用 在传送地址信号时为单向 传送数据信号时为双向 A16 A19 高4位地址信号 与状态信号分时复用 A8 A15 8位地址信号 84 主要的控制和状态信号 WR 写信号 RD 读信号 IO M 为 0 表示访问内存 为 1 表示访问接口 DEN 低电平有效时 允许进行读 写操作 DT R 数据收发器的传送方向控制 ALE 地址锁存信号 RESET 复位信号 85 例 当WR 1 RD 0 IO M 0时 表示CPU当前正在进行读存储器操作 86 READY信号 87 中断请求和响应信号 INTR 可屏蔽中断请求输入端NMI 非屏蔽中断请求输入端INTA 中断响应输出端 88 总线保持信号 HOLD 总线保持请求信号输入端 当CPU以外的其他设备要求占用总线时 通过该引脚向CPU发出请求 HLDA 总线保持响应信号输出端 CPU对HOLD信号的响应信号 89 2 8088和8086CPU引线功能比较 数据总线宽度不同8088的外部总线宽度是8位 8086为16位 访问存储器和输入输出控制信号含义不同8088 IO M 0表示访问内存 8086 IO M 1表示访问内存 其他部分引线功能的区别 90 三 8088 8086的内部结构 91 1 组成 8088 8086内部由两部分组成 执行单元 EU 总线接口单元 BIU 92 2 执行单元 运算器8个通用寄存器1个标志寄存器EU部分控制电路 教材第43页图2 6图 93 执行单元 功能指令译码指令执行暂存中间运算结果保存运算结果特征 指令的执行 在标志寄存器FLAGS中 在ALU中完成 在通用寄存器中 94 3 总线接口单元 功能 从内存中取指令到指令预取队列指令预取队列是并行流水线工作的基础负责与内存或输入 输出接口之间的数据传送在执行转移程序时 BIU使指令预取队列复位 从指定的新地址取指令 并立即传给执行单元执行 95 结论 指令预取队列的存在使EU和BIU两个部分可同时进行工作 从而 提高了CPU的效率 降低了对存储器存取速度的要求 96 四 内部寄存器 97 内部寄存器的类型 含14个16位寄存器 按功能可分为三类8个通用寄存器4个段寄存器2个控制寄存器 深入理解 每个寄存器中数据的含义 98 1 通用寄存器 数据寄存器 AX BX CX DX 地址指针寄存器 SP BP 变址寄存器 SI DI 99 数据寄存器 8088 8086含4个16位数据寄存器 它们又可分为8个8位寄存器 即 AXBXCXDX AH AL CH CL BH BL DH DL 100 数据寄存器特有的习惯用法 AX 累加器 所有I O指令都通过AX与接口传送信息 中间运算结果也多放于AX中 BX 基址寄存器 在间接寻址中用于存放基地址 CX 计数寄存器 用于在循环或串操作指令中存放计数值 DX 数据寄存器 在间接寻址的I O指令中存放I O端口地址 在32位乘除法运算时 存放高16位数 101 地址指针寄存器 SP 堆栈指针寄存器 其内容为栈顶的偏移地址 BP 基址指针寄存器 常用于在访问内存时存放内存单元的偏移地址 102 BX与BP在应用上的区别 作为通用寄存器 二者均可用于存放数据 作为基址寄存器 用BX表示所寻找的数据在数据段 用BP则表示数据在堆栈段 103 变址寄存器 SI 源变址寄存器DI 目标变址寄存器变址寄存器在指令中常用于存放数据在内存中的地址 104 2 控制寄存器 IP指令指针寄存器 其内容为下一条要执行指令的偏移地址 FLAGS标志寄存器 存放运算结果的特征6个状态标志位 CF SF AF PF OF ZF 3个控制标志位 IF TF DF 105 状态标志位 1 CF CarryFlag 进位标志位 加 减 法运算时 若最高位有进 借 位则CF 1PF ParityFlag 奇偶标志位 运算结果的低8位中 1 的个数为偶数时PF lAF AuxiliaryCarryFlag 辅助进位标志位 加 减 操作中 若Bit3向Bit4有进位 借位 AF 1 106 状态标志位 2 ZF ZeroFlag 零标志位 当运算结果为零时ZF 1SF SignFlag 符号标志位 当运算结果的最高位为1时 SF lOF OverflowFlag 溢出标志位 当算术运算的结果超出了有符号数的可表达范围时 OF l 107 状态标志位例 给出以下运算结果及运算后各状态标志位的状态 10110110 1111010010110110 1111010010101010 1 CF OF AF PF SF ZF 1 1 1 0 1 0 108 控制标志位 TF TrapFlag 陷井标志位 也叫跟踪标志位 TF 1时 使CPU处于单步执行指令的工作方式 IF InterruptEnableFlag 中断允许标志位 IF 1使CPU可以响应可屏蔽中断请求 DF DirectionFlag 方向标志位 在数据串操作时确定操作的方向 109 3 段寄存器 作用用于存放相应逻辑段的段基地址8086 8088内存中逻辑段的数量最多为64K个8086 8088内存中逻辑段的类型代码段数据段附加段堆栈段 存放指令代码 存放操作的数据 存放操作的数据 存放暂时不用但需保存的数据 为什么叫逻辑段 每个段寄存器中存放的内容 110 段寄存器 CS代码段寄存器 存放代码段的段基地址 DS数据段寄存器 存放数据段的段基地址 ES附加段寄存器 存放数据段的段基地址 SS堆栈段寄存器 存放堆栈段的段基地址 段寄存器的值表明相应逻辑段在内存中的位置 111 五 存储器寻址 112 1 内存单元的编址 1 每个内存单元在整个内存空间中都具有惟一的地址每个内存单元的地址码都由两部分组成 段 基 地址16位段内地址16位 相对地址 偏移地址 物理地址 8088为16位结构 所以段地址和偏移地址均为16位 113 存储器的编址 2 段基地址 决定存储单元在内存中的位置相对地址 偏移地址 决定该存储单元相对段内第一个单元的距离逻辑段的起始地址称为段首每个逻辑段内的第一个单元 段首的偏移地址 0 114 存储器的编址 3 0000 段基地址 16位 段首地址 段首的物理地址 19 0 4 段首的偏移地址 0000H 段基地址 16位 31 0 15 115 存储器的编址 4 例 段基地址 6000H段首地址偏移地址 0009H物理地址 数据段 60009H 00H 12H 60000H 9 物理地址 内存单元在整个内存空间中的惟一地址 116 2 实地址模式下的存储器地址变换 内存物理地址由段基地址和偏移地址组成 物理地址 段基地址 16 偏移地址 0000 段首地址 19 0 4 偏移地址 物理地址 117 例 已知CS 1055H DS 250AHES 2EF0HSS 8FF0H画出各段在内存中的分布 118 例 CS 1055H段首地址 10550HDS 250AH段首地址 250A0HES 2EF0HSS 8FF0H 10550H 250A0H 2EF00H 8FF00H 代码段 数据段 附加段 堆栈段 119 例 设某操作数存放在数据段 DS 250AH 数据所在单元的偏移地址 0204H 则该操作数所在单元的物理地址为 250AH 16 0204H 252A4H 120 3 存储器的保护模式 保护模式 支持多任务的工作模式 提供了多任务保护机制 内存段的访问受到限制 不能再随意存取数据段 保护模式下的内存访问不再直接从段寄存器中获得段基地址 段基地址存放在内存的段描述符表中 由段描述符寄存器给出段描述符表的基地址 段寄存器中仅存放段选择符 121 保护模式下的存储器地址变换 122 4 堆栈及堆栈段的使用 堆栈 内存中一个特殊区域 用于存放暂时不用或需要保护的数据 常用于响应中断或子程序调用 123 例 已知SS 1000H SP 0100H则 堆栈段的段首地址 栈顶 偏移 地址 若该段最后一个单元地址为10200H 则 栈底偏移地址 10000H 0100H 0200H 124 5 内部寄存器小结 全部为16位寄存器只有4个数据寄存器分别可分为2个8位寄存器所有16位寄存器中 全部通用寄存器中 只有AX和CX中的内容一定为参加运算的数据 其余通用寄存器中的内容可能是数据 也可能是存放数据的地址 SP中的内容通常为堆栈段的栈顶地址 段寄存器中的内容为相应逻辑段的段地址 IP中的内容为下一条要取的指令的偏移地址 FLAGS中有9位标志位 125 6 实模式下的存储器寻址小结 每个内存单元在整个内存空间中都具有惟一地址每个内存单元的地址都由两部分组成 段基地址段内相对地址 偏移地址 段基地址决定了逻辑段在内存中所占的区域 改变段基地址 则改变了逻辑段的位置 一个逻辑段的默认长度为64KB 最小长度值为16B 逻辑段可以有多个 但只有4种类型 在一个程序模块中 每种类型的逻辑段最多只能有一个 126 六 总线时序 127 时序 时序 CPU各引脚信号在时间上的关系总线周期 CPU完成一次访问内存 或接口 操作所需要的时间 一个总线周期至少包括4个时钟周期 128 七 8088系统总线 129 主要内容 总线的基本概念和分类 总线的工作方式 常用系统总线标准 130 1 概述 总线 是一组导线和相关的控制 驱动电路的集合 是计算机系统各部件之间传输地址 数据和控制信息的通道 地址总线 AB 数据总线 DB 控制总线 CB 131 2 总线分类 CPU总线系统总线外部总线 片内总线片外总线 按相对CPU的位置分 按层次结构分 132 3 总线的系统结构 单总线结构 CPU M M I O I O I O 133 多总线结构 面向CPU的双总线结构面向主存的双总线结构 双总线结构多总线结构 134 面向CPU的双总线结构 存储器与I O接口间无直接通道 CPU M I O I O I O 135 面向存储器的双总线结构 在单总线结构基础上增加一条CPU到存储器的高速总线 CPU M I O I O I O 136 现代微机中的多总线结构 137 4 总线的基本功能 数据传送仲裁控制出错处理总线驱动 138 5 常用系统总线 ISA 8 16位 PCI 32 64位 AGP 加速图形端口 用于提高图形处理能力 PCI E PCIExpress 目前最新的系统总线标准 采用串行方式传输数据 依靠高频率来获得高性能 139 6 总线的主要性能指标 总线带宽 B S 单位时间内总线上可传送的数据量总线位宽 bit 能同时传送的数据位数总线的工作频率 MHz 总线带宽 位宽 8 工作频率 每个存取周期的时钟数 140 7 两种工作模式下的总线连接 8088可工作于两种模式下最小模式为单处理器模式 控制信号较少 一般可不必接总线控制器 最大模式为多处理器模式 控制信号较多 须通过总线控制器与总线相连 141 最小模式下的总线连接示意图 8088CPU 控制总线 数据总线 地址总线 地址锁存 数据收发 ALE 时钟发生器 142 最大模式下的总线连接示意图 8088CPU 数据总线 地址总线 地址锁存 数据收发 ALE 时钟发生器 总线控制器 控制总线 143 本章小结 微处理器的一般构成8088CPU的主要引线及其功能8088CPU的内部结构内部寄存器功能寄存器中数据的含义8位寄存器中存放的均为运算的数据存储器寻址逻辑地址 段基地址 偏移地址 物理地址堆栈栈顶地址 栈底地址 堆栈段基地址 144 谢谢大家 145 第3章指令系统 146 主要内容 指令系统的一般概念对操作数的寻址方式六大类指令的操作原理 操作码的含义指令对操作数的要求指令执行的结果 147 3 1概述 148 了解 指令及指令系统 指令的格式 指令中的操作数类型 指令字长与机器字长 指令的执行时间CISC和RISC指令系统 149 一 指令与指令系统 指令 控制计算机完成某种操作的命令指令系统 处理器所能识别的所有指令的集合指令的兼容性 同一系列机的指令都是兼容的 150 二 指令格式 指令中应包含的信息 运算数据的来源运算结果的去向执行的操作 151 指令格式 操作码 操作数 操作数 执行何种操作 目标操作数 源操作数 参加操作的数据或数据存放的地址 152 指令格式 零操作数指令 操作码单操作数指令 操作码操作数双操作数指令 操作码操作数 操作数多操作数指令 三操作数及以上 153 三 指令中的操作数 立即数寄存器存储器 表征参加操作的数据本身 表征数据存放的地址 154 立即数操作数 立即数本身是参加操作的数据 可以是8位或16位 只能作为源操作数 例 MOVAX 1234HMOVBL 22H立即数无法作为目标操作数立即数可以是无符号或带符号数 其数值应在可取值范围内 155 寄存器操作数 参加运算的数存放在指令给出的寄存器中 可以是16位或8位 例 MOVAX BXMOVDL CH 156 存储器操作数 参加运算的数存放在存储器的某一个或某两个单元中 表现形式 立即数或寄存器 中的内容是存放所寻找数据的单元的偏移地址 157 存储器操作数例 例 MOVAX 1200H MOVAL 1200H 22H 11H 1200H 偏移地址 AHAL 158 四 指令字长 指令字长 由操作码的长度 操作数地址长度 操作数个数决定 159 五 指令的执行速度 指令的字长影响指令的执行速度对不同的操作数 指令执行的时间不同 存储器 快 立即数 寄存器 160 六 CISC和RISC指令系统 CISC complexinstructionsetcomputer 指令的功能强 种类多 常用指令用硬件实现 指令系统复杂 难使用 RISC指令系统指令功能较弱 种类少 格式简单 多数指令在一个计算机周期内完成 对存储器的结构和存取速度要求较高 161 3 2寻址方式 162 寻址方式 寻找操作数所在地址的方法寻找转移地址的方法 本节 163 寻址方式 操作数可能的来源或存放处 由指令直接给出寄存器内存单元寻找操作数所在地址的方法可以有三种大类型指令直接给出的方式存放于寄存器中的寻址方式存放于存储器中的寻址方式 164 一 立即寻址 指令中的源操作数是立即数 即源操作数是参加操作的数据本身例 MOVAX 1200H 12H 00H AHAL MOV 代码段 立即寻址仅适合于源操作数 165 二 寄存器寻址 参加操作的操作数在CPU的通用寄存器中 例 MOVAX BX AX BX 166 三 直接寻址 指令中直接给出操作数的偏移地址默认在数据段例 MOVAX 1200H 22H 11H 1200H 偏移地址 数据段 AHAL 167 直接寻址 直接寻址方式下 操作数的段地址默认为数据段 但允许段重设 即由指令定义段 例 MOVAX ES 1200H 168 四 寄存器间接寻址 参与操作的操作数存放在内存中 其偏移地址为指令中的寄存器的内容 169 寄存器间接寻址例 例 MOVAX BX 设BX 1200H 22H 11H 1200H 偏移地址 AHAL 1122 数据段 代码段 MOV 170 寄存器间接寻址 由寄存器间接给出操作数的偏移地址 存放偏移地址的寄存器称为间址寄存器 它们是 BX BP SI DI操作数的段地址 数据处于哪个段 取决于选择哪一个间址寄存器 BX SI DIBP 默认在数据段 默认在堆栈段 171 寄存器间接寻址 寄存器间接寻址 基址寻址 间址寄存器为基址寄存器BX BP 变址寻址 间址寄存器为变址寄存器SI DI 172 五 寄存器相对寻址 操作数的偏移地址为寄存器的内容加上一个位移量例 MOVAX BX DATA 设 DS 2000H BX 0220H DATA 05H则 AX 20225H 173 六 基址 变址寻址 操作数的偏移地址为一个基址寄存器的内容 一个变址寄存器的内容 操作数的段地址由选择的基址寄存器决定基址寄存器为BX 默认在数据段基址寄存器为BP 默认在堆栈段基址变址寻址方式与相对寻址方式一样 主要用于一维数组操作 174 例 执行下列指令 MOVSI 1100HMOVBX SIMOVAX SI BX 22H 11H 2200H 偏移地址 AHAL 1122 数据段 175 七 基址 变址 相对寻址 操作数的偏移地址为 基址寄存器内容 变址寄存器内容 位移量操作数的段地址由选择的基址寄存器决定 基址变址相对寻址方式主要用于二维表格操作 176 例 执行以下程序段 MOVDI 1100HMOVBP DIMOVAL BP DI 5 22H 11H 2205H 偏移地址 AL 22 堆栈段 177 八 隐含寻址 指令中隐含了一个或两个操作数的地址 即操作数在默认的地址中 例 MULBL指令执行 AL BL AX 178 3 38086指令系统 179 掌握 指令码的含义指令对操作数的要求指令的对标志位的影响指令的功能 180 8086指令系统 从功能上包括六大类 数据传送算术运算逻辑运算和移位串操作程序控制处理器控制 181 数据传送指令 通用数据传送输入输出地址传送标志位操作 182 一 通用数据传送 一般数据传送指令堆栈操作指令交换指令查表转换指令字位扩展指令 特点 该类指令的执行对标志位不产生影响 183 1 一般数据传送指令 一般数据传送指令MOV格式 MOVdest src操作 src例 MOVAL BL dest 184 一般数据传送指令 注意点 两操作数字长必须相同 两操作数不允许同时为存储器操作数 两操作数不允许同时为段寄存器 在源操作数是立即数时 目标操作数不能是段寄存器 IP和CS不作为目标操作数 FLAGS一般也不作为操作数在指令中出现 185 一般数据传送指令例 判断下列指令的正确性 MOVAL BXMOVAX SI 05HMOV BX BP BXMOVDS 1000HMOVDX 09HMOV 1200 SI 186 一般数据传送指令应用例 将 的ASCII码2AH送入内存数据段1000H开始的100个单元中 题目分析 确定首地址确定数据长度写一次数据修改单元地址修改长度值判断写完否 未完继续写入 否则结束 1063H 100B 1000H 2AH 数据段 2AH 2AH 2AH 187 一般数据传送指令应用例 程序段 MOVDI 1000HMOVCX 64HMOVAL 2AHAGAIN MOV DI ALINCDI DI 1DECCX CX 1JNZAGAIN CX 0则继续HLT 188 上段程序在代码段中的存放形式 設CS 109EH IP 0100H 则各条指令在代码段中的存放地址如下 CS IP机器指令汇编指令109E 0100B80010MOVDI 1000H109E 0103 MOVCX 64H109E 0105 MOVAL 2AH109E 0107 MOV DI AL109E 0109INCDI109E 010ADECCX109E 010BJNZ0107H109E 010DHLT 189 数据段中的分布 送上2AH后数据段中相应存储单元的内容改变如下 DS 10002A2A2A2A2A2A2A2A 2A2A2A2A2A2A2A2ADS 10102A2A2A2A2A2A2A2A 2A2A2A2A2A2A2A2ADS 10202A2A2A2A2A2A2A2A 2A2A2A2A2A2A2A2ADS 10302A2A2A2A2A2A2A2A 2A2A2A2A2A2A2A2ADS 10402A2A2A2A2A2A2A2A 2A2A2A2A2A2A2A2ADS 10502A2A2A2A2A2A2A2A 2A2A2A2A2A2A2A2ADS 10602A2A2A2A000000000000000000000000 偏移地址 DI 190 2 堆栈操作指令 掌握 有关堆栈的概念栈顶 栈首 栈底堆栈指令的操作原理执行过程 执行结果 191 堆栈操作的原则 先进后出以字为单位 192 堆栈操作指令 压栈指令PUSH格式 PUSHOPRD出栈指令POP格式 POPOPRD 16位寄存器或存储器两单元 16位寄存器或存储器两单元 193 压栈指令PUSH 指令执行过程 SP 2 SP操作数高字节 SP 1操作数低字节 SP SP 堆栈段 SP 高8位 低8位 194 压栈指令的操作 设AX 1234H SP 1200H执行PUSHAX指令后堆栈区的状态 1200H 堆栈段 SP 2 11FEH 12H 34H 1200H 堆栈段 12H34H AX 入栈后 入栈前 195 出栈指令POP 指令执行过程 SPSP 1SP SP 2 操作数低字节 操作数高字节 SP 堆栈段 SP 高8位 低8位 196 出栈指令的操作 执行POPAX 12H 34H 11FEH 堆栈段 代码段 PUSH 1234 AX SP 2 1200H 出栈后 出栈前 197 堆栈操作指令说明 指令的操作数必须是16位的 操作数可以是寄存器或存储器两单元 但不能是立即数 不能从栈顶弹出一个字给CS PUSH和POP指令在程序中一般成对出现 PUSH指令的操作方向是从高地址向低地址 而POP指令的操作正好相反 198 堆栈操作指令例 MOVAX 1234HMOVSP AXMOVBX 5678HMOV BX AHMOV BX 1 BLPUSHAXPUSHBXPUSHWORDPTR BX POPWORDPTR BX POPAXPOPBX 如此 会使AX和BX的内容互换 199 3 交换指令 格式 XCHGREG MEM REG注 两操作数必须有一个是寄存器操作数不允许使用段寄存器 例 XCHGAX BXXCHG 2000 CL 200 4 查表指令 格式 XLAT说明 用BX的内容代表表格首地址 AL内容为表内位移量 BX AL得到要查找元素的偏移地址操作 将BX AL所指单元的内容送AL 201 查表指令例 数据段中存放有一张ASCII码转换表 设首地址为2000H 现欲查出表中第11个代码的ASCII码 30 31 32 39 41 42 45 46 2000H 0 2000H 11 0 1 2 9 A B E F 202 查表指令例 可用如下指令实现 MOVBX 2000H BX 表首地址MOVAL 0BH AL 序号XLAT 查表转换执行后 AL 42H还可用其他方法实现 如 MOVBX 2000HMOVAL BX 0BH 203 5 字位扩展指令 将符号数的符号位扩展到高位 指令为零操作数指令 采用隐含寻址 隐含的操作数为AX及AX DX无符号数的扩展规则为在高位补0 204 字节到字的扩展指令 格式 CBW操作 将AL内容扩展到AX规则 若最高位 1 则执行后AH FFH若最高位 0 则执行后AH 00H 205 字到双字的扩展指令 格式 CWD操作 将AX内容扩展到DXAX规则 若最高位 1 则执行后DX FFFFH若最高位 0 则执行后DX 0000H 206 字位扩展指令例 判断以下指令执行结果 MOVAL 44HCBWMOVAX 0AFDEHCWDMOVAL 86HCBW 207 二 输入输出指令 掌握 指令的格式及操作指令的两种寻址方式指令对操作数的要求 208 输入输出指令 专门面向I O端口操作的指令指令格式 输入指令 INacc PORT输出指令 OUTPORT acc 端口地址 209 指令寻址方式 根据端口地址码的长度 指令具有两种不同的端口地址表现形式 直接寻址端口地址为8位时 指令中直接给出8位端口地址 寻址256个端口 间接寻址端口地址为16位时 指令中的端口地址必须由DX指定 可寻址64K个端口 210 I O指令例 INAX 80HMOVDX 2400HINAL DXOUT35H AXOUTAX 35H 211 三 地址传送指令 取偏移地址指令LEA LDS指令 LES指令 212 取偏移地址指令LEA 操作 将变量的16位偏移地址取出送目标寄存器当程序中用符号地址表示内存偏移地址时 须使用该指令 格式 LEAREG MEM指令要求 源操作数必须是一个存储器操作数 目标操作数通常是间址寄存器 符号地址 213 LEA指令 比较下列指令 MOVSI DATA1LEASI DATA1MOVBX BX LEABX BX DATA1 符号地址 12H 34H 1100H 88H 77H BX 1100H 执行结果 SI 1234H 执行结果 SI DATA1 执行结果 BX 7788H 执行结果 BX 1100H 214 LEA指令在程序中的应用 将数据段中首地址为MEM1的50个字节的数据传送到同一逻辑段首地址为MEM2的区域存放 编写相应的程序段 215 LEA指令在程序中的应用 开始 取源地址 取目标地址 送数据块长度到CL 传送一个字节 修改地址指针 修改计数值 计数值 0 结束 N Y 216 LEA指令在程序中的应用 LEASI MEM1LEADI MEM2MOVCL 50NEXT MOVAL SI MOV DI ALINCSIINCDIDECCLJNZNEXTHLT 217 四 标志位操作指令 LAHFSAHFPUSHFPOPF 隐含操作数AH 隐含操作数FLAGS 218 1 LAHF SAHF LAHF操作 将FLAGS的低8位装入AH CF PF AF ZF CF AH FLAGS D15 D0 D7 D0 SAHF 执行与LAHF相反的操作 219 2 PUSHF POPF 针对FLAGS的堆栈操作指令将标志寄存器压栈或从堆栈弹出 220 算术运算类指令 221 算术运算类指令 加法运算指令减法运算指令乘法指令除法指令 算术运算指令的执行大多对状态标志位会产生影响 222 一 加法指令 普通加法指令ADD带进位位的加法指令ADC加1指令INC 加法指令对操作数的要求与MOV指令相同 223 1 ADD指令 格式 ADDOPRD1 OPRD2操作 OPRD1 OPRD2 ADD指令的执行对全部6个状态标志位都产生影响 OPRD1 224 ADD指令例 MOVAL 78HADDAL 99H指令执行后6个状态标志位的状态 225 ADD指令例 01111000 1001100100010001 1 标志位状态 CF SF AF ZF PF OF 1 0 1 0 1 0 226 2 ADC指令 指令格式 对操作数的要求 对标志位的影响与ADD指令完全一样指令的操作 OPRD1 OPRD2 CFOPRD1ADC指令多用于多字节数相加 使用前要先将CF清零 227 ADC指令应用例 求两个20B数的和 LEASI M1LEADI M2MOVCX 20CLC 使CF 0NEXT MOVAL SI ADC DI ALINCSIINCDIDECCXJNZNEXTHLT 228 3 INC指令 格式 INCOPRD操作 OPRD 1OPRD 常用于在程序中修改地址指针 不能是段寄存器或立即数 229 二 减法指令 普通减法指令SUB考虑借位的减法指令SBB减1指令DEC比较指令CMP求补指令NEG 减法指令对操作数的要求与对应的加法指令相同 230 1 SUB指令 格式 SUBOPRD1 OPRD2操作 OPRD1 OPRD2OPRD1对标志位的影响与ADD指令同 231 2 SBB指令 指令格式 对操作数的要求 对标志位的影响与SUB指令完全一样指令的操作 OPRD1 OPRD2 CFOPRD1 232 3 DEC指令 格式 DECOPRD操作 OPRD 1OPRD 指令对操作数的要求与INC相同指令常用于在程序中修改计数值 233 应用程序例 MOVBL 2NEXT1 MOVCX 0FFFFHNEXT2 DECCXJNZNEXT2 ZF 0转NEXT2DECBLJNZNEXT1 ZF 0转NEXT1HLT 暂停执行 234 4 NEG指令 格式 NEGOPRD操作 0 OPRDOPRD 8 16位寄存器或存储器操作数 用0减去操作数 相当于对该操作数求补码 235 5 CMP指令 格式 CMPOPRD1 OPRD2操作 OPRD1 OPRD2指令执行的结果不影响目标操作数 仅影响标志位 236 CMP指令 用途 用于比较两个数的大小 可作为条件转移指令转移的条件指令对操作数的要求及对标志位的影响与SUB指令相同 237 CMP指令 两个无符号数的比较 CMPAX BX若AX BX若AX BX CF 0 CF 1 238 CMP指令 两个带符号数的比较CMPAX BX两个数的大小由OF和SF共同决定OF和SF状态相同AX BXOF和SF状态不同AX BX 239 CMP指令例 LEABX MAXLEASI BUFMOVCL 20MOVAL SI NEXT INCSICMPAL SI JNCGOON CF 0转移XCHG SI AL GOON DECCLJNZNEXTMOV BX ALHLT 240 程序功能 MAX BUF XXH XXH XXH 在20个数中找最大的数 并将其存放在MAX单元中 241 三 乘法指令 无符号的乘法指令MUL 带符号的乘法指令IMUL 注意点 乘法指令采用隐含寻址 隐含的是存放被乘数的累加器AL或AX及存放结果的AX DX 242 1 无符号数乘法指令 格式 MULOPRD不能是立即数操作 OPRD为字节数OPRD为16位数 AL OPRD AX OPRD DXAX AX 243 无符号数乘法指令例 MULBYTEPTR BX BX XXH AL XXH AX 244 四 除法指令 无符号除法指令格式 DIVOPRD有符号除法指令格式 IDIVOPRD 245 除法指令的操作 若OPRD是字节数执行 AX OPRD结果 AL 商AH 余数若OPRD是双字节数执行 DXAX OPRD结果 AX 商DX 余数 指令要求被除数是除数的双倍字长 246 五 BCD码调整指令 将指令执行的二进制运算结果调整为压缩BCD码或扩展BCD码表示的十进制数 共6条 均为隐含寻址方式 隐含的操作数是AL或AL AH 不能单独使用 要紧跟在相应的算术运算指令之后 247 逻辑运算和移位指令 248 指令类型 逻辑运算与 或 非 异或移位操作非循环移位 循环移位 249 一 逻辑运算 逻辑运算指令对操作数的要求大多与MOV指令相同 非 运算指令要求操作数不能是立即数 除 非 运算指令外 其余指令的执行都会使标志位OF CF 0 250 1 与 指令 格式 ANDOPRD1 OPRD2操作 两操作数相 与 结果送目标地址 251 与 指令的应用 实现两操作数按位相与的运算ANDBL SI 使目标操作数的某些位不变 某些位清零ANDAL 0FH在操作数不变的情况下使CF和OF清零ANDAX AX 252 与 指令应用例 从地址为3F8H端口中读入一个字节数 如果该数bit1位为1 则可从38FH端口将DATA为首地址的一个字输出 否则就不能进行数据传送 编写相应的程序段 253 与 指令应用例 开始 取待输出数的偏移地址 读入状态字 测试bit1位状态 Bit1 1 取输入口地址 取输出口地址 输出一个字 N Y 254 与 指令应用例 LEASI DATAMOVDX 3F8HWATT INAL DXANDAL 02HJZWATT ZF 1转移MOVDX 38FHMOVAX S
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论