66 微型计算机原理与接口技术 ( 第二版 ) 2. 指令格式计算机中的汇编指令由操作码字段和操作数字段两部分组成 (1) 操作码字段 操作码表示计算机要执行的某种指令功能, 由它来规定指令的操作类型, 说明计算机要执行的具体操作, 例如传送 运算 移位 跳转等操作 同时还指出操作数的类型 操作数的

Size: px
Start display at page:

Download "66 微型计算机原理与接口技术 ( 第二版 ) 2. 指令格式计算机中的汇编指令由操作码字段和操作数字段两部分组成 (1) 操作码字段 操作码表示计算机要执行的某种指令功能, 由它来规定指令的操作类型, 说明计算机要执行的具体操作, 例如传送 运算 移位 跳转等操作 同时还指出操作数的类型 操作数的"

Transcription

1 第 3 章指令系统 本章学习目标 每种 CPU 芯片都配置有相应的指令系统, 供用户编程使用 本章从指令格式 寻址的概念着手, 具体讨论 8086 系统中采用的寻址方式, 分析 8086 指令系统中各类指令的功能 特点及应用, 并引申到 Pentium 微处理器新增指令和寻址方式的特点 通过本章的学习, 重点理解和掌握以下内容 : 指令格式及寻址的有关概念 8086 指令系统的寻址方式及其应用 8086 各类指令的表示 具体功能 特点及其应用 Pentium 微处理器新增指令和寻址方式介绍 3.1 指令格式及寻址 计算机在解决计算或处理信息等问题时, 需由人们事先把各类问题转换为计算机能识别和执行的操作命令 这种能被计算机执行的各种操作用命令形式写下来, 就成为计算机指令 通常一条指令对应一种基本操作, 如加减运算 数据传送和移位处理等 目前, 一般小型或微型计算机系统可以包括几十种或百余种指令 指令系统与指令格式 1. 指令系统的概念计算机中的指令以二进制编码形式存放在存储器中, 用二进制编码形式表示的指令称为机器指令,CPU 可直接识别机器指令 对于使用者来说, 机器指令的理解 记忆和阅读都比较困难, 也容易出错, 为此, 人们采用一些助记符 通常是指令功能的英文单词的缩写, 如数据传送指令用助记符 MOV (MOVE 的缩写 ) 表示, 这样表示的指令称为符号指令, 也称为汇编指令 汇编指令具有直观 易理解 好记忆的特点 在计算机中, 汇编指令与机器指令具有一一对应的关系 不同的 CPU 赋予的指令助记符不同, 而且各自的指令系统中包含的操作类型也有不同 每种 CPU 指令系统的指令都有几十条 上百条之多 8086 指令系统对 Intel 公司后继机型具有很好的向上兼容性, 用户编写的各种汇编语言源程序可以在其环境下运行 指令系统是计算机系统结构中非常重要的组成部分 从计算机组成层次结构来说, 计算机指令有机器指令 伪指令和宏指令之分 指令系统是计算机硬件和软件之间的桥梁, 是汇编语言程序设计的基础

2 66 微型计算机原理与接口技术 ( 第二版 ) 2. 指令格式计算机中的汇编指令由操作码字段和操作数字段两部分组成 (1) 操作码字段 操作码表示计算机要执行的某种指令功能, 由它来规定指令的操作类型, 说明计算机要执行的具体操作, 例如传送 运算 移位 跳转等操作 同时还指出操作数的类型 操作数的传送方向 寄存器编码或符号扩展等, 是指令中必不可少的组成部分 计算机执行指令时, 首先将操作码从指令队列取入执行部件中的控制单元, 经指令译码器识别后, 产生执行本指令操作所需的时序控制信号, 控制计算机完成规定的操作 (2) 操作数字段 操作数表示计算机在操作中所需要的数据, 或者所需数据的存放位置 ( 也称为地址码 ), 还可以是指向操作数的地址指针或其他有关操作数据的信息 操作数字段可以有一个 二个或三个, 分别称为单地址指令 双地址指令和三地址指令 单地址指令操作只需一个操作数, 如加 1 指令 INC AX 大多数运算型指令都需两个操作数, 如加法指令 ADD AX,BX 中,AX 为被加数,BX 为加数, 运算结果送到 AX 中, 因此,AX 称为目的操作数,BX 称为源操作数 对于三地址指令则是在二地址指令的基础上再指定存放运算结果的地址 计算机通过执行指令来处理各类信息, 为了指出信息的来源 操作结果的去向以及所执行的操作, 事先要规定好指令格式, 每条指令中一般要包含操作码和操作数等字段 8086CPU 的指令格式如图 3-1 所示, 指令的长度范围是 1~6 个字节 其中, 操作码字段为 1~2 个字节 (B 1 B 2 ), 操作数字段为 0~4 个字节 (B 3 ~B 6 ) 每条具体指令的长度将根据指令的操作功能和操作数的形式而定 B1 B2 B3 B4 B5 B6 OP code OP code low disp 或 data high disp 或 data low data high data 图 CPU 的指令格式 操作数类别与寻址计算机的指令中通常要指定操作数的位置, 即给出操作数的地址信息, 在执行时需要根据这个地址信息找到需要的操作数, 这种寻找操作数的过程称为寻址 寻址方式就是指寻找操作数或操作数地址的方式 不同机器的指令系统都规定了一些寻址方式以供编程时选择使用, 根据给定的寻址方式, 就可以方便地访问各类操作数 一般来说,8086CPU 指令中的操作数有以下三种 : (1) 立即操作数 操作数直接在指令中, 即跟随在指令操作码之后, 指令的操作数部分就是操作数本身 (2) 寄存器操作数 操作数存放在 CPU 的某个内部寄存器中, 这时指令的操作数部分是 CPU 内部寄存器的一个编码 (3) 存储器操作数 操作数存放在内存储器的数据区中, 这时指令的操作数部分包含此操作数所在的内存地址 为了简便和易于理解, 我们以 8086 为参考机型, 分析 7 种基本的数据寻址方式, 它们是 :

3 第 3 章指令系统 67 立即数寻址 寄存器寻址 直接寻址 寄存器间接寻址 寄存器相对寻址 基址变址寻址 相对基址变址寻址方式 此外, 还有一种在指令中无操作数的固定寻址方式, 即操作对象是固定的, 在指令助记符中已经隐含了操作对象 如 DAA 指令, 该指令中没有操作数, 采用固定寻址方式, 它对寄存器 AL 的内容进行操作, 结果存于 AL 寄存器中 寻址方式及其应用 8086CPU 提供了与操作数有关的立即数寻址 寄存器寻址 直接寻址 寄存器间接寻址 寄存器相对寻址 基址变址寻址和相对基址变址寻址等 7 种寻址方式 此外, 还规定了与输入 / 输出有关的端口地址寻址方式 立即数寻址立即数寻址方式是指操作数直接存放在给定的指令中, 紧跟在操作码之后 立即数总是和操作码一起被取入 CPU 的指令队列, 在指令执行时不需要访问存储器 立即数可以是 8 位或 16 位二进制数 如果是 16 位操作数, 则低位字节存放在低地址单元中, 高位字节存放在高地址单元中 这种方式通常用于给寄存器或存储单元赋初值, 该数可以是数值型常数, 也可以是字符型常数 在指令格式中, 它只能用于源操作数字段, 不能用于目的操作数字段 立即数可采用二进制数 十进制数以及十六进制数来表示 在非十进制的立即数末尾需要使用字母加以标识, 一般情况下十进制数不需要加标识 立即数寻址因操作数直接从指令中取得, 不执行总线周期, 所以该寻址方式的显著特点是执行速度快 例 3.1 分析以下立即数寻址方式的指令操作功能 MOV AL,25H ; 将十六进制数 25H 送 AL MOV AX,263AH ; 将十六进制数 263AH 送 AX MOV CL,50 ; 将十进制数 50 送 CL MOV AL, B ; 将二进制数 B 送 AL 寄存器寻址寄存器寻址方式是在指令中直接给出寄存器名, 寄存器中的内容即为所需操作数 在寄存器寻址方式下, 操作数存在于指令规定的 8 位 16 位寄存器中 寄存器可用来存放源操作数, 也可用来存放目的操作数 对于 8 位操作数, 寄存器可以是 AH AL BH BL CH CL DH DL 等 对于 16 位操作数, 寄存器可以是 AX BX CX DX SI DI SP BP 等 例 3.2 分析以下寄存器寻址方式的指令操作功能 MOV AL,BL ; 将 BL 中保存的源操作数传送到目的操作数 AL ADD AX,BX ; 两个 16 位寄存器操作数相加, 结果放在 AX INC CX ; 对寄存器 CX 中的内容进行加 1 处理寄存器寻址方式属于 CPU 内部的操作, 不需要访问总线周期, 因此指令的执行速度比较快

4 68 微型计算机原理与接口技术 ( 第二版 ) 存储器寻址立即数寻址和寄存器寻址两种寻址方式中, 操作数是从指令或寄存器中直接获得的, 而在实际的程序运行中, 大多数操作数需要从内存中获得 用存储器寻址的指令, 其操作数一般位于代码段之外的数据段 堆栈段或附加段的存储器中, 指令中给出的是存储器单元的地址或产生存储器单元地址的信息 执行这类指令时,CPU 先根据操作数字段提供的地址信息, 由执行部件计算出有效地址 EA, 再由总线接口部件根据公式计算出物理地址 PA, 执行总线周期访问存储器取得操作数, 最后再执行指令规定的基本操作 注意 : 采用存储器寻址的指令中只能有一个存储器操作数, 或者是源操作数, 或者是目的操作数, 且指令书写时将存储器操作数的地址放在方括号 [] 之中 常见有以下 5 种存储器寻址方式 1. 直接寻址方式直接寻址方式是一种针对内存的寻址方式 该寻址方式下, 指令中给出的地址码即为操作数的有效地址 EA, 它是一个 8 位或 16 位的位移量 在默认方式下, 操作数存放在数据段 DS 中, 如果要对除 DS 段之外的其他段如 CS ES SS 中的数据寻址, 应在指令中增加前缀, 指出段寄存器名, 这称为段跨越 直接寻址方式的指令中, 操作数的有效地址 EA 已经给出, 则操作数的物理地址为 : PA=(DS) 10H+EA 例 3.3 给定指令:MOV AX,[1002H], 当 (DS)=2000H 时, 操作数在内存中的存储形式如图 3-2 所示, 计算操作数的物理地址并分析指令的执行结果 图 3-2 例 3.3 直接寻址分析 解 : 该指令为直接寻址, 有效地址为 16 位, 指令的操作数要占两个字节, 其存储方式应该按 字 来存放 根据指令中给定的有效地址 EA=1002H 和物理地址的计算公式, 可以得到该指令对应的操作数物理地址为 : PA=(DS) 10H+EA =2000H 10H+1002H =21002H

5 第 3 章指令系统 69 由于指令中目的操作数是 16 位寄存器, 因此要取出 21002H 单元的字节数据 56H 送 AL 寄存器,21003H 单元的字节数据 78H 送 AH 寄存器 指令执行后寄存器的内容为 :(AX)=7856H 8086 指令系统中规定, 存储器直接寻址方式如果不加说明, 操作数一定在数据段 若操作数在规定段以外的其他段, 则必须在地址前加以说明 例如 :MOV AL,ES:[0002H] 该指令指明源操作数存放于附加段寄存器 ES 中, 则物理地址 PA=(ES) 10H+EA 2. 寄存器间接寻址方式寄存器间接寻址方式是指操作数的有效地址 EA 在指定的寄存器中, 这种寻址方式是在指令中给出寄存器, 寄存器中的内容为操作数的有效地址 16 位操作数寻址时,EA 放在基址寄存器 BX BP 或变址寄存器 SI DI 中, 所以该方式下操作数的物理地址计算公式有以下几个 : PA=(DS) 10H+(BX) PA=(DS) 10H+(DI) PA=(DS) 10H+(SI) PA=(SS) 10H+(BP) 前三个式子表示操作数在数据段, 最后一个式子表示操作数在堆栈段 例 3.4 已知指令为:MOV AX,[BX], 给定 (DS)=2000H,(BX)=1000H, 数据在内存中的存放位置如图 3-3 所示, 计算该指令中操作数的物理地址并分析指令的执行结果 DS 2000H 10H BX 1000H 内存单元 AH AX AL 21000H 21000H 21001H 3AH 6BH 59H 82H 图 3-3 例 3.4 寄存器间接寻址分析 解 : 该指令采用寄存器间接寻址方式, 指令中操作数的物理地址计算如下 : PA=(DS) 10H+(BX) =2000H 10H+1000H =21000H 由于目的操作数为 16 位寄存器, 根据图 3-2 所示, 指令执行时从内存 21000H 单元取出 字节数据 59H 送 AL, 从 21001H 单元取出字节数据 82H 送 AH, 最后组合成 1 个字数据 8259H 传送到寄存器 AX 中 即指令执行后的结果为 :(AX)=8259H

6 70 微型计算机原理与接口技术 ( 第二版 ) 在该寻址方式下, 当指令中指定的寄存器为 BX SI DI 时, 操作数存放在数据段中, 则 段地址是数据段寄存器 DS 中的内容 ; 若指令中指定的寄存器为 BP 时, 操作数存放在堆栈段 中, 段地址是堆栈段寄存器 SS 中的内容 ; 若指令中指定了跨越前缀, 则可以从指定的段中获 得操作数 执行直接寻址时, 操作数的有效地址 EA 在指令中, 它是一个常量 ; 执行间接寻址时, 操 作数的有效地址 EA 在寄存器中, 寄存器的内容由它之前的指令确定, 因而是一个变量 3. 寄存器相对寻址方式 这种寻址方式是在指令中给定一个基址寄存器或变址寄存器和一个 8 位或 16 位的相对偏 移量, 两者之和作为操作数的有效地址 当选择间址寄存器 BX SI DI 时, 指示的是数据段 中的数据, 选择 BP 作间址寄存器时, 指示的是堆栈段中的数据 有效地址为 :EA=(reg)+8 位或 16 位偏移量 ; 其中 reg 为给定寄存器 物理地址为 :PA=(DS) 10H+EA ( 使用 BX SI DI 间址寄存器 ) PA=(SS) 10H+EA ( 使用 BP 作为间址寄存器 ) 例 3.5 已知指令 MOV AX,[BX+0010H], 给定寄存器内容为 (BX)=1200H, (DS)=2000H, 存储单元内容为 (21210H)=34H,(21211H)=12H; 分析指令执行后的结果和计算 操作数的有效地址及物理地址 解 : 该题的功能是传送指定地址中的字数据到累加器中, 属于寄存器相对寻址方式 则 : 操作数的有效地址 EA=(BX)+0010H =1210H 操作数的物理地址 PA=(DS) 10H+EA =21210H 指令执行后, 从内存 21210H 单元取出字节数据 34H 送 AL 寄存器, 从内存 21211H 单元 中取出字节数据 12H 送寄存器 AH 最后的结果为 :(AX)=1234H 4. 基址变址寻址方式 在基址变址寻址方式中, 有效地址 EA 是基址寄存器加变址寄存器, 即两个寄存器的内容 之和为操作数的有效地址 在该寻址方式中, 当基址寄存器和变址寄存器的默认段寄存器不同 时, 一般由基址寄存器来决定默认用哪一个段寄存器作为段基址指针 若在指令中规定了段跨 越, 则可以用其他寄存器作为段基地址 基址变址寻址方式的物理地址计算公式为 : 物理地址 PA=(DS) 10H+(BX)+(SI) 物理地址 PA=(SS) 10H+(BP)+(DI) 例 3.6 给定指令 :MOV AX,[BX+SI], 寄存器保存的内容为 (DS)=2000H,(BX)=1000H, (SI)=0050H, 内存中的数据存放如图 3-4 所示, 计算操作数地址并分析指令的执行情况 解 : 该题为基址变址寻址方式, 将指定的内存单元内容传送到寄存器 AX 中 操作数的物理地址为 : PA=(DS) 10H+(BX)+(SI) =2000H 10H+1000H+0050H =21050H

7 第 3 章指令系统 71 图 3-4 例 3.6 基址变址寻址分析 指令的执行结果是将内存 21050H 单元的数据传送到寄存器 AL 中, 将内存 21051H 单元 的数据传送到寄存器 AH 中 指令执行完毕后 :(AX)=0A56H 在基址变址寻址方式中, 也可以使用段跨越前缀标识操作数所在的段 如 :MOV AX,ES:[BX+DI] 则物理地址计算为 :PA= (ES) 10H+(BX)+(DI) 在基址变址寻址方式中, 基址寄存器可取 BX 或 BP, 变址寄存器可取 SI 或 DI, 但指令 中不能同时出现两个基址寄存器或两个变址寄存器 若基址寄存器为 BX, 则段寄存器使用 DS; 若基址寄存器用 BP, 则段寄存器使用 SS 5. 相对基址变址寻址方式 这种寻址方式是在指令中给出一个基址寄存器 一个变址寄存器和 8 位或 16 位的偏移量, 三者之和作为操作数的有效地址 基址寄存器可取 BX 或 BP, 变址寄存器可取 SI 或 DI 若基址寄存器采用 BX, 则段寄存器使用 DS; 若基址寄存器采用 BP, 则段寄存器使用 SS 其物理地址为 :PA=(DS) 10H+(BX)+(SI) 或 (DI)+ 偏移量 PA=(SS) 10H+(BP)+(SI) 或 (DI)+ 偏移量 例 3.7 给定指令 :MOV AX,[1100H+BX+SI], 已知寄存器内容 (DS)=2000H,(BX)=0100H, (SI)=0002H, 存储单元内容 (21202H)=B5H,(21203H)=37H, 试分析指令执行后,AX 寄存器 中的内容 解 : 该指令为相对基址变址寻址方式, 采用基址寄存器 BX 和变址寄存器 SI, 给定的 16 位的偏移量为 1100H, 则操作数的物理地址计算如下 : PA=(DS) 10H+(BX)+(SI)+ 偏移量 =2000H 10H+0100H+0002H+1100H =21202H 指令的执行结果是将内存 21202H 单元的字节数据 B5H 传送到寄存器 AL 中, 将内存 21203H 单元的字节数据 37H 传送到寄存器 AH 中 最后的执行结果为 :(AX)=37B5H

8 72 微型计算机原理与接口技术 ( 第二版 ) I/O 端口寻址 由于 8086CPU 的 I/O 端口采用独立编址方式, 可有 64K 个字节端口或 32K 个字端口 指 令系统中设有专门的输入指令 IN 和输出指令 OUT 来进行访问 I/O 端口的寻址方式有直接端口寻址和寄存器间接端口寻址两种 1. 直接端口寻址 直接端口寻址是在指令中直接给出要访问的端口地址, 一般采用 2 位十六进制数表示, 可访问的端口数为 0~255 个 例如 : IN AL,30H ; 表示从 I/O 端口地址为 30H 的端口中取出字节数据送到 8 位寄存器 AL 中 IN AX,50H ; 表示从 I/O 端口地址为 50H 和 51H 的两个相邻端口中取出字数据送到 16 位寄存器 AX 中 OUT 指令和 IN 指令一样, 提供了字节或字两种使用方式, 由端口的宽度来决定, 当端 口宽度只有 8 位时, 只能用字节指令 直接端口地址也可以用符号地址表示, 例如 : OUT PORT,AL ; 通过符号地址 PORT 表示的端口进行字节输出 OUT PORT,AX ; 通过符号地址 PORT 表示的端口进行字输出 2. 寄存器间接端口寻址 当访问的端口地址数 256 时, 直接端口寻址不能满足要求, 要采用 I/O 端口的间接寻址 方式 它是把 I/O 端口的地址先送到寄存器 DX 中, 用 16 位的 DX 作为间接寻址寄存器 此 种方式可访问的端口数为 0~65535 个 例如 : MOV DX,283H OUT DX,AL 又如 : MOV DX,280H IN AX,DX ; 将端口地址 283H 送到 DX 寄存器 ; 将 AL 中的内容输出到 DX 所指定的端口中 ; 将端口地址 280H 送到 DX 寄存器中 ; 从 (DX) 和 (DX)+1 所指的两个端口输入一个字, 低地址端口输入到 AL, 高地址端口输入到 AH 指令系统 8086 指令系统是 80X86/Pentium 微处理器的基本指令集 指令的操作数可以是 8 位或 16 位, 偏移地址是 16 位 按功能可将指令分成数据传送 算术运算 逻辑运算与移位 串操作 控制转移和处理器控制等六大类指令 本节在介绍指令的基本情况基础上, 着重于对指令功能的理解和应用 在学习指令时, 要注意掌握各类指令的助记符 书写格式 操作功能 寻址方式 指令对标志位的影响等方面, 再通过实验操作来全面而准确地理解每条指令的功能和用法, 为编制汇编语言源程序打下牢固基础 数据传送类指令数据传送类指令的基本功能是把操作数或操作数的地址传送到指定的寄存器或存储单

9 第 3 章指令系统 73 元中 数据传送类指令共有 14 条, 根据传送的内容可分成以下 4 组 : (1) 通用数据传送指令 (2) 累加器专用传送指令 (3) 地址传送指令 (4) 标志寄存器传送指令 数据传送类指令是计算机中最基本 最常用 最重要的一类操作 可用于在寄存器与存储器 寄存器与寄存器 累加器与 I/O 端口之间传送数据 地址等信息, 也可以将立即数传送到寄存器或存储器中 为此, 指令中必须指明数据起始存放的源地址和数据传送的目标地址 源操作数可以是累加器 寄存器 存储器操作数和立即数 ; 而目的操作数可以是累加器 寄存器和存储器 1. 通用数据传送指令 (1) 传送指令 MOV 格式 :MOV dst,src MOV 指令的功能是把源操作数 src 传送至目的操作数 dst, 执行后源操作数内容不变, 目的操作数内容与源操作数内容相同 源操作数可以是通用寄存器 段寄存器 存储器以及立即数, 目标操作数可以是通用寄存器 段寄存器 (CS 除外 ) 或存储器 采用 MOV 指令时, 各类数据之间的传送关系如图 3-5 所示 图 3-5 数据之间的传送关系 使用 MOV 指令进行数据传送时要注意以下几点 : 段寄存器 CS 及立即数不能作为目标操作数 两个存储单元之间不允许直接传送数据 立即数不能直接传送到段寄存器 两个段寄存器之间不能直接传送数据 传送数据的类型必须匹配 MOV 指令不影响标志位

10 74 微型计算机原理与接口技术 ( 第二版 ) 例 3.8 给定如下 MOV 指令的形式, 分析其操作功能 MOV AL,34H ;8 位立即数 34H 送 AL 寄存器 MOV BL,'A' ; 字符 'A' 的 ASCII 码送 BL 寄存器 MOV SI,COUNT ;COUNT 为一个符号常数, 其值送 SI 寄存器 MOV DX,2175H ;16 位立即数 2175H 送 DX 寄存器 MOV AX,BX ;16 位寄存器 BX 内容传送到累加器 AX MOV DH,BH ;8 位寄存器 BH 内容传送到 DH MOV AX,[2365H] ; 将指定存储单元 2365H 中的数据传送到 AX 寄存器中 MOV [3200H],SI ; 将 SI 寄存器中的内容传送到指定的存储单元 3200H 中 MOV ARRAY,21H ; 将立即数 21H 送指定符号地址的内存单元 ARRAY MOV DS,AX ; 将累加器 AX 中的内容传送到数据段寄存器 DS 中 MOV [SI],DS ; 将 DS 中的内容传送到 SI 所指示的字单元中 MOV ES,[BX] ; 将 BX 所指示的存储单元中的内容传送到 ES 中 (2) 堆栈操作指令 PUSH/POP 进栈指令 :PUSH opr ;SP SP-2, 将源操作数 opr 压入堆栈 出栈指令 :POP opr ; 栈顶弹出字数据到目标操作数 opr,sp SP+2 前面已经讨论过, 堆栈是存储器中的一个特殊区域, 主要用于存入和取出数据, 堆栈是 以 先进后出 的工作方式进行数据操作的 在 8086 堆栈组织中, 堆栈从高地址向低地址方 向生长, 它只有一个出入口, 堆栈指针寄存器 SP 始终指向堆栈的栈顶单元 堆栈操作时栈顶的位置将发生变化, 即堆栈指针寄存器 SP 的内容会被修改, 并始终指向 的是栈顶位置 操作时按照字数据进行, 即每次入栈或出栈都按 2 个字节单元来处理, 堆栈的 示意如图 3-6 所示 执行进栈指令 PUSH 时, 使 SP SP-2, 然后将 16 位源操作数 压入堆栈, 先高位后低位 源操作数可以是通用寄存器 段寄存 器和存储器 操作过程是 : 首先 SP 内容减 1, 将操作数的高位字节送入当 前 SP 所指示的单元中 ; 然后 SP 中的内容再减 1, 将操作数的低 位字节送入当前 SP 所指示的单元中 出栈指令 POP 的执行过程与 PUSH 相反, 它从当前栈顶弹出 16 位操作数到目标操作数, 同时 SP SP+2, 使 SP 指向新的栈顶 目标操作数可以是通用寄存器 段寄存器 (CS 除外 ) 或存储器 操作过程是 : 首先将 SP 所指示的栈顶单元内容送入操作数低 位字节单元,SP 的内容加 1, 然后将 SP 所指栈顶单元内容送入操 作数的高位字节单元,SP 的内容再加 1 例 3.9 给定堆栈操作指令和环境如下, 分析其操作功能 1) 已知 (SP)=00F8H,(SS)=2000H,(AX)=3485H, 执行指令 PUSH AX 2) 已知 (SS)=2000H,(SP)=0100H,(BX)=1234H,(20100H)=53H,(20101H)=2AH, 执行 指令 POP BX 解 :1) 执行进栈指令 PUSH AX 堆栈指针变化为 (SP) (SP)-2 即 (SP)=00F8H-2=00F6H SS 堆栈段 SP 21H 栈顶 图 H 83H 0AH 栈底 堆栈示意图

11 第 3 章指令系统 75 目的操作数的物理地址为 :PA=(SS) 10H+(SP) =2000H 10H+00F6H =200F6H 该指令将累加器 AX 中的字数据 3485H 压入堆栈区域 200F6H 单元开始的字存储区, 执行 后,(200F6H)=85H,(200F7H)=34H 2) 执行出栈指令 POP BX 堆栈区数据的物理地址为 :PA=(SS) 10H+(SP) =2000H 10H+0100H =20100H 该指令将堆栈区域 20100H 单元开始的字存储区数据 2A53H 弹出到寄存器 BX 中, 即 (BX)=2A53H 此时堆栈指针变化为 SP SP+2, 即 (SP)=0100H+2=0102H 堆栈在子程序调用或中断处理时常用于保护当前的断点地址和现场数据, 以便子程序执 行完毕后正确返回到主程序 堆栈操作时,PUSH 和 POP 指令不影响标志位 (3) 交换指令 XCHG XCHG 指令用来将源操作数和目的操作数的内容进行交换 它可以实现字节数据交换, 也可以实现字数据交换 该指令的操作数必须有一个是在寄存器中, 即可以在两个通用寄存器之间或寄存器与存 储器之间交换数据, 但不能在两个存储器之间交换数据 指令执行结果不影响标志位 例如 : 若给定 (AX)=1234H,(BX)=5678H, 执行指令 :XCHG AX,BX, 该指令将寄存器 AX 的内容与寄存器 BX 的内容互相交换位置, 则指令执行后 :(AX)=5678H,(BX)=1234H 2. 累加器专用传送指令 8086 指令系统中将累加器 AX 作为数据传输的核心, 系统的输入 / 输出指令 IN/OUT 和换 码指令 XLAT 就是专门通过累加器来执行的, 称之为累加器专用传送指令 下面分析相关指令的功能 输入指令 :IN Acc,src ;Acc 为 8 位或 16 位累加器 输出指令 :OUT dst,acc 使用 I/O 指令时需注意 : (1)IN 和 OUT 指令只能用累加器进行输入和输出数据, 不能采用其他寄存器 (2) 直接端口寻址的 I/O 指令端口范围为 0~FFH, 在一些规模较小的微机系统已经够用了 (3) 在一些功能较强的微机系统会使用大于 FFH 的端口数, 这时需通过 DX 采用寄存器 间接端口寻址方式 例如, 将 12 位 A/D 转换器所得数字量输入 A/D 转换器使用一个字端口, 地址设为 2F0H 输入数据程序段为 : MOV DX,02F0H IN AX,DX 换码指令 :XLAT XLAT 指令的功能是根据累加器 AL 中的一个值去查内存表格, 将查到某一个值送回 AL 中 使用 XLAT 指令之前, 要先将表格的首地址送入 BX 寄存器, 将待查的值放入 AL 中, 用

12 76 微型计算机原理与接口技术 ( 第二版 ) 它来表示表中某一项与表首址的距离 执行时,BX 和 AL 的内容相加得到一个地址, 再将该 地址单元的值取到 AL 中, 即为查表转换的结果 换码指令通常用于无规律代码之间的转换, 又称为查表转换指令 例 3.10 给定累加器专用传送指令如下, 分析其操作功能 IN AL,20H ; 将 20H 端口中的数据读入到 AL 中 IN AX,25H ; 将 25H 端口数据读入到 AL 中, 将 26H 端口数据读入到 AH 中 OUT DX,AL ;AL 中的内容输出到 DX 所指示的字节端口 XLAT ; 执行操作 AL (BX+AL) 存器中 3. 地址传送指令 8086 的地址传送指令用于控制寻址机构, 它可将存储器操作数的地址传送到 16 位目标寄 这类指令有以下 3 种形式 (1) 有效地址送寄存器指令 :LEA reg,src LEA 指令功能是将存储器操作数 src 的有效地址传送到 16 位的通用寄存器 reg 例如 :LEA BX,[SI+BP] 该指令的功能是将 (SI)+(BP) 的值送到 BX 中 (2) 地址指针送寄存器和 DS 指令 :LDS reg,src 该指令完成一个 32 位的地址指针传送, 地址指针包括段地址和偏移地址两部分 执行的 操作是将存储器操作数 src 指定的 4 个字节地址指针传送到两个目标寄存器, 其中, 地址指针 的前两个字节单元的内容送入指令所指定的 16 位通用寄存器中,src+2 所指示的两个字节单 元的内容送入寄存器 DS 中 例 3.11 若给定 (SI)=0010H,(DS)=2000H,(BX)=3572H,(20130H)=80H,(20131H)=12H, (20132H)=42H,(20133H)=21H 执行指令 :LDS BX,0120H[SI], 分析其操作功能 解 : 该指令执行后, 由指令的寻址方式计算出操作数的起始物理地址为 : PA=(DS) 10H+(SI)+0120H =2000H 10H+0010H+0120H =20130H 指令从 20130H 单元开始取出 4 个字节的内容, 分别送入规定的寄存器中 执行结果为 :(BX)=1280H,(DS)=2142H (3) 地址指针送寄存器和 ES 指令 :LES reg,src LES 指令执行的操作与 LDS 指令相似, 不同之处是以 ES 代替 DS 例 3.12 若给定 (DS)=2000H,(BX)=0010H,(ES)=4000H,(20010H)=25H,(20011H)=31H, (20012H)=00H,(20013H)=25H 执行指令 :LES DI,[BX], 分析其操作功能 解 : 该指令执行后, 由指令的寻址方式计算出操作数的起始物理地址为 : PA=(DS) 10H+(BX) =2000H 10H+0010H =20010H 指令从 20010H 单元开始取出 4 个字节的内容, 分别送入规定的寄存器中

13 第 3 章指令系统 77 则指令执行后 :(DI)=3125H,(ES)=2500H 4. 标志寄存器传送指令 8086 可通过这类指令读出当前标志寄存器中各标志位的内容, 也可以重新设置各标志位的值 标志寄存器的传送指令共有 4 条, 均为单字节指令, 指令的操作数以隐含形式出现, 隐含为 AH 寄存器 (1) 取标志指令 LAHF 该指令将 16 位标志寄存器 FLAG 中的低 8 位取到 AH 中, 即将 SF ZF AF PF CF 这 5 个状态标志位分别取出传送到 AH 的对应位, 如图 3-7 所示 AH OF DF IF TF SF ZF AF PF CF 图 3-7 LAHF 指令执行过程示意图 (2) 置标志位指令 SAHF SAHF 指令的操作与 LAHF 正好相反, 它是将 AH 寄存器中的内容分别传送到标志寄存器的低 8 位 FLAG 中的 SF ZF AF PF 和 CF 将被修改成 AH 寄存器所对应位的值, 但 OF DF IF 和 TF 等 4 个标志位不受影响 (3) 标志寄存器入栈指令 PUSHF PUSHF 指令先将堆栈指针 SP 减 2, 然后将 16 位 FLAG 中的内容压入堆栈中 指令执行后, 标志寄存器的内容不变 (4) 标志寄存器出栈指令 POPF POPF 指令的操作与 PUSHF 指令正好相反, 它将堆栈顶部的一个字弹出到标志寄存器 FLAG, 然后修改堆栈指针 SP 加 2 该指令执行后, 将改变标志寄存器的内容 置标志位指令 SAHF 和标志寄存器出栈指令 POPF 指令对状态标志位有影响, 其他两条指令执行后对标志位没有影响 PUSHF 和 POPF 指令一般用在子程序和中断服务程序中, 可保护或恢复主程序的标志位的值 为方便使用, 我们将数据传送类指令的格式和功能归纳如表 3-1 所示 表中 dst 表示目的操作数,src 表示源操作数 表 3-1 数据传送类指令的格式及功能指令类型指令格式指令功能 通用数据传送 MOV dst,src PUSH src POP dst XCHG dst,src 字节或字传送字压入堆栈字弹出堆栈字节或字交换

14 78 微型计算机原理与接口技术 ( 第二版 ) 续表 指令类型指令格式指令功能 累加器专用传送 地址传送 标志寄存器传送 IN Acc,src OUT dst,acc XLAT LEA dst,src LDS dst,src LES dst,src LAHF SAHF PUSHF POPF 从指定端口将数据送累加器将累加器中的数据送指定端口换码指令装入有效地址装入 DS 寄存器装入 ES 寄存器将 FLAG 低字节装入 AH 寄存器将 AH 内容装入 FLAG 低字节将 FLAG 内容压栈从堆栈中弹出一个字给 FLAG 算术运算类指令 8086 的算术运算类指令包括加 减 乘 除 4 种基本运算指令, 以及为进行 BCD 码十进制数运算而设置的各种较正指令 8086 的基本算术运算指令中, 除加 1 和减 1 指令外, 其余均为双操作数指令, 两个操作数中除了源操作数可为立即数外, 必须有一个操作数在寄存器中, 而单操作数指令则不允许采用立即数方式 算术运算指令涉及的操作数从数据形式来分有 8 位和 16 位的操作数两种, 这些操作数从类型来分又有无符号数和带符号数两种类型数据 在进行加减运算时可采取同一套指令, 而乘除运算则各自有不同的指令 加减法运算在执行过程中会产生溢出, 无符号数运算时, 如果加法运算最高位向前产生进位或减法运算最高位向前有借位, 则表示出现溢出, 采用标志位 CF=1 来表示 ; 带符号数采用补码运算时, 符号位也参与运算, 出现溢出则表示运算结果发生了错误, 采用标志位 OF=1 来表示 算术运算指令除加 1 指令 INC 不影响 CF 标志外, 其余指令对 CF OF ZF SF PF AF 等 6 个标志位均可产生影响, 其规则如下 : 无符号数运算产生溢出时,CF=1 带符号数运算产生溢出时,OF=1 当运算结果为 0 时,ZF=1 当运算结果为负数时,SF=1 当运算结果中有偶数个 1 时,PF=1 当操作数为 BCD 码, 低 4 位出现进位 1 时,AF=1 下面分别介绍 6 种基本算术运算指令的功能和应用特点 1. 加法指令 (1) 不带进位加法指令 :ADD dst,src 指令功能为 :(dst) (dst)+(src)

15 第 3 章指令系统 79 使用时要注意两个操作数类型保持一致, 而且不能对两个存储器操作数直接相加, 段寄 存器不能参加运算 ADD 指令可采用的格式如下 : ADD AL,BL ADD AL,[0123H] ADD [SI],AX ADD BYTE PTR[SI],24H 运算中 (2) 带进位的加法指令 :ADC dst,src 指令功能为 :(dst) (dst)+(src)+cf ; 两个寄存器的字节数据相加 ; 内存单元与寄存器的字节数据相加 ; 寄存器与内存单元的字数据相加 ; 立即数与内存单元的字节数据相加 与 ADD 指令不同的是要加进位标志 CF 的值, ADC 指令主要用于多字节或多字的加法 (3) 加 1 指令 :INC opr 指令功能为 :(opr) (opr)+1 opr 只能为通用寄存器或存储器, 不能对立即数或段寄存器加 1 该指令也叫增量指令, 通常在循环程序中用作循环计数器 INC 指令的用法如下 : INC AL ; 对 8 位寄存器 AL 中的内容加 1 INC CX ; 对 16 位寄存器 CX 中的内容加 1 INC BYTE PTR [SI][BX] ; 对指定内存的字节单元的内容加 1 2. 减法指令 (1) 不带借位的减法指令 :SUB dst,src 指令功能为 :(dst) (dst)-(src) 例如 : SUB AX,BX (2) 带借位的减法指令 :SBB dst,src 指令功能为 :(dst) (dst)-(src)-cf ; 将 AX 内容减去 BX 内容, 结果送到 AX 中 与 SUB 不同之处在于还要减去借位 CF 的值,SBB 指令通常用于多精度数的减法运算 例如 : SBB DX,CX (3) 减 1 指令 :DEC opr 指令功能为 :(opr) (opr)-1 ; 执行 (DX)-(CX)-CF, 结果送到 DX 中 此指令通常用于循环程序中修改指针和循环次数 DEC 指令使用形式如下 : DEC CX DEC BYTE PTR[SI] (4) 求补指令 :NEG opr ; 将 CX 中的内容减 1 后结果再送回 CX ; 将 SI 所指示字节单元中的内容减 1 后结果送回该单元 该指令将 opr 中的内容取 2 的补码, 相当于将 opr 中的内容按位取反后末位加 1 (5) 比较指令 :CMP opr1,opr2 指令功能为 :(opr1)-(opr2) 该指令与 SUB 指令一样进行减法操作, 但不保存结果, 指令执行后两个操作数的内容不 会改变 CMP 指令通常根据操作的结果来设置标志位, 按比较结果使程序产生条件转移

16 80 微型计算机原理与接口技术 ( 第二版 ) 3. 乘法运算指令 乘法指令包括无符号数和带符号数相乘的指令, 指令中只给出乘数, 被乘数隐含给出 两个 8 位数相乘时被乘数放入 AL 中,16 位数的乘积存放到 AX 中 ; 两个 16 位数相乘时被乘 数先放入 AX 寄存器中,32 位数的乘积放到 DX 和 AX 两个寄存器中, 规定 DX 中存放高 16 位,AX 中存放低 16 位 (1) 无符号数乘法指令 :MUL src 若 src 为字节数据, 执行 AX (AL) (src); 若 src 为字数据, 执行 DX AX (AX) (src) src 可采用寄存器和存储器, 但不能使用立即数和段寄存器 指令使用形式如下 : MUL AL MUL BX (2) 带符号数乘法指令 :IMUL src ; 完成 (AL) (AL) 操作, 结果送 AX ; 完成 (AX) (BX) 操作, 结果分别送 DX 和 AX 该指令的执行功能与 MUL 相同, 此处不再重复 4. 除法运算指令 除法指令可用来实现两个无符号数或带符号数的除法运算, 包括字和字节两种操作, 该 指令隐含使用 AX 和 DX 作为一个操作数, 指令中给出的源操作数为除数 AH 中 (1) 无符号数除法指令 :DIV src DIV 指令的被除数 除数 商和余数全部为无符号数 (2) 带符号数除法指令 :IDIV src IDIV 指令的被除数 除数 商和余数均为带符号数, 且余数的符号位同被除数 两条指令执行的操作功能如下 : 当除数 src 为字节数据时, 用 AX 除以 src, 得到的 8 位商保存在 AL 中,8 位余数保存在 当除数 src 为字数据时, 用 DX AX 除以 src, 得到的 16 位商保存在 AX 中,16 位余数 保存在 DX 中 这里需要注意的是,DIV 指令在除数为 0, 或者字节操作时其商超过 8 位, 字操作时其商 超过 16 位, 会产生除法溢出 ; 同样,IDIV 指令在除数为 0, 或者字节操作时其商超过 -128~ +127 范围, 字操作时其商超过 ~ 范围, 也会产生除法溢出 5. 符号扩展指令 符号扩展指令是指用一个操作数的符号位形成另一个操作数, 后一个操作数的各位是全 0 ( 正数 ) 或全 1( 负数 ), 符号扩展指令虽然使数据位数加长, 但数据的大小并没有改变 该 指令的执行不影响标志位 (1) 字节转换为字指令 CBW 该指令的功能是将 AL 中的符号位 D 7 扩展到 AH 中 如果 AL 中的最高位 D 7 =0, 则转换后 (AH)=00H; 如果 AL 中的 D 7 =1, 则转换后 (AH)=FFH, AL 的值不变 (2) 字转换为双字指令 CWD 该指令的功能是将 AX 中的符号位扩展到 DX 中

17 第 3 章指令系统 81 如果 AX 中的最高位 D 15 =0, 则转换后 (DX)=0000H, 如果 AX 中的 D 15 =1, 则转换后 (DX)=FFFFH 符号扩展指令常用来获得带符号数的倍长数据, 而无符号数通常采用直接使高 8 位或高 16 位清 0 的方法来获得倍长数据 6. 十进制调整指令 十进制数在计算机中是采用二进制数来表示的, 这就是 BCD 码, 要对十进制的 BCD 码 进行算术运算, 必须对得到的结果进行调整, 否则结果无意义 8086 指令系统提供了以下两类十进制调整指令 (1) 组合 BCD 码加法 减法调整指令 DAA ; 组合 BCD 码加法调整指令, 将 AL 中的和调整为组合 BCD 码 DAS ; 组合 BCD 码减法调整指令, 将 AL 中的差调整为组合 BCD 码 DAA 和 DAS 分别用于加法指令 (ADD ADC) 或减法指令 (SUB SBB) 之后, 执行 时先对 AL 中保存的结果进行测试, 若结果中的低 4 位 >09H, 或者标志位 AF=1, 则进行 AL (AL)±06H 修正 ; 如果 AL 寄存器中所保存结果的高 4 位 >09H, 或者标志位 CF=1, 则进 行 AL (AL)±60H 修正 该指令会影响 OF 以外的其他状态标志位 例 3.13 给定寄存器的保存内容为 :(AL)=28H,(BL)=69H 执行指令 : ADD AL,BL DAA 分析指令的操作结果 解 : 执行 ADD 指令后,(AL)=91H,AF=1 可见,AL 中保存的结果不符合组合 BCD 码 要求, 出现了误差 执行 DAA 调整指令时, 由于 AF=1, 要作 AL (AL)+06H 的调整操作, 调整后 AL 中的 内容为 97H, 符合要求 ; 而 AL 的高 4 位 09H, 则不必进行调整 例 3.14 给定寄存器的保存内容为 :(AL)=97H,(AH)=39H 执行指令 : SUB AL,AH DAS 分析指令的操作结果 解 : 执行 SUB 指令后,(AL)=5EH,AF=1, 可见,AL 中的内容不是组合 BCD 码格式, 需要对其进行调整 执行 DAS 指令, 完成 AL (AL)-06H 后,(AL)=58H,CF=0 且 AL 中高 4 位 09H, 不必 进行调整 (2) 非组合 BCD 加法 减法调整指令 AAA ; 非组合 BCD 加法调整指令, 将 AL 中的和调整为非组合 BCD 码 AAS ; 非组合 BCD 减法调整指令, 将 AL 中的差调整为非组合 BCD 码 AAA 和 AAS 分别用于加法指令 (ADD ADC) 或减法指令 (SUB SBB) 之后, 执行 时对 AL 进行测试, 若 AL 中的低 4 位 >09H, 或 AF=1, 则进行 AL (AL)±06H 修正 ;AL 的高 4 位为 0, 同时 AH (AH)±1;CF=AF=1 调整后的结果放在 AX 中 例 3.15 给定寄存器的保存内容为 :(AX)=0505H,(BL)=09H

18 82 微型计算机原理与接口技术 ( 第二版 ) 执行指令 : ADD AL,BL AAA 分析指令的执行结果 解 : 执行 ADD 指令后,(AL)=0EH, 可见 AL 的低 4 位 >09H, 该结果不是非组合 BCD 码, 要进行调整 执行 AAA 指令, 进行 AL (AL)+06H 的修正, 最终结果为 (AX)=0104H, 是 14 的非组合 BCD 码表示 各类算术运算指令的格式 功能及对标志位的影响归纳如表 3-2 所示 表 3-2 算术运算指令格式 功能及对标志位的影响 类别 指令书写格式 ( 助记符 ) 指令名称 状态标志 OF SF ZF AF PF CF ADD dst,src 加法 ( 字节 / 字 ) 加法 ADC dst,src 带进位加法 ( 字节 / 字 ) INC dst 加 1( 字节 / 字 ) SUB dst,src 减法 ( 字节 / 字 ) SBB dst,src 带借位减法 ( 字节 / 字 ) 减法 DEC dst 减 1 NEC dst 求补 CMP dst,src 比较 乘法 除法 MUL src 不带符号乘法 ( 字节 / 字 ) IMUL src 带符号乘法 ( 字节 / 字 ) DIV src 不带符号除法 ( 字节 / 字 ) IDIV src 带符号除法 ( 字节 / 字 ) 符号 CBW 字节扩展 扩展 CWD 字扩展 AAA 非组合 BCD 码加法调整 十进制调整 DAA 组合 BCD 码加法调整 AAS 非组合 BCD 码减法调整 DAS 组合 BCD 码减法调整 注 : 表中 表示运算结果影响标志位 ; 表示运算结果不影响标志位 ; 表示标志位为任意值 逻辑运算与移位类指令 1. 逻辑运算指令有以下 5 条逻辑运算指令, 它们可对 8 位或 16 位操作数按位进行逻辑运算 (1) 逻辑与指令 :AND dst,src 该指令将源操作数 src 和目的操作数 dst 按位进行逻辑 与 运算, 运算结果送回 dst 指

19 第 3 章指令系统 83 令执行结果会影响 CF OF SF PF 和 ZF 标志位, 使 CF=0,OF=0, 其他标志位按结果进行 设置 利用 AND 指令可将操作数中的某些位保持不变, 而使其他一些特定位清 0, 称为屏蔽 例如 : AND AL,0FH 如果给定 (AL)=52H, 则指令执行后,(AL)=02H, 屏蔽了 AL 中的高 4 位 (2) 逻辑或指令 :OR dst,src 实现 src 和 dst 按位进行逻辑 或 运算, 运算结果送回 dst 指令执行结果会影响状态标 志位, 与 AND 指令相同 利用 OR 指令可将操作数中的某些位保持不变, 而使其他一些位置 1 例如 : OR AL,F0H 如果给定 (AL)=43H, 则指令执行后,(AL)=F3H, 达到将字节的高 4 位置 1 的目的 (3) 逻辑异或指令 :XOR dst,src 实现 src 和 dst 按位进行逻辑 异或 运算, 将运算结果送回 dst 指令执行结果会影响标 志位, 与 AND 指令相同 例如 : XOR AX,AX ; 该指令执行后将累加器清 0, 同时 CF=0 (4) 逻辑非指令 :NOT dst 为单操作数指令, 对给定的操作数 dst 逐位取反, 结果送回 dst 该指令执行后不影响任 何标志位 例如 : NOT AL 若给定 (AL)= B, 则指令执行后,(AL)= B (5) 测试指令 :TEST dst,src 两个操作数执行 与 操作, 结果不回送 dst, 只影响标志位 该指令常用来检测操作数 的某一位或某几位是 0 还是 1 例如 : TEST AL,80H ; 检测 AL 中的数据是正数还是负数, 当 D 7 =0 时为正数,ZF=1; 否则为负数, ZF=0 2. 移位指令 移位操作类指令可以对字节或字数据中的各位进行算术移位 逻辑移位或循环移位 移位指令的格式为 : SHL/SAL/SHR/SAR 循环移位指令的格式为 :ROL/ ROR/ RCL/ RCR dst,1/ CL dst,1/ CL 上述指令分别对操作数进行逻辑左移 SHL 算术左移 SAL 逻辑右移 SHR 算术右移 SAR 循环左移 ROL 循环右移 ROR 带进位的循环左移 RCL 带进位的循环右移 RCR 等操作 操作数可以是字节或字操作 图 3-8 所示为各种移位操作的功能示意 指令中操作数可由任何寻址方式获得, 位移次数 可以取 1, 也可以将位移的次数送到 CL 寄存器中

20 84 微型计算机原理与接口技术 ( 第二版 ) CF M 0 CF 逻辑左移 SHL 循环左移 ROL CF M 0 CF 算术左移 SAL 循环右移 ROR CF 0 M CF 逻辑右移 SHR 带进位循环左移 RCL CF M CF 算术右移 SAR ( 注 :CF 为进位位 M 为符号位 ) 带进位循环右移 RCR 图 3-8 移位指令的操作功能示意 移位指令对各标志位的影响如下 : (1)CF 标志位要根据各种移位指令而定 OF 标志位可表示移位后的符号位与移位前是 否相同, 即当位移为 1, 移位后的最高有效位的值发生变化时,OF 置 1, 否则清 0 (2) 循环移位指令均影响 CF OF SF ZF PF 标志位 (3) 移位指令根据移位后的结果设置 SF ZF PF 标志位,AF 标志位无定义 在程序设计中, 常常用逻辑左移和逻辑右移指令来实现将无符号操作数乘以 2 或除以 2 的 操作 要进行将带符号的数乘以 2 或除以 2 的运算, 可以通过算术左移和算术右移指令来实现 例 3.16 分析以下移位指令的操作功能 SHL AL,1 ;AL 中内容向左移动 1 位, 执行 (AL) 2 操作 MOV CL,4 ; 移位次数送 CL 保存 SHL AL,CL ;AL 中内容向左移动 CL 中指定的 4 位, 空出位补 0 SHR AX,1 ;AX 中内容向右移动 1 位, 执行 (AX)/2 操作 注意 : 用左 右移位指令实现乘 除运算要比用乘 除法指令实现所需时间短得多 此 外, 循环移位指令可用来检测寄存器或存储单元中数据含 1 或 0 的个数, 因为用循环移位指令 循环 8 次, 数据又恢复了, 只要对 CF 进行检测, 就可计算出 1 或 0 的个数 串操作类指令 数据串是存储器中的一串字节或字的数据序列 8086 指令系统中设置了串操作指令, 其 操作对象是内存中地址连续的字节串或字串 在每次操作后能够自动修改地址指针, 为下一次 操作作准备 基本串操作指令有串传送 (MOVS) 串比较 (CMPS) 串扫描 (SCAS) 串存取 (LODS STOS) 等 任何一个基本串操作指令的前面都可以加一个重复操作前缀, 使指令操作重复, 这样在处理长数据串时要比用循环程序速度快得多 串操作指令具有以下几个共同的特点 : (1) 约定以 DS:SI 寻址源串, 以 ES:DI 寻址目标串 指令中不必指明操作数 其中源串

21 第 3 章指令系统 85 的段寄存器 DS 可通过加段超越前缀而改变, 但目标串的段寄存器 ES 不能超越 源操作数常用在现行的数据段, 隐含段寄存器 DS; 目的操作数总是在现行的附加段, 隐含段寄存器 ES (2) 采用方向标志规定串处理方向 若方向标志 DF=0, 则从低地址向高地址方向处理, 地址指针增量, 字节操作时地址指针加 1, 字操作时地址指针加 2; 若 DF=1, 则处理方向相反, 地址指针减量, 字节操作时地址指针减 1, 字操作时地址指针减 2 每一次操作以后修改地址指针, 源串 目标串的两个地址指针 SI 和 DI 都将根据方向标志 DF 的值自动增量或减量, 以指向串中下一项 (3) 可在串操作指令前加重复前缀用来对一个以上的串数据进行操作 这时必须用 CX 作为重复次数计数器, 存放被处理数据串的元素个数 ( 字节个数或字个数 ) 串操作指令每执行一次,CX 值自动减 1, 直至减为 0 则停止串操作 (4) 重复的数据串处理过程可以被中断 CPU 在处理数据串中的下一元素之前识别中断并转入中断服务程序 在中断返回以后, 重复过程从中断点继续执行下去 (5) 若串操作指令的基本操作影响标志 ZF( 如 CMPS SCAS), 则可加重复前缀 REPE/REPZ 或 REPNE/REPNZ, 此时操作重复进行的条件不仅要求 (CX) 0, 而且同时要求 ZF 的值满足重复前缀中的规定 (6) 除了串比较指令和串搜索指令外, 其余串操作指令均不影响标志位 1. 串传送指令指令格式 :MOVS dst,src ; 用于字串或字节串传送, 由给定的数据类型确定 MOVSB ; 字节串传送,SI 和 DI 的内容 ±1 MOVSW ; 字串传送,SI 和 DI 的内容 ±2 该指令的操作功能为 : 将位于 DS 段的由 SI 所指示的存储单元的内容传送到位于 ES 段由 DI 所指示的存储单元, 然后修改地址指针 SI 和 DI, 以指向串中的下一个元素 串传送指令在执行前, 都必须把 SI 指向源操作数,DI 指向目的操作数, 并将 DF 置 1 或清 0 2. 串存储指令指令格式 :STOS dst ; 用于字串或字节串存储, 由给定的数据类型确定 STOSB ; 字节存储 STOSW ; 字存储该指令的操作功能为 : 把 AL 或 AX 中的内容存入由 DI 指示的 ES 段中的字节数据或字数据, 并根据 DF 的值及数据类型来修改 DI 中的内容 在该指令执行前, 要将存入的内容预先放到 AL 或 AX 中, 并设置 DF DI 初始值 STOS 指令的执行不影响标志位 这条指令和 REP 指令配合使用, 可用来将存储区中的某一连续区域放入相同的内容 3. 取串指令指令格式 :LODS src ; 用于字串或字节串的取出, 由给定的数据类型确定 LODSB ; 取字节串 LODSW ; 取字串该指令的操作功能为 : 把 SI 指示的 DS 段中的字节数据或字数据传送至 AL 或 AX, 并根据 DF 的值及数据类型来调整 SI 中的内容 该指令的执行不影响标志位

22 86 微型计算机原理与接口技术 ( 第二版 ) 4. 串比较指令 指令格式 :CMPS dst,src ; 用于字串或字节串比较, 由给定的数据类型确定 CMPSB CMPSW ; 字节串比较 ; 字串比较 该指令的操作功能为 : 完成两个字节数据或字数据的相减, 结果不回送, 只影响状态标志 位, 并根据 DF 的值及数据类型来修改 DI 的内容 设置 SI 指向被减数,DI 指向减数, 并设置 DF 值 5. 串搜索指令 指令格式 :SCAS dst,src ; 用于字串或字节串搜索, 由给定的数据类型确定 SCASB SCASW ; 字节串搜索 ; 字串搜索 该指令的操作功能为 : 将 AL 或 AX 中的内容减去字节数据或字数据, 结果不回送, 只影响 状态标志位, 并根据 DF 的值及数据类型来调整 DI 的内容 在该指令执行前,AL 或 AX 中设置 被搜索的内容,DI 指向被搜索的字符串的首单元, 并设置 DF 值 6. 方向标志清除 设置指令 指令格式 :CLD STD 7. 重复操作前缀 指令格式 :REP REPE/REPZ ; 方向标志清除指令, 使 DF=0, 可使串操作地址自动增量 ; 方向标志设置指令, 使 DF=1, 可使串操作地址自动减量 REPNE/REPNZ 指令的操作功能为 : ; 重复操作前缀 ; 相等 / 为零时重复操作前缀 ; 不相等 / 不为零时重复操作前缀 REP 用在 MOVS STOS LODS 指令之前, 重复次数预先送入 CX 中, 每执行一次串操 作指令,CX 中的内容自动减 1, 一直重复到 (CX)=0, 操作结束 REPE/REPZ 用在 CMPS SCAS 指令之前, 每执行一次串操作指令,CX 中的内容自动减 1, 并判断 ZF 是否为 0, 当 (CX)=0 或 ZF=0 时, 重复操作结束 REPNE/REPNZ 用在 CMPS SCAS 指令之前, 每执行一次串操作指令,CX 中的内容自 动减 1, 并判断 ZF 是否为 1, 当 (CX)=0 或 ZF=1 时, 重复操作结束 例 3.17 已知两个字节串 STR1 和 STR2 存放在内存中, 设串的长度为 10, 试比较 STR1 和 STR2 是否相等, 如果相等, 将标志单元 DL 置 全 1, 否则置 全 0 程序段设计如下 : LEA SI,STR1 ; 将源字符串首地址送 SI 指针寄存器 LEA DI,STR2 ; 将目标字符串首地址送 DI 指针寄存器 MOV CX,10 ; 字符串长度送 CX CLD ; 将 DF 标志位清 0, 按递增方式进行 REPE CMPSB ; 按字节重复进行比较 JNZ NEXT1 ; 如果两个字符串不相等, 则转至 NEXT1 MOV DL,FFH ; 否则, 字符串相等, 将 DL 单元置全 1 JMP NEXT2 ; 跳转到 NEXT2 NEXT1:MOV DL,00H ; 字符串不相等, 将 DL 单元置全 0 NEXT2:HLT ; 暂停 例 3.18 将内存区域 BUF1 开始存储的 100 个字节数据传送到从 BUF2 开始的存储区中

23 第 3 章指令系统 87 (1) 采用串传送指令的程序段如下 : LEA SI,BUF1 ; 源数据区首址送 SI LEA DI,BUF2 ; 目标数据区首址送 DI MOV CX,100 ; 串长度送 CX CLD ; 清方向标志, 按正向传送 NEXT:MOVSB ; 串传送一个字节 DEC CX ; 计数器减 1 JNZ NEXT ; 判断是否传送完毕, 没完则继续 DONE:HLT ; 暂停 (2) 采用重复传送指令的程序段如下 : LEA SI,BUF1 LEA DI,UF2 MOV CX,100 CLD REP MOVSB HLT 控制转移类指令 ; 源数据区首址送 SI ; 目标数据区首址送 DI ; 串长度送 CX ; 清方向标志, 按正向传送 ; 重复传送至 (CX)=0 结束 ; 暂停 程序的执行一般是按指令顺序逐条执行的, 但有时需要改变程序的执行流程 控制转移 类指令就是用来改变程序执行的方向, 也就是修改 IP 和 CS 的值 通过控制转移指令可实现 各种结构化程序设计, 如分支结构程序 循环结构程序等 按程序的转移位置可将转移指令分为段内转移和段间转移 : (1) 如果指令给出改变 IP 中内容的信息, 转移的目标位置和转移指令在同一个代码段, 则称为段内转移 ; (2) 如果指令给出改变 IP 中内容的信息, 又给出改变 CS 中内容的信息, 转移的目标位 置和转移指令不在同一个代码段, 则称为段间转移 根据转移指令的功能, 可分为无条件转移指令 条件转移指令 循环控制指令 子程序 调用和返回指令 4 类 下面分别进行讨论 1. 无条件转移指令 无条件转移指令 JMP 用来控制程序转移到指定的位置去执行, 指令中要给出转移位置的 目标地址, 通常有以下 5 种形式, 如表 3-3 所示 表 3-3 无条件转移指令及其功能 指令助记符指令名称指令操作功能 JMP SHORT opr JMP NEAR PTR opr JMP WORD PTR opr 段内直接短转移 段内直接近转移 段内间接转移 无条件转移到指定的目标地址 opr opr 为当前的 IP 值与指令中给定的 8 位偏移量之和, 在 -128~+127 范围内转移,SHORT 为属性运算符 无条件地转移到指定的目标地址 opr 该地址为当前 IP 值与指令中给定的 16 位偏移量之和, 在 ~ 范围内转移,NEAR PTR 是类型说明符 无条件转移到指定的目标地址 寄存器寻址时, 将寄存器中的内容送到 IP 中 ; 存储器寻址时, 按寻址方式计算出有效地址和物理地址, 用物理地址去读取内存中的数据送给 IP 指针

24 88 微型计算机原理与接口技术 ( 第二版 ) 续表 指令助记符指令名称指令操作功能 JMP FAR PTR opr 段间直接转移 JMP DWORD PTR opr 段间间接转移 转移到指定段内的目标地址 由操作数决定的段地址送 CS, 段内偏移地址送 IP 汇编时 opr 所对应的偏移量和所在代码段的段地址放在操作码之后, 需要 4 个字节的存储单元完成段间转移, 由 opr 的寻址方式计算出有效地址和物理地址, 通过物理地址去读取内存中连续的两个字数据, 其中低位字送给 IP, 高位字送给 CS 例 3.19 给定 (IP)=0012H,(BX)=0110H,(DS)=2000H,(20110H)=50H,(20111H)=01H 执行指令 :JMP WORD PTR[BX] 分析指令的操作功能 解 : 该指令为段内间接转移方式, 目标地址为存储器寻址方式 操作数的有效地址为 :EA=(BX)=0110H 物理地址为 :PA=DS 10H+EA=20110H 指令执行后 :(IP)=0150H, 即该指令将跳转到以 IP 指针为 0150H 单元的目标地址开始执行 例 3.20 给定(CS)=3000H,(IP)=0032H,(BX)=0100H,(DS)=2000H,(20120H)=80H, (20121H)=10H,(20122H)=20H,(20123H)=40H 执行指令 :JMP DWORD PTR[BX+0020H], 分析指令的操作功能 解 : 该指令为段间间接转移方式, 目标地址为存储器寻址方式 操作数的有效地址为 :EA=(BX)+0020H=0120H 物理地址 :PA=DS 10H+EA=20120H 指令执行后, 从 20120H 单元开始取出连续的 4 个字节数据, 前两个单元的数据送 IP, 后两个单元的数据送 CS 最后结果为:(IP)=1080H,(CS)=4020H 2. 条件转移指令 8086 指令系统具有一系列的条件转移指令, 以某些标志位的状态或有关标志位的逻辑运算结果作为依据来决定是否发生转移 条件转移指令是根据上一条指令所设置的条件码来测试, 被测试的内容为状态标志位 满足测试条件则转移到指令中指定的位置去执行, 如果不满足条件则顺序执行下一条指令 条件转移指令都为短转移, 即转移的相对地址位移范围在 -128~+127 当满足转移条件时, 将位移量与当前的指令寄存器 IP 的内容相加, 由此形成所需的程序地址并开始执行 条件转移指令的执行不会影响标志位 条件转移指令根据判断的标志位不同, 通常可以归纳为 3 类, 即判断单个标志位状态 比较无符号数高低和比较带符号数大小 这 3 类指令在使用之前, 应该有比较 CMP 测试 TEST 加减或逻辑运算等指令 各类条件转移指令的助记符 指令名称及转移条件等列于表 3-4 中

25 第 3 章指令系统 89 表 3-4 条件转移指令 指令助记符转移条件指令含义指令助记符转移条件指令含义 JZ/JE ZF=1 等于零 / 相等 JC/JB/JNAE CF=1 进位 / 低于 / 不高于等于 JNZ/JNE ZF=0 不等于零 / 不相等 JNC/JNB/JAE CF=0 无进位 / 不低于 / 高于等于 JS SF=1 符号为负 JBE/JNA CF=1 或 ZF=1 低于等于 / 不高于 JNS SF=0 符号为正 JNBE/JA CF=0 且 ZF=0 不低于等于 / 高于 JO OF=1 结果有溢出 JL/JNGE SF OF 小于 / 不大于等于 JNO OF=0 结果无溢出 JNL/JGE SF=OF 不小于 / 大于等于 JP/JPE PF=1 有偶数个 1 JLE/JNG ZF OF 或 ZF=1 小于等于 / 不大于 JNP/JPO PF=0 有奇数个 1 JNLE/JG SF=OF 且 ZF=0 不小于等于 / 大于 从表 3-4 中可知, 判断转移条件共有 16 种, 其中, 用于判断单个标志位状态的指令有 8 种, 它们是根据某一个状态标志是 0 或 1 来决定是否转移 ; 用于比较无符号数高低的指令有 4 种, 它们需要利用 CF 标志来确定高低 利用 ZF 标志来确定相等 ; 用于比较带符号数大小的 指令有 4 种, 它们需要组合 OF SF 标志 并利用 ZF 标志来确定相等与否 例 3.21 已知在内存中有两个无符号字节数据 NUM1 和 NUM2, 找出其中的大数送到 MAX 单元保存 程序段如下 : MOV AL,NUM1 ; 取出数据 NUM1 送到 AL 中 CMP AL,NUM2 ; 和数据 NUM2 进行比较 JA NEXT ;NUM1>NUM2 时, 转到 NEXT MOV AL,NUM2 ; 否则取出 NUM2 数据送到 AL 中 NEXT:MOV MAX,AL ; 将 AL 中保存的大数送到 MAX 单元 HLT ; 暂停 本题若改为两个带符号数的比较, 则程序中条件转移指令应为 JG 此外, 在条件转移指令中, 有时还会专门对 CX 寄存器的值进行测试, 当 (CX)=0 时产生 转移 该指令的格式为 :JCXZ 指令常用于循环程序中对循环次数进行控制 3. 循环控制指令 opr ; 测试条件是 : 若 (CX)=0, 则转移到指定位置 JCXZ 将一段代码程序执行多次操作即为循环, 采用循环控制指令实现 循环控制转向的目的 地址是在以当前 IP 内容为中心的 -128~+127 的范围内, 指令采用 CX 作为计数器, 每执行一 次循环,CX 内容减 1, 直到为零后循环结束 循环控制指令是根据标志位状态进行控制操作的, 指令本身不影响标志位 8086 指令系 统中有以下三种循环控制语句 (1) 循环控制指令 LOOP 指令格式 :LOOP opr LOOP 指令用在循环次数固定的循环结构中, 循环次数送入 CX, 语句标号 opr 为循环体 的入口 该指令是以 CX 的内容作为计数控制, 作 (CX) (CX)-1 的操作, 并进行判断, 当 CX 0 时, 转移到由操作数指示的目的地址, 即 (IP) (IP)+ 位移量, 进行循环处理 ; 当 CX=0 时,

26 90 微型计算机原理与接口技术 ( 第二版 ) 结束循环 一条 LOOP 指令相当于下面两条指令的作用 : DEC CX ;(CX)-1 JNZ NEXT ; 不为零转移 (2) 为零或相等时循环控制指令 LOOPZ/LOOPE 指令格式 :LOOPZ/LOOPE opr LOOPZ/LOOPE 指令可完成当 ZF=1 且 CX 0 条件下的循环操作 在 LOOPZ 或 LOOPE 所做的控制循环操作过程中, 除了进行 (CX) (CX) -1 的操作, 还要判断 CX 是否为零 此外, 还将判断标志位 ZF 的值 (3) 不为零或不相等时循环控制指令 LOOPNZ/LOOPNE 指令格式 :LOOPNZ/LOOPNE opr LOOPNZ 或 LOOPNE 指令可完成当 ZF=0 且 (CX) 0 的条件下控制循环操作 其操作过 程类似于 LOOPZ 或 LOOPE 指令 例 3.22 用循环程序来实现 S= 计算 程序段如下 : MOV CX,100 ; 数据长度送 CX 计数器 XOR AL,AL ; 将 AL 寄存器清零 MOV BL,1 ; 对 BL 赋初值为 1 NEXT:ADD AL,BL ;(AL) (AL)+(BL) INC BL ;BL 加 1 LOOP NEXT ;(CX)-1 0 转 NEXT 位置继续 HLT ; 否则, 累加完毕, 结果保存在 AL 中, 程序暂停 例 3.23 在内存中有一个具有 N 个字节的数据串, 首单元地址为 DATA-BUF, 找出第 一个不为 0 的数据的地址送到 ADDR 单元中 程序段如下 : LEA SI,DATA-BUF ; 取数据串的首单元地址 MOV CX,N ; 数据串长度送 CX 计数器 MOV AL,0 ; 对 AL 清零 DEC SI ; 循环初始化 NEXT:INC SI ; 地址指针加 1 CMP AL,[SI] ; 将内存中的数据和 AL 中的内容进行比较 LOOPZ NEXT ; 为 0 且未比较到末尾转 NEXT 位置继续 JZ EXIT ; 判断 ZF=1, 条件成立转 EXIT MOV ADDR,SI ;ZF=0, 将 SI 中的内容送 ADDR 单元 EXIT:HLT ; 程序暂停 本例中, 有两种情况可以使循环结束 : 一种是经比较找到了第一个不为 0 的数据 ; 另一 种是 N 个数据全部比较结束后未找到数据 0, 所以退出循环时要判断 ZF 是否为 1 4. 子程序调用和返回指令 在复杂程序的设计过程中, 通常把系统的总体功能分解为若干个小的功能模块 每一个 小功能模块对应一个过程 在汇编语言中, 过程又称为子程序 程序中可以由调用程序 ( 称之 为主程序 ) 来调用这些子程序, 子程序执行完毕后要返回主程序调用处继续执行下一条指令 子程序调用及返回指令是程序设计中常用的指令, 在程序的执行过程中, 它们可对某一个具有

27 第 3 章指令系统 91 独立功能子程序进行多次调用操作, 由此可实现模块化的程序设计 8086 指令系统提供了子程序调用 CALL 和返回指令 RET (1) 子程序调用指令 指令格式为 :CALL NEAR PTR opr ; 段内调用 CALL FAR PTR opr ; 段间调用其中,opr 为子程序名 ( 即子程序第一条指令的符号地址 ) 为了保证调用之后正确地返回, 需要把 CALL 指令的下一条指令的地址 ( 称为断点 ) 压入堆栈进行保护 下面分别讨论段内和段间的子程序调用指令所完成的操作 : 对于段内的直接调用指令, 其指令中的目的地址为一个 16 位目的地址的相对位移量 CALL 指令的操作可完成 (SP) (SP)-2, 并将指令指针 IP 压入堆栈, 然后修改 IP 的内容, 即 (IP) (IP)+ 相对位移量 对于段内的间接调用指令, 指令中所指定的 16 位通用寄存器或存储单元的内容为目的地址的位移量 CALL 指令的操作可完成 (SP) (SP)-2, 将指令寄存器 IP 压入堆栈, 然后取出目的地址位移量送入 IP 对于段间的直接调用指令, 其目的地址不仅包括位移量还包括段地址, 它们由指令直接给出 因此 CALL 指令的操作可完成 (SP) (SP)-2, 将现行指令的段地址 (CS 的内容 ) 压入堆栈, 然后作 (SP) (SP)-2, 将现行的位移量 (IP 的内容 ) 压入堆栈 最后将指令中所指示的段地址及位移量分别送入 CS 及 IP 中 对于段间的间接调用指令, 其目的地址由指令的寻址方式所决定 将现行地址压入堆栈的操作同段间直接调用指令 段地址及段内位移量送入 CS 及 IP 将由寻址方式来决定 (2) 子程序返回指令 RET 指令格式 : RET 或 RET 表达式 RET 指令为子程序的最后一条指令 子程序操作完成之后,RET 指令使其返回主程序, 该指令所完成的操作是从堆栈中弹出返回地址, 送入指令寄存器 IP 和段寄存器 CS 由于子程序调用分为段内调用和段间调用, 因此返回指令也可分为段内返回和段间返回两种 段内返回是指将 SP 所指示的堆栈顶部弹出一个字的返回地址, 送入 IP 中 段间返回是指从堆栈顶部弹出的返回地址为 2 个字的内容, 其中一个字送入 IP, 另一个字送入 CS 中, 以表示不同的段 此外, 对于段内和段间返回都可带立即数, 如 RET 0100H 由于主程序在调用子程序之前利用堆栈进行参数传递, 因此, 利用带立即数的返回指令可以对堆栈指针 SP 进行调整, 即 (SP) (SP)+ 立即数, 使堆栈指针寄存器 SP 所指示的位置为调用之前的位置 子程序调用和返回指令对标志位无影响 例 3.24 在主程序中执行一条子程序段内调用语句 调用格式如下 :

28 92 微型计算机原理与接口技术 ( 第二版 ) MAIN PROC FAR ; 定义主程序 MOV AX,DATA ;DS 初始化 MOV DS,AX CALL SUB1 ; 调用子程序 SUB1 SUB1 PROC NEAR ; 定义子程序 PUSH AX ; 保护现场 PUSH BX RET ; 子程序返回 处理器控制类指令 这类指令主要用于修改状态标志位 控制 CPU 的功能, 如使 CPU 暂停 等待 空操作等 其指令表示符号和功能如表 3-5 所示 表 3-5 处理器控制类指令 指令名称助记符指令功能指令名称助记符指令功能 进位标志设置指令 CLC CF 位清 0 STC CF 位置 1 暂停指令 HLT CPU 进入暂停状态, 不进行任何操作 CMC CF 位求反等待指令 WAIT CPU 进入等待状态 方向标志设置 CLD DF 位清 0 空操作指令 NOP CPU 空耗一个指令周期 指令 STD DF 位置 1 封锁指令 LOCK CPU 执行指令时封锁总线 中断允许控制 CLI IF 位清 0 标志设置指令 STI IF 位置 1 交权指令 ESC 指令将处理器的控制权交给协处理器 (1) 对于各标志位的设置, 可按照程序的要求选择相关指令进行处理 (2)HLT 暂停指令可使机器暂停工作, 处理器处于停机状态, 以便等待一次外部中断到来, 中断结束后, 退出暂停继续执行后续程序 对系统进行复位操作也会使 CPU 退出暂停状态 (3)WAIT 等待指令使处理器处于空转状态, 也可用来等待外部中断发生, 但中断结束 后仍返回 WAIT 指令继续等待 (4)NOP 空操作指令不执行任何操作, 其机器码占一个字节单元, 在调试程序时往往用 这种指令占一定数量的存储单元, 以便在正式运行时用其他指令取代 ; 执行该指令花 3 个时钟 周期, 也可用在延时程序中拼凑时间 (5)LOCK 是一个一字节的前缀, 可放在任何指令的前面 执行时, 使引脚 LOCK 有效, 在多处理器具有共享资源的系统中可用来实现对共享资源的存取控制, 即通过对标志位进行测 试, 进行交互封锁 根据标志位状态, 在 LOCK 有效期间, 禁止其他的总线控制器对系统总 线进行存取 当存储器和寄存器进行信息交换时,LOCK 前缀指令非常有用 例 3.25 利用 LOCK 封锁指令, 在多处理器系统中, 实现对共享资源存取的控制 解 : 根据题目要求, 有如下的程序段 CHECK:MOV AL,1 ;AL 置 1( 隐含封锁 ) LOCK SEMA,AL ; 测试并建立封锁

29 第 3 章指令系统 93 TEST AL,AL ; 由 AL 设置标志 JNZ CHECK ; 封锁建立则重复 MOV SEMA,0 ; 完成, 清除封锁 (6) 执行 ESC 指令时, 协处理器可监视系统总线, 并且能取得这个操作码 ESC 和 LOCK 指令用在 8086 最大工作方式中, 分别处理主机和协处理器以及多处理器间的同步关系 3.4 Pentium 微处理器新增指令和寻址方式 Pentium 微处理器以最先进的技术将 PC 机推向了一个崭新的发展阶段,Pentium 拥有全新的结构与功能, 它采用了超标量体系结构, 具有动态转移预测 流水线浮点部件 片内超高速缓冲存储器 较强的错误检测和报告功能 测试挂钩等新技术 下面简要分析 Pentium 微处理器与 X86 系列芯片在指令及寻址方式等方面中的不同和特点 Pentium 微处理器寻址方式 1.Pentium 微处理器内部寄存器和指令格式由于 Pentium 微处理器采用 32 位指令, 它的内部寄存器和指令格式与 16 位微处理器存在不同, 主要有以下几方面 : (1) 指令的操作数可以是 8 位 16 位或 32 位 (2) 根据指令的不同操作数字段可以是 0~3 个, 三操作数时, 最左边的操作数为目的操作数, 右边两个操作数均为源操作数 (3) 在部分不存放结果的单操作数指令中, 可以采用立即数作为操作数 (4) 部分指令对操作数的数据类型不是简单地要求一致, 而是要有不同的匹配关系 (5) 立即数寻址方式中, 操作数可以是 32 位的立即数 ; 寄存器寻址方式中, 操作数可以是 32 位通用寄存器 (6) 存储器操作数寻址方式中, 操作数可达 32 位, 寻址方式既可采用 16 位的地址寻址方式也可采用 32 位的扩展地址寻址方式 (7)16 位微处理器原有的 4 个通用数据寄存器扩展为 32 位, 更名为 EAX EBX ECX 和 EDX (8) 原有的 4 个用于内存寻址的通用地址寄存器同样扩展为 32 位, 更名为 ESI EDI EBP ESP (9) 指令指针寄存器扩展为 32 位, 更名为 EIP, 实地址方式下仍然可以使用它的低 16 位 IP (10) 在原有的 4 个段寄存器基础上, 增加了 2 个新的段寄存器 FS 和 GS, 段寄存器长度仍然为 16 位, 但是它存放的不再是 段基址, 而是代表这个段编号的 13 位二进制数, 称为 段选择字 (11)32 位微处理器增加了 4 个系统地址寄存器, 它们分别是存放 全局段描述符表 首地址的 GDTR, 存放 局部段描述符表 选择字的 LDTR, 存放 中断描述符表 首地址的 IDTR, 存放 任务段 选择字的 任务寄存器 TR (12) 标志寄存器也扩展为 32 位, 更名为 EFLAGS, 除了原有的状态 控制标志外, 还

30 94 微型计算机原理与接口技术 ( 第二版 ) 增加了 2 位, 表示 IO 操作特权级别的 IOPL, 表示进入虚拟 8086 方式的 VM 标志等 (13) 新增加了 5 个 32 位的控制寄存器, 命名为 CR0~CR4,CR0 寄存器的 PE=1 表示 目前系统运行在 保护模式,PG=1 表示允许进行分页操作 CR3 寄存器存放 页目录表 的基地址 (14) 新增了 8 个用于调试的寄存器 DR0~DR7,2 个用于测试的寄存器 TR6 和 TR7 2.Pentium 微处理器新增寻址方式 如前所述,8086 微处理器有固定寻址 立即数寻址 寄存器寻址 直接寻址 寄存器间 接寻址 寄存器相对寻址 基址变址寻址和相对基址变址寻址等 8 种寻址方式, 而 Pentium 微 处理器有 11 种寻址方式 与 8086 相比新增加的 3 种寻址方式分别是比例变址寻址方式 基址 加比例变址寻址方式和带位移量的比例变址寻址方式 (1) 比例变址寻址方式 其有效地址为 :EA=[ 变址寄存器 ] 比例因子 + 位移量 该方式下操作数有效地址是变址寄存器的内容乘以指令中指定的比例因子再加上位移量 之和, 所以有效地址由三种成分组成 乘比例因子的操作是在 CPU 内部由硬件完成的 这种寻址方式与寄存器相对寻址相比, 增加了比例因子, 其优点在于 : 对于元素大小为 字节的数组, 可以在变址寄存器中给出数组元素下标, 而由寻址方式控制直接用比例因 子把下标转换为变址值 例如 : MOV EAX,COUNT[ESI 4] (2) 基址加比例变址寻址方式 其有效地址为 :EA=[ 基址寄存器 ]+[ 变址寄存器 ] 比例因子 该方式下 EA 是变址寄存器的内容乘以比例因子再加上基址寄存器的内容之和, 这种寻址 方式与基址变址寻址方式相比, 增加了比例因子 例如 : MOV ECX,[EAX][EDX 8] (3) 带位移量的基址加比例变址寻址方式 其有效地址为 :EA=[ 基址寄存器 ]+[ 变址寄存器 ] 比例因子 + 位移量 操作数的有效地址是变址寄存器的内容乘以比例因子, 加上基址寄存器的内容, 再加上 位移量之和, 所以有效地址由四种成分组成 在寻址过程中, 变址寄存器内容乘以比例因子的 操作也是在 CPU 内部由硬件来完成 这种寻址方式比相对基址变址寻址方式增加了比例因子, 便于对元素为 字节的 二维数组的处理 例如 : MOV EAX,TABLE[EBP][EDI 4] 需要注意的是 : Pentium 微处理器在实地址方式下, 一个段的最大长度仍然为 64KB, 段基址是 16 的 倍数, 用段寄存器存放段基址 Pentium 有 6 个段寄存器, 在寻址内存操作数时, 指令给出的内存操作数的地址均为 有效地址

31 第 3 章指令系统 95 内存操作数有效地址可由一个 32 位基址寄存器 一个可乘上比例因子 的 32 位变址寄存器和一个不超过 32 位的常数偏移量组成 32 位寻址情况下,8 个 32 位通用寄存器均可作基址寄存器, 其中 ESP EBP 以 SS 为默认段寄存器, 其余 6 个通用寄存器均以 DS 为默认段寄存器 基址字段 变址字段 偏移量字段可任意省略其一或其二 比例因子与变址字段联合使用, 如省略了变址字段, 则比例因子不能独立存在 Pentium 系列微处理器专用指令 Pentium 系列处理器的指令集是向上兼容的, 它保留了 8086 和 80X86 微处理器系列的所 有指令, 因此, 所有早期的软件可直接在奔腾机上运行 从微处理器的指令系统中可看出, 自 1985 年 Intel 公司推出 32 位微处理器 以来, 始终使用着几乎一样的指令系统, 只是每提高一代便追加很少几条指令 Pentium 微处理器的 指令集与 相比变化不大,Pentium 的主要特色是拥有能使系统程序员实现多路处理 Cache 一致性协议的新指令, 以及一条 8 字节比较交换指令和一条微处理器识别指令 Pentium 处理器指令集中新增加了以下 3 条专用指令 1. 比较和交换 8 字节数据指令 CMPXCHG8B 指令格式 :CMPXCHG8B opr1,opr2 该指令执行 64 位数据的比较和交换操作 执行时将存放在 opr1(64 位存储器 ) 中的目的 操作数与累加器 EDX:EAX 的内容进行比较, 如果相等, 则 ZF=1, 并将源操作数 opr2( 规 定为 EDX:EAX) 的内容送入 opr1; 否则 ZF=0, 并将 opr1 送到相应的累加器 例如 : CMPXCHG8B mem,ecx:ebx 指令执行后, 如果 EDX:EAX=[mem], 则 ECX:EBX [mem],zf=1 2.CPU 标识指令 CPUID 指令格式 :CPUID 否则 [mem] EDX:EAX 且 ZF=0 该指令执行后可以将有关 Pentium 处理器的型号和特点等系列信息返回到 EAX 中 在执 行 CPUID 指令前,EAX 寄存器必须设置为 0 或 1, 根据 EAX 中设置值的不同, 软件会得到 不同的标志信息 3. 读时间标记计数器指令 RDTSC 指令格式 :RDTSC 在 Pentium 处理器中有一个片内 64 位计数器, 称为时间标记计数器 TSC 计数器的值在 每个时钟周期都自动加 1, 执行 RDTSC 指令可以读出计数器 TSC 中的值, 并送入寄存器 EDX:EAX 中,EDX 保存 64 位计数器中的高 32 位,EAX 保存低 32 位 一些应用软件需要确定某个事件已执行了多少个时钟周期, 在执行该事件之前和之后分 别读出时钟标志计数器的值, 计算两次值的差就可得出时钟周期数 Pentium 系列微处理器控制指令 Pentium 处理器指令集中新增加了以下 3 条系统控制指令

32 96 微型计算机原理与接口技术 ( 第二版 ) 1. 读专用模式寄存器指令 RDMSR RDMSR 指令使软件可访问专用模式寄存器的内容, 执行指令时在访问的模式专用寄存器与寄存器组 EDX:EAX 之间进行 64 位的读操作 2. 写专用模式寄存器指令 WRMSR WRMSR 指令执行时在访问的模式专用寄存器与寄存器组 EDX:EAX 之间进行 64 位的写操作 Pentium 处理器有两个专用模式寄存器, 即机器地址检查寄存器 (MCA) 和机器类型检查寄存器 (MCT) 如果要访问机器地址检查寄存器 MCA, 指令执行前需将 ECX 置为 0; 而为了访问机器类型检查寄存器 MCT, 需要将 ECX 置为 1 3. 恢复系统管理模式指令 RSM Pentium 处理器有一种称为系统管理模式 (SMM) 的操作模式, 这种模式主要用于执行系统电源管理功能 外部硬件的中断请求使系统进入 SMM 模式, 执行 RSM 指令后返回原来的实模式或保护模式 本章小结 8086 指令系统和寻址方式是汇编语言程序设计的基础, 应熟练掌握其具体内容 特点和应用场合 8086CPU 指令按操作数类别分隐含操作数 单操作数和双操作数 3 种类型 ; 按操作数存放位置分立即数 寄存器操作数 存储器操作数和 I/O 端口操作数 4 种类型 需要进行频繁访问的数据可放在寄存器中, 这样能够保证程序执行的速度更快 批量数据的处理可使用存储器操作数 在指令中寻找操作数有效地址的方式称为寻址方式, 寻址的目的是为了得到操作数 8086 系统有立即数寻址 寄存器寻址 直接寻址 寄存器间接寻址 寄存器相对寻址 基址变址寻址 相对基址变址寻址 7 种基本寻址方式 I/O 端口的寻址方式有直接端口寻址和寄存器间接端口寻址两种 在学习时, 要弄清各类寻址方式的区别和特点, 结合 8086 存储器分段, 重点掌握和理解存储器寻址方式中有效地址 EA 和物理地址 PA 的计算方法 8086 指令系统按功能分为数据传送类 算术运算类 逻辑运算类 串操作类 控制转移类 处理器控制类等指令 状态标志是 CPU 进行条件判断和控制程序执行流程的依据, 大多数指令的执行不影响标志位, 某些指令的执行会按照规则影响标志位, 还有一些指令会按特定方式影响标志位 实际应用中, 要正确理解和运用各种指令格式 功能和注意事项 有关 8086CPU 指令集可参见本书的附录 A 习题 3 一 单项选择题 1. 寄存器间接寻址方式中, 要寻找的操作数位于 ( ) 中

33 第 3 章指令系统 97 A. 通用寄存器 B. 段寄存器 C. 内存单元 D. 堆栈区 2. 下列传送指令中正确的是 ( ) A.MOV AL,BX B.MOV CS,AX C.MOV AL,CL D.MOV [BX],[SI] 3. 下列 4 个寄存器中, 不允许用传送指令赋值的寄存器是 ( ) A.CS B.DS C.ES D.SS 4. 将 AX 清零并使 CF 位清零, 下面指令错误的是 ( ) A.SUB AX,BX B.XOR AX,AX C.MOV AX,0 D.AND AX,0000H 5. 指令 MOV [SI+BP],AX; 其目的操作数的隐含段为 ( ) A. 数据段 B. 堆栈段 C. 代码段 D. 附加段 6. 设 (SP)=1010H, 执行 PUSH AX 后,SP 中的内容为 ( ) A.1011H B.1012H C.100EH D.100FH 7. 对两个带符号整数 A 和 B 进行比较, 要判断 A 是否大于 B, 应采用指令 ( ) A.JA B.JG C.JNB D.JNA 8. 已知 (AL)=80H,(CL)=02H, 执行指令 SHR AL,CL 后的结果是 ( ) A.(AL)=40H B.(AL)=20H C.(AL)=C0H D.(AL)=E0H 9. 当执行完下列指令序列后, 标志位 CF 和 OF 的值是 ( ) MOV AH,85H SUB AH,32H A.0,0 B.0,1 C.1,0 D.1,1 10.JMP BX 的目标地址偏移量是 ( ) A.SI 的内容 B.SI 指向内存字单元的内容 C.IP+SI 的内容 D.IP+[SI] 二 填空题 1. 计算机指令通常由 和 两部分组成 ; 指令对数据操作时, 按照数据的存放位置可分为 2. 寻址的含义是 ;8086 指令系统的寻址方式按照操作数的存放位置可分为 ; 其中寻址速度最快的是 3. 若指令操作数保存在存储器中, 操作数的段地址隐含放在 中 ; 可以采用的寻址方式有 4. 指令 MOV AX,ES:[BX+0200H] 中, 源操作数位于 ; 读取的是 段的存储单元内容 5. 堆栈是一个特殊的, 其操作是以 为单位按照 原则来处理 ; 采用 来指向栈顶地址, 入栈时地址变化为 6.I/O 端口的寻址有 两种方式 ; 采用 8 位数时, 可访问的端口地址为 ; 采用 16 位数时, 可访问的端口地址为 三 判断题 1. 各种 CPU 的指令系统是相同的 ( ) 2. 在指令中, 寻址的目的是找到操作数 ( )

34 98 微型计算机原理与接口技术 ( 第二版 ) 3. 指令 MOV AX,CX 采用的是寄存器间接寻址方式 ( ) 4. 条件转移指令可以实现段间转移 ( ) 5. 串操作指令只处理一系列字符组成的字符串数据 ( ) 6.LOOP 指令执行时, 先判断 CX 是否为 0, 如果为 0 则不再循环 ( ) 四 分析设计题 1. 设 (DS)=2000H,(ES)= 2100H,(SS)= 1500H,(SI)= 00A0H,(BX)= 0100H,(BP)= 0010H, 数据变量 VAL 的偏移地址为 0050H, 请指出下列指令的源操作数字段是什么寻址方式? 它的物理地址是多少? (1) MOV AX,21H (2) MOV AX,BX (3) MOV AX,[1000H] (4) MOV AX,VAL (5) MOV AX,[BX] (6) MOV AX,ES:[BX] (7) MOV AX,[BP] (8) MOV AX,[SI] (9) MOV AX,[BX+10] (10) MOV AX,VAL[BX] (11) MOV AX,[BX][SI] (12) MOV AX,VAL[BX][SI] 2. 给定寄存器及存储单元的内容为 :(DS) = 2000H,(BX) = 0100H,(SI) = 0002H,(20100) = 32H,(20101) = 51H,(20102) = 26H,(20103) = 83H,(21200) = 1AH,(21201) = B6H,(21202) = D1H,(21203) = 29H 试 说明下列各条指令执行完后,AX 寄存器中保存的内容是什么? (1) MOV AX,1200H (2) MOV AX,BX (3) MOV AX,[1200H] (4) MOV AX,[BX] (5) MOV AX,1100[BX] (6) MOV AX,[BX][SI] 3. 分析下列指令的正误, 对于错误的指令要说明原因并加以改正 (1) MOV AH,BX (2) MOV [BX],[SI] (3) MOV AX,[SI][DI] (4) MOV MYDAT[BX][SI],ES:AX (5) MOV BYTE PTR[BX],1000 (6) MOV BX,OFFSET MAYDAT[SI] (7) MOV CS,AX (8) MOV DS,BP 4. 设 VAR1 VAR2 为字变量,LAB 为标号, 分析下列指令的错误之处并加以改正 (1) ADD VAR1,VAR2 (2) MOV AL,VAR2 (3) SUB AL,VAR1 (4) JMP LAB[SI] (5) JNZ VAR1 (6) JMP NEAR LAB 5. 写出能够完成下列操作的 8086CPU 指令 (1) 把 4629H 传送给 AX 寄存器 (2) 从 AX 寄存器中减去 3218H (3) 把 BUF 的偏移地址送入 BX 中 6. 根据以下要求写出相应的汇编语言指令 (1) 把 BX 和 DX 寄存器的内容相加, 结果存入 DX 寄存器中 (2) 用 BX 和 SI 的基址变址寻址方式, 把存储器中的一个字节与 AL 内容相加, 并保存在 AL 寄存器中 (3) 用寄存器 BX 和位移量 21B5H 的变址寻址方式把存储器中的一个字和 CX 相加, 并把结果送回存 储器单元中 址方式 : (4) 用位移量 2158H 的直接寻址方式把存储器中的一个字与数 3160H 相加, 并把结果送回该寄存器中 (5) 把数 25H 与 AL 相加, 结果送回寄存器 AL 中 7. 写出将首地址为 BLOCK 的字数组的第 6 个字送到 CX 寄存器的指令序列, 要求分别使用以下几种寻 (1) 以 BX 的寄存器间接寻址 (2) 以 BX 的寄存器相对寻址 (3) 以 BX SI 的基址变址寻址

幻灯片 1

幻灯片 1 3 8086 Tel:2656809 tjx@csu.edu.cn 2005-9-14 1 2005-9-14 2 8086 8 8086 8086 7 2005-9-14 3 PC 2005-9-14 4 2005-9-14 5 81616 2005-9-14 6 [ ] MOV AX, 3064H AX=3064H 16AX OP 64H 30H 2005-9-14 7 16 AX BX CX

More information

幻灯片 1

幻灯片 1 字符串处理是指对一系列的字母或数字的代码进行相同功能的处理 计算机中字符代码一般都采用 ASCII 码, 每个字符的代码占一个字节, 一组字符串存放在一个连续的存储区中 存放在连续的存储区中的这组字符串, 可看为一个数据块 为了提高对字符串 ( 或数据块 ) 的处理效率,8086/8088 指令系统中专门提供了一组对字符串处理的指令, 这些指令包括 : 字符串传送指令 (MOVS) 字符串比较指令

More information

微机第02章1(指令寻址)

微机第02章1(指令寻址) 微机原理及应用 主讲 : 谢维成 http://xweicheng.ys168.com scxweicheng@yahoo.com.cn 西华大学电气信息学院 1 第 03 章 80X86 的寻址方式和指令 ( 本章内容 ) 3.1 指令的格式 3.2 8086/8088 的寻址方式 3.3 指令系统 3.3.1 数据传送指令 3.3.2 算术运算指令 3.3.3 逻辑运算与移位指令 3.3.4 串操作指令

More information

Microsoft PowerPoint - 05-第五讲-寻址方式.pptx

Microsoft PowerPoint - 05-第五讲-寻址方式.pptx 第五讲 授课教师 : 陆俊林王箫音 2012 年春季学期 主要内容 一 寻址方式概述 二 数据的寻址方式 三 转移地址的寻址方式 教材相关章节 : 微型计算机基本原理与应用 ( 第二版 ) 第 4 章寻址方式与指令系统 1 主要内容 一 寻址方式概述 二 数据的寻址方式 三 转移地址的寻址方式 2 指令的组成 指令由操作码和操作数两部分组成 操作码操作数 MOV AX, 8726H ADD AX,

More information

,768 32,767 32K JMP Jnnn (386+) LOOP CALL [Label:] JMP short/near/far address L10: jmp jmp L20: L10 L20

,768 32,767 32K JMP Jnnn (386+) LOOP CALL [Label:] JMP short/near/far address L10: jmp jmp L20: L10 L20 (Jump) (Loop) (Conditional jump) CMP CALL AND SAR/SHR TEST JMP NOT SAL/SHL Jnnn* OR RCR/ROR LOOP XOR RCL/ROL RETn * nnn, JNE JL -128 127-32,768 32,767 32K JMP Jnnn (386+) LOOP CALL [Label:] JMP short/near/far

More information

指令系统 可分成如下 6 类 : 数据传送指令 算术运算指令 逻辑运算和移位指令 串操作指令 程序控制指令 处理器控制指令 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 2

指令系统 可分成如下 6 类 : 数据传送指令 算术运算指令 逻辑运算和移位指令 串操作指令 程序控制指令 处理器控制指令 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 2 第 3 章 8086 的寻址方式和指令系统 (2) 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 1 3.3 8086 指令系统 可分成如下 6 类 : 数据传送指令 算术运算指令 逻辑运算和移位指令 串操作指令 程序控制指令 处理器控制指令 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 2 3.3.1 数据传送指令 可实现 存储器 立即数 段寄存器 CS DS

More information

Microsoft PowerPoint - 微原-第3章2.ppt [兼容模式]

Microsoft PowerPoint - 微原-第3章2.ppt [兼容模式] 本教案内容 第 3 章 8086CPU 指令系统 1. 汇编语言指令 9. 转移指令 10. 2. 8086 指令分类循环控制指令 11. 子程序调用返回 3. 数据与转移地址的指令寻址方式 12. 中断调用返回指 4. 数据传送类指令令 5. 算术运算类指令 13. 字符串操作指令 6. 逻辑运算类指令 14. I/O 输入输出指令 7. 移位类指令 15. 其它指令 8. 标志位操作指令 16.

More information

数据库系统概论

数据库系统概论 2. 减法指令 8086/8088 共有 5 条减法指令 1 不带 CF 的减法指令 (SUB) 格式 :SUB DST, SRC 功能 :(1)DST (DST)-(SRC) (2) 根据差设置 6 个状态标志 2 带 CF 的减法指令 (SBB) 格式 :SBB DST, SRC 功能 : (1)DST (DST)-(SRC)-CF (2) 根据差设置 6 个状态标志 3 减 1 指令 (DEC)

More information

数据库系统概论

数据库系统概论 所谓寻址方式, 就是指令中用于说明操 作数所在地或者所在地地址的方法 8088/8086 的寻址方式分为两类 : 关于寻找数据的寻址方式 关于寻找转移地址的寻址方式 下面讲关于数据的寻址方式时, 均以数 据传送指令 MOV 为例讲解 MOV 指令格式如下 : MOV DST, SRC 助记符 目的操作数 指令完成的功能 : (DST) 源操作数 (SRC) 一. 关于寻找数据的寻址方式 ( 共 8

More information

数据库系统概论

数据库系统概论 指令系统 是指 CPU 能完成的所有 指令的集合, 它是在 CPU 设计时就确定了的 所以, 对不同的 CPU, 其指令系统中所包含的具体指令将是各不相同的 但 8088/8086 CPU 的指令系统是完全一样的 8088/8086 CPU 的指令系统可分成下面 9 类 : (1) 数据传送指令 ; (2) 算术运算指令 ; (3) 逻辑运算指令 ; (4) 移位指令 ; (5) 标志处理指令和 CPU

More information

Microsoft PowerPoint - 微原-第3章3.ppt [兼容模式]

Microsoft PowerPoint - 微原-第3章3.ppt [兼容模式] 本教案内容 第 3 章 8086CPU 指令系统 1. 汇编语言指令 9. 转移指令 10. 2. 8086 指令分类循环控制指令 11. 子程序调用返回 3. 数据与转移地址的指令寻址方式 12. 中断调用返回指 4. 数据传送类指令令 5. 算术运算类指令 13. 字符串操作指令 6. 逻辑运算类指令 14. I/O 输入输出指令 7. 移位类指令 15. 其它指令 8. 标志位操作指令 16.

More information

主要内容 指令系统的一般概念 指令操作方式操作码的含义指令对操作数的要求指令执行的结果 寻址方式 指令说明 2015 年 3 月 16 日星期一 8 时 2 分 37 秒 2

主要内容 指令系统的一般概念 指令操作方式操作码的含义指令对操作数的要求指令执行的结果 寻址方式 指令说明 2015 年 3 月 16 日星期一 8 时 2 分 37 秒 2 第 3 章 8086 的寻址方式和指令系统 (1) 2015 年 3 月 16 日星期一 8 时 2 分 37 秒 1 主要内容 指令系统的一般概念 指令操作方式操作码的含义指令对操作数的要求指令执行的结果 寻址方式 指令说明 2015 年 3 月 16 日星期一 8 时 2 分 37 秒 2 3.1 8086 的寻址方式 两种不同的类型 : 一类是程序地址 ( 在代码段中 ) 的寻址方式 ; 另一类是操作数地址的寻址方式

More information

3.3.2 算术运算指令 数据类型 : 无符号和有符号整数 无符号数又分成 : 无符号二进制数 ; 无符号压缩十进制 :1 字节表示 2 个十进制数 ; 无符号非压缩十进制 :1 字节表示 1 个十进制数 有符号数 : 有符号二进制数 用补码表示 2015 年 3 月 26 日星期四 11 时 3

3.3.2 算术运算指令 数据类型 : 无符号和有符号整数 无符号数又分成 : 无符号二进制数 ; 无符号压缩十进制 :1 字节表示 2 个十进制数 ; 无符号非压缩十进制 :1 字节表示 1 个十进制数 有符号数 : 有符号二进制数 用补码表示 2015 年 3 月 26 日星期四 11 时 3 第 3 章 8086 的寻址方式和指令系统 (3) 2015 年 3 月 26 日星期四 11 时 3 分 17 秒 1 3.3.2 算术运算指令 数据类型 : 无符号和有符号整数 无符号数又分成 : 无符号二进制数 ; 无符号压缩十进制 :1 字节表示 2 个十进制数 ; 无符号非压缩十进制 :1 字节表示 1 个十进制数 有符号数 : 有符号二进制数 用补码表示 2015 年 3 月 26 日星期四

More information

数据库系统概论

数据库系统概论 2. 减法指令 8086/8088 共有 5 条减法指令 1 不带 CF 的减法指令 (SUB) 格式 :SUB DST, SRC 功能 :(1)DST (DST)-(SRC) (2) 根据差设置 6 个状态标志 2 带 CF 的减法指令 (SBB) 格式 :SBB DST, SRC 功能 : (1)DST (DST)-(SRC)-CF (2) 根据差设置 6 个状态标志 3 减 1 指令 (DEC)

More information

Microsoft PowerPoint - Ch3-8086CPUæ„⁄令系ç»�(3)-æŁ°æ“®ä¼€é•†æ„⁄令

Microsoft PowerPoint - Ch3-8086CPUæ„⁄令系ç»�(3)-æŁ°æ“®ä¼€é•†æ„⁄令 2017 版 微机原理与系统设计 第 3 章 8086CPU 指令系统 董明皓, 博士 西安电子科技大学 dminghao@xidian.edu.cn 目录 (12 课时 ) 1 2 3 4 5 汇编语言基本概念 8086 指令分类数据与转移地址的寻址方式 8086 的六类指令总结 微机原理与系统设计 8086CPU 的指令系统董明皓 dminghao@xidian.edu.cn 2 基础知识引入

More information

3.3.3 逻辑运算和移位指令 1. 逻辑运算指令 运算规则 : 按位操作, 无进 / 借位 对标志位的影响 ( 除 NOT 指令外 ): CF OF SF ZF PF AF 0 0 u 根据运算结果设置 2015 年 3 月 30 日星期一 7 时 57 分 24 秒 2

3.3.3 逻辑运算和移位指令 1. 逻辑运算指令 运算规则 : 按位操作, 无进 / 借位 对标志位的影响 ( 除 NOT 指令外 ): CF OF SF ZF PF AF 0 0 u 根据运算结果设置 2015 年 3 月 30 日星期一 7 时 57 分 24 秒 2 第 3 章 8086 的寻址方式和指令系统 (4) 2015 年 3 月 30 日星期一 7 时 57 分 24 秒 1 3.3.3 逻辑运算和移位指令 1. 逻辑运算指令 运算规则 : 按位操作, 无进 / 借位 对标志位的影响 ( 除 NOT 指令外 ): CF OF SF ZF PF AF 0 0 u 根据运算结果设置 2015 年 3 月 30 日星期一 7 时 57 分 24 秒 2 1)

More information

Microsoft PowerPoint - C15_LECTURE_NOTE_06

Microsoft PowerPoint - C15_LECTURE_NOTE_06 61 Flag-Control 8088/8086 MICROPROCESSOR PROGRAMMING CONTROL FLOW INSTRUCTIONS AND PROGRAM STRUCTURES LAHF SAHF CLC STC CMC CLI STI Load AH from flags Store AH into flags Clear carry flag Set carry flag

More information

Microsoft PowerPoint - C15_LECTURE_NOTE_06

Microsoft PowerPoint - C15_LECTURE_NOTE_06 8088/8086 MICROPROCESSOR PROGRAMMING CONTROL FLOW INSTRUCTIONS AND PROGRAM STRUCTURES 8088/8086 MICROPROCESSOR PROGRAMMING CONTROL FLOW INSTRUCTIONS AND PROGRAM STRUCTURES 61 Flag-Control 62 Compare 63

More information

Microsoft PowerPoint - CH2_1.ppt [兼容模式]

Microsoft PowerPoint - CH2_1.ppt [兼容模式] 第二章微型计算机指令系统 IA-16 微机系统结构 - 工作原理 8086/8088 微处理器周期性地执行指令 时钟 /T 周期 指令周期 总线周期 ( 内部操作 / 总线操作 ) 指令 --- 微机算术 逻辑和控制功能的实现基础 重点 : 信息交换方法 ( 数据流 ), 程序流控制 *11 目标地址传送 * 寻址方式 2 标志传送 3 转移控制 ( 转移指令 过程调用 中断 ) 微机系统与接口东南大学

More information

Microsoft PowerPoint - CH2_1.ppt [兼容模式]

Microsoft PowerPoint - CH2_1.ppt [兼容模式] 第二章微型计算机指令系统 IA-16 微机系统结构 - 工作原理 8086/8088 微处理器周期性地执行指令时钟 /T 周期 指令周期 总线周期 ( 内部操作 / 总线操作 ) 指令 --- 微机算术 逻辑和控制功能的实现基础 重点 : 信息交换方法 ( 数据流 ), 程序流控制 *1 目标地址传送 * 寻址方式 2 标志传送 3 转移控制( 转移指令 过程调用 中断 ) 微机系统与接口东南大学

More information

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63>

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63> 第三章 Q3 1 1. 省略了 I/O 操作的复杂逻辑, 易实现, 耗费低 ; 2. 可以利用丰富的内存寻址模式实现灵活的 I/O 操作 Q3 2 假设存储单元 ds1 处寄存器地址为 0x2000, 代码如下 #define ds1 0x2000 while ( *ds1 == 0 ) ; Q3 3 假设设备 (dev1) 中有两个寄存器 ds1 和 dd1,dev1 的地址为 0x1000,ds1

More information

<4D6963726F736F667420576F7264202D20C7B6C8EBCABDCFB5CDB3C9E8BCC6CAA6B0B8C0FDB5BCD1A75FD1F9D5C22E646F63>

<4D6963726F736F667420576F7264202D20C7B6C8EBCABDCFB5CDB3C9E8BCC6CAA6B0B8C0FDB5BCD1A75FD1F9D5C22E646F63> 因 为 路 过 你 的 路, 因 为 苦 过 你 的 苦, 所 以 快 乐 着 你 的 快 乐, 追 逐 着 你 的 追 逐 内 容 简 介 本 书 根 据 2005 年 下 半 年 实 施 的 全 国 计 算 机 技 术 与 软 件 专 业 技 术 资 格 ( 水 平 ) 考 试 嵌 入 式 系 统 设 计 师 级 考 试 大 纲 精 神, 在 深 入 研 究 历 年 计 算 机 技 术 与 软

More information

Microsoft Word - em78 sub program.doc

Microsoft Word - em78 sub program.doc 一 二进制数转换为 ASCⅡ 码 将一个字节的二进制数转换为两位 16 进制数的 ASCⅡ 码 main: mov a,@0x9f ; 二进制数为 0x9f mov 0x30,a ; 二进制数存入 0x30 mov a,@0x02 mov 0x10,a ;0x10 中存放转换次数 mov a,@0x31 mov 0x04,a ;0x04 中为转换后数据存放地址 mov a,0x30 B1: ; 取

More information

untitled

untitled 8086/8088 CIP /. 2004.8 ISBN 7-03-014239-X.... TP313 CIP 2004 086019 16 100717 http://www.sciencep.com * 2004 8 2004 8 1 5 500 787 1092 1/16 16 1/2 391 000 1 2 ii 1 2 CAI CAI 3 To the teacher To the student

More information

Microsoft PowerPoint - Ch3-8086CPU指令系统(2)-寻址.pptx

Microsoft PowerPoint - Ch3-8086CPU指令系统(2)-寻址.pptx 2018 版 微机原理与系统设计 第 3 章 8086CPU 指令系统 董明皓, 博士 西安电子科技大学 dminghao@xidian.edu.cn 目录 1 2 3 4 5 汇编语言基本概念 8086 指令分类数据与转移地址的寻址方式 8086 的六类指令总结 2 目录 1 2 3 4 5 汇编语言基本概念 8086 指令分类数据与转移地址的寻址方式 8086 的六类指令总结 3 8086 指令分类

More information

CH559指令周期.doc

CH559指令周期.doc CH55X 汇编指令周期表 CH55X 汇编指令概述 : 型号包含 : a. 指令单周期型号 :CH557 CH558 CH559; b. 指令 4 周期型号 :CH551 CH552 CH553 CH554; c. 非跳转指令的指令周期数与指令字节数相同 ; d. 跳转指令含 MOVC/RET/CALL 通常比字节数多若干个周期 ; e.movc 指令多 4 或 5 个周期 ( 下条指令地址为奇数时多

More information

Microsoft PowerPoint - C15_LECTURE_NOTE_05.ppt

Microsoft PowerPoint - C15_LECTURE_NOTE_05.ppt 8088/8086 MICROPROCESSOR PROGRAMMING INTEGER INSTRUCTIONS AND COMPUTATIONS 8088/8086 MICROPROCESSOR PROGRAMMING INTEGER INSTRUCTIONS AND COMPUTATIONS 5.1 Data-Transfer Instructions 5.2 Arithmetic Instructions

More information

Microsoft PowerPoint - C15_LECTURE_NOTE_05.ppt

Microsoft PowerPoint - C15_LECTURE_NOTE_05.ppt 8088/8086 MICROPROCSOR PROGRAMMING INTEGER INSTRUCTIONS AND COMPUTATIONS The MOVE The move (MOV) instruction is used to transfer a byte or a word of data from a source operand to a destination operand

More information

MSP430ϵÁе¥Æ¬»úµÄÖ¸Áîϵͳ.pps [¼æÈÝģʽ]

MSP430ϵÁе¥Æ¬»úµÄÖ¸Áîϵͳ.pps [¼æÈÝģʽ] 作者 : 利尔达 MSP430 系列单片机的指令系统 1 CPU 内核组成 : 16 位的 (ALU) 算术运算单元 16 个寄存器 (PC SP SR R4~R15) 指令控制单元 2 存储器组织结构 3 外围模块寄存器地址 它们被分配在相应的字模块或字节模块当中 分配在 00-FFH 中为字节, 分配在 100-1FFH 中为字 4 寻址模式 : 5 指令格式 : 1) 书写格式标号指令助记符源操作数,

More information

本次习题课中提到的 课本, 均指机械工业出版社的 Intel 微处理器 ( 原书第八版 ) 中文版, 使用其他版本课本的同学需要自己对应

本次习题课中提到的 课本, 均指机械工业出版社的 Intel 微处理器 ( 原书第八版 ) 中文版, 使用其他版本课本的同学需要自己对应 微机原理习题课 助教 : 王骏腾 本次习题课中提到的 课本, 均指机械工业出版社的 Intel 微处理器 ( 原书第八版 ) 中文版, 使用其他版本课本的同学需要自己对应 习题 33:Core2 处理器可寻址 存储器? 答案 :4GB 64GB 1TB ( 课本 P18 表 1-6) 第一章 习题 53: 信号的作用是什么? 答案 :I/O 读控制, 低电平有效 ( 两点都要答上, 详细可见课本 P20)

More information

微型计算机原理及应用试题 机电96

微型计算机原理及应用试题   机电96 微 机 原 理 试 题 ( 一 ) 总 分 : 一 : 单 项 选 择 题 ( 每 题 1 分, 共 10 分 ) 1. 微 型 计 算 机 中 主 要 包 括 有 ( ) A) 微 处 理 器 存 储 器 和 I/O 接 口 B) 微 处 理 器 运 算 器 和 存 储 器 C) 控 制 器 运 算 器 和 寄 存 器 组 D) 微 处 理 器 运 算 器 和 寄 存 器 2. DMA 控 制 器

More information

Microsoft Word - Ö¸Á.doc

Microsoft Word - Ö¸Á.doc 指令集说明 注 由于资源大小问题 其中以下几款 MCU 只有 62 条指令 其余均为 63 条指令 HT48CA0/HT48RA0A 无 RETI 指令 HT48R05A-1 无 TABRDL 指令 指令寻址方式有下面 5 种 立即寻址 此一寻址法是将立即的常数值紧跟在运算码 (opcode) 后 例如 MOV A, 33H ADD A, 33H 直接寻址 直接寻址的情況只允许在存储器之间作数据传送

More information

42 2141601026 2016 11 27 2 1.1............................................. 2 1.2....................................... 2 1.2.1......................................... 2 1.3.............................................

More information

习 题 一

习  题  一 第 1 页共 13 页 微机原理与接口技术 A 卷 一 填空题 ( 共计 20 分 每个空 2 分 ) 1 已知 [X] 补 =01100011B, 求 X=( ) ( 结果用十进制表示 ) [Y] 补 =11111001B, 求 Y=( ) ( 结果用十进制表示 ) 2 8088CPU 的地址总线为多少条 ( ); 直接寻址的内存空间为多少 ( ) 3 已知 DS=2000H, 内存 (20200H)=FFH,(20201H)=22H

More information

一、填空题

一、填空题 微机原理及汇编语言复习题一 选择题 1. 完整的计算机系统应包括 ( ) A. 运算器 控制器 寄存器组 总线接口 B. 外设和主机 C. 主机和应用程序 D. 配套的硬件设备和软件系统 2. 计算机系统中的存储器系统是指 ( ) A.RAM B.ROM C. 主存储器 D. 内存和外存 3. 机器语言是指 ( ) A. 用英语缩写词表示的面向机器的程序设计语言 B. 用二进制代码表示的程序设计语言

More information

共同构成 16 位数据存储单元的地址 当 CPL=1 时, 将堆栈指针 SP 的 16 位地址 与指令中的 7 位地址相加, 形成 16 位的数据存储器地址 (2) 当 SP=0100h, 偏移地址为 50h 时, 寻址 0150h 单元 ; 当 DP=2, 偏移地址为 50h 时, 寻址 0150

共同构成 16 位数据存储单元的地址 当 CPL=1 时, 将堆栈指针 SP 的 16 位地址 与指令中的 7 位地址相加, 形成 16 位的数据存储器地址 (2) 当 SP=0100h, 偏移地址为 50h 时, 寻址 0150h 单元 ; 当 DP=2, 偏移地址为 50h 时, 寻址 0150 DSP 原理与应用教程 ( 张卫宁著 ) 课后习题答案第 3 章 (2014 年 10 月整理 刘忠国 ) 第三章习题答案 : 作业 :3.2, 3.6, 3.7,3.8, 3.11, 3.17, 3.19,3.21 3.1. TMS320C54x 的数据空间寻址方式各有什么特点? 应该应用在什么场合? ( 教材涉及特点较少 ) 答 :TMS320C54x 有 7 种基本的数据寻址方式 : 立即寻址,

More information

第5章:汇编语言程序设计

第5章:汇编语言程序设计 第 5 章 : 汇编语言程序设计 程 汇编语言指令格式 系统伪指令 存储器选择方式 常用子程序 1 汇编语言程序设计 PIC 指令系统 语言系统 指 CPU 编 器语言 器语言 器语言 设计 用 语言 设计 语言 汇编语言 2 汇编语言指令格式 汇编语言指令格式 ( 指令 ) label opcode operand comment 指令 用 存 指令 指令语 3 汇编语言指令格式 1 指令 用 指令

More information

PowerPoint Presentation

PowerPoint Presentation 一. 上机环境 应用软件系统软件硬件 4.5 汇编语言程序设计上机步骤与调试方法 用户程序 :ABC.exe 等 操作系统 :DOS 系统编辑器 : EDIT.exe 编程序 : MASM.exe 连接程序 :LINK.exe 调试程序 :DEBUG.exe CPU 存储器 (ROM RAM) I/O 接口 输入 输出设备 编辑源程序 EDIT ABC.ASM 二. 上机步骤 1 D:>EDIT ABC.ASM

More information

第十章 数模转换与模数转换接口及其应用

第十章 数模转换与模数转换接口及其应用 第三章 80X86 指令系统 ( 补 ) 1 80x86 的寻址方式和指令系统 一 80x86 的寻址方式二 80x86 的指令系统三浮点运算指令简介四 MMX 技术简介 一 80x86 的寻址方式 (1) 直接寻址方式如 : INC WORD PTR [500] ; 字的有效地址为 500 (2) 寄存器间接寻址方式如 : MOV [ECX],EDX ;ECX 指出有效地址 一 80x86 的寻址方式

More information

<4D F736F F D20C7B0CBC4D5C2D7F7D2B5CCE22E646F6378>

<4D F736F F D20C7B0CBC4D5C2D7F7D2B5CCE22E646F6378> 第一章第二章 Q2 1: 高序 : 最低位字节存储在字的最低位 ; 低序 : 最低位字节存储在字的最高位 ; Q2 2: 冯. 诺依曼结构 : 数据和指令都存储在同一存储器中 ; 哈佛结构 : 数据和程序存储在各自独立的存储器中 Q2 3: a) ARM 有 16 个通用寄存器,r0 r15, 其中 r15 还被用作程序计数器 b) CPSR 是程序状态寄存器, 包含了条件码标识 中断禁止位 当前处理器模式和其他状态

More information

(2) Function 0BH: Function 0CH: (pixel, picture element) Function 0DH: Function 0FH: Function 13H:

(2) Function 0BH: Function 0CH: (pixel, picture element) Function 0DH: Function 0FH: Function 13H: (1) INT 10H Function 00H: Function 01H: Function 02H: Function 03H: Function 05H: Function 06H: Function 07H: Function 08H: Function 09H: Function 0AH: (2) Function 0BH: Function 0CH: (pixel, picture element)

More information

<4D F736F F F696E74202D D D6B8C1EECFB5CDB DC6E4CBFBD6B8C1EE2E BBCE6C8DDC4A3CABD5D>

<4D F736F F F696E74202D D D6B8C1EECFB5CDB DC6E4CBFBD6B8C1EE2E BBCE6C8DDC4A3CABD5D> 2018 版 微机原理与接口技术 第三章 8086CPU 指令系统 董明皓 dminghao@xidian.edu.cn 1 2 3 4 5 汇编语言基本概念汇编语言指令分类数据与转移地址的寻址方式 8086 的六类指令总结 1 2 3 4 5 汇编语言基本概念汇编语言指令分类数据与转移地址的寻址方式 8086 的六类指令总结 4. 8086 的指令系统 b b b b b 数据传送指令算术运算指令逻辑运算指令移位

More information

組譯與連結(Ver6

組譯與連結(Ver6 Intel 8088/86 CPU GND 1 40 VCC GND 1 40 VCC A14 2 39 A15 AD14 2 39 AD15 A13 3 38 A16/S3 AD13 3 38 A16/S3 A12 4 37 A17/S4 AD12 4 37 A17/S4 A11 5 36 A18/S5 AD11 5 36 A18/S5 A10 A9 6 7 35 34 A19/S6 SS0 (

More information

L15 MIPS Assembly

L15 MIPS Assembly Lecture 19: MIPS Assembly Language 程序的机器级表示主要内容 MIPS 指令格式 R- 类型 / I- 类型 / J- 类型 MIPS 寄存器 长度 / 个数 / 功能分配 MIPS 操作数 寄存器操作数 / 存储器操作数 / 立即数 / 文本 / 位 MIPS 指令寻址方式 立即数寻址 / 寄存器寻址 / 相对寻址 / 伪直接寻址 / 偏移寻址 MIPS 指令类型

More information

微机系统与接口--第2章 ppt

微机系统与接口--第2章 ppt 第二章微型计算机指令系统 指令 ------ 实现微机算术 逻辑运算和控制功能 重点 : *1 存储器寻址方式 2 标志传送 3 转移控制( 转移指令 过程调用 中断 ) 1 指令 (Instruction) 指令集或指令系统 (Instruction Set) 指令的表示 指令与指令系统 指示 CPU 执行某种规定操作的命令 某一 CPU 所能执行的全部指令的集合 定义了程序员能使硬件完成的基本操作

More information

第四章 8086汇编语言程序设计

第四章 8086汇编语言程序设计 第四章汇编语言程序设计 几个概念 8086 汇编语言的语句 8086 汇编中的伪指令 8086 汇编中的运算符 汇编语言程序设计 系统调用 几个概念 1. 汇编语言 2. 汇编语言源程序 3. 汇编 4. 汇编程序 5. 什么是汇编语言 (Assembly Language)? 6. 使用指令的助记符 符号地址和标号等编写的程序设计语言 7. 每条指令都有对应的机器码, 不同的 CPU 使用不同的汇编语言

More information

1. 介绍 义隆 8 位单片机指令介绍 Application Notes 义隆 8 位单片机指令介绍 EM78/EM88 系列是基于 RISC 的精简指令微控制器, 每条指令是 13 位 15 位, 除 LCALL LJMP MOV R2,A ADD R2,A 改变 PC 指针的指令是 2 个指令

1. 介绍 义隆 8 位单片机指令介绍 Application Notes 义隆 8 位单片机指令介绍 EM78/EM88 系列是基于 RISC 的精简指令微控制器, 每条指令是 13 位 15 位, 除 LCALL LJMP MOV R2,A ADD R2,A 改变 PC 指针的指令是 2 个指令 1. 介绍 Application Notes EM78/EM88 系列是基于 RISC 的精简指令微控制器, 每条指令是 13 位 15 位, 除 LCALL LJMP MOV R2,A ADD R2,A 改变 PC 指针的指令是 2 个指令 * 周期, 其余为单指令周期 ( 部分第一代芯片 JMP CALL RET RETL RETI JBS JBC JZ JZA DJZ DJZA 指令为 2

More information

Microsoft PowerPoint sun-arm isa2.ppt [Compatibility Mode]

Microsoft PowerPoint sun-arm isa2.ppt [Compatibility Mode] 嵌入式系统设计与应用 第二章 ARM 指令系统 (2) 西安交通大学电信学院 孙宏滨 汇编伪指令 汇编伪指令 : 在 ARM 汇编语言里, 有一些特殊指令助记符, 没有相对应的操作码 ( 或直接对应指令 ) 通常称这些特殊指令助记符为伪指令, 它们所完成的操作叫做伪操作 伪指令在源程序中的作用是为完成汇编程序作各种准备工作 这些伪指令仅在汇编过程中起作用, 一旦汇编结束, 伪指令的使命完成 ADR:

More information

微机原理(计算机原理与接口技术)

微机原理(计算机原理与接口技术) 微机原理 ( 计算机原理 ) 第 10 讲 MIPS 体系结构与编程 1 第 10 讲 MIPS 体系结构与编程 MIPS 体系结构概述 MIPS 指令集简介 MIPS 汇编语言程序设计 2 MIPS 体系结构概述 MIPS 诞生于 1980 年代, 是最早的 RISC 处理器之一, 也是目前销量最好的 RISC 处理器之一, 从游戏机到路由器, 再到 SGI 的超级计算机, 都可以看到 MIPS

More information

DPJJX1.DOC

DPJJX1.DOC 8051 111 2K 1 2 3 ' ' 1 CPU RAM ROM / A/D D/A PC CPU 40 68 10 20 8 51 PIII 8051 2 MCS51 8051 8031 89C51 8051 8031 89C51? MCS51 INTEL INTEL 8031 8051 8751 8032 8052 8752 8051 8051 8051 MCS51 8031 8031

More information

Microsoft PowerPoint - CH3_3.ppt [只读] [兼容模式]

Microsoft PowerPoint - CH3_3.ppt [只读] [兼容模式] 第三章汇编语言程序设计 ( 三 ) Assembly Language Programming(3) 格式 # 伪指令 # DOS/BIOS 调用 ( 简单了解 ) 重点 : 数据结构表示 程序结构 变量 指针 程序流控制 ( 条件 分支 循环 ) 程序设计方法 ----- 程序设计举例 微机系统与接口东南大学 1 DATA 汇编语言程序举例 (1) 分块传送 SEGMENT STRG DB 256

More information

提纲. 1 实验准备. 2 从实模式进入保护模式. 3 小结 陈香兰 ( 中国科学技术大学计算机学院 ) 软件综合实验之操作系统 July 1, / 11

提纲. 1 实验准备. 2 从实模式进入保护模式. 3 小结 陈香兰 ( 中国科学技术大学计算机学院 ) 软件综合实验之操作系统 July 1, / 11 .. 软件综合实验之操作系统 进入保护模式 陈香兰 中国科学技术大学计算机学院 July 1, 2016 陈香兰 ( 中国科学技术大学计算机学院 ) 软件综合实验之操作系统 July 1, 2016 1 / 11 提纲. 1 实验准备. 2 从实模式进入保护模式. 3 小结 陈香兰 ( 中国科学技术大学计算机学院 ) 软件综合实验之操作系统 July 1, 2016 2 / 11 实验准备 实验环境准备

More information

Microsoft Word - 新1-3.doc

Microsoft Word - 新1-3.doc 模块三 80C51 的指令系统和程序设计 (1) 了解 80C51 指令系统的构成 (2) 掌握 80C51 单片机的寻址方式 (3) 掌握 80C51 单片机的各种指令及其应用 (4) 掌握汇编语言程序设计方法, 为以后实际控制系统的程序设计奠定基础 3.1 80C51 指令系统概述 对于任何一台计算机, 如果只有硬件 ( 称为裸机 ), 而没有软件 ( 即程序 ) 的支持是不能工作的 单片机也不例外,

More information

今天刚发现的, 比较简单, 于是就来简单分析下吧 该感染样本很简单, 新加了个区段放病毒执行代码, 执行病毒代码, 最后跳回原入口点来执行原文件 下面就是感染后的代码的简单分析 : ; =============== S U B R O U T I N E =====================

今天刚发现的, 比较简单, 于是就来简单分析下吧 该感染样本很简单, 新加了个区段放病毒执行代码, 执行病毒代码, 最后跳回原入口点来执行原文件 下面就是感染后的代码的简单分析 : ; =============== S U B R O U T I N E ===================== 吾爱破解论坛 [LCG] [LSG] 立足软件安全和病毒分析最前端, 丰富的技术版块交相辉映, 由无数加密解密及反病毒爱好者共同维护, 留给世界一抹值得百年回眸的惊 艳, 沉淀百年来计算机应用之精华与优雅, 信息线条与生活质感淡定交融, 任岁月流转, 低调而奢华的技术交流与研究却是亘古不变 标题 : 一个感染样本的简单分析 作者 :ximo 今天刚发现的, 比较简单, 于是就来简单分析下吧 该感染样本很简单,

More information

PIC8位单片机汇编语言常用指令的识读(上)

PIC8位单片机汇编语言常用指令的识读(上) PIC8 位单片机汇编语言常用指令的识读 ( 上 ) 各大类单片机的指令系统是没有通用性的, 它是由单片机生产厂家规定的, 所以用户必须遵循厂家规定的标准, 才能达到应用单片机的目的 PIC 8 位单片机共有三个级别, 有相对应的指令集 基本级 PIC 系列芯片共有指令 33 条, 每条指令是 12 位字长 ; 中级 PIC 系列芯片共有指令 35 条, 每条指令是 14 位字长 ; 高级 PIC

More information

一 汇编语言计算机基础 从事计算机科学方面的工作, 汇编语言是我们必不可少缺的基础 我们的工作平台 研究对象都是机器, 而汇编语言是人和计算机沟通的最直接方式, 它描述了机器最终所要执行的指令序列 学习汇编语言可以让你充分获得底层编程的体验, 深刻理解机器运行程序的机理 二 基础知识 1. 汇编语言

一 汇编语言计算机基础 从事计算机科学方面的工作, 汇编语言是我们必不可少缺的基础 我们的工作平台 研究对象都是机器, 而汇编语言是人和计算机沟通的最直接方式, 它描述了机器最终所要执行的指令序列 学习汇编语言可以让你充分获得底层编程的体验, 深刻理解机器运行程序的机理 二 基础知识 1. 汇编语言 ABeen 汇编语言 学习摘要 ABeen 学习记录 --- 汇编语言篇 QQ: 155235900 1 / 8 一 汇编语言计算机基础 从事计算机科学方面的工作, 汇编语言是我们必不可少缺的基础 我们的工作平台 研究对象都是机器, 而汇编语言是人和计算机沟通的最直接方式, 它描述了机器最终所要执行的指令序列 学习汇编语言可以让你充分获得底层编程的体验, 深刻理解机器运行程序的机理 二 基础知识 1.

More information

<4D F736F F D20CEA2BBFAD4ADC0EDC8EDBCFECAB5D1E9D6B8B5BCCAE92E646F63>

<4D F736F F D20CEA2BBFAD4ADC0EDC8EDBCFECAB5D1E9D6B8B5BCCAE92E646F63> 软件实验 实验 1 汇编程序的编写与调试实验 一 实验目的 1. 熟练掌握 DEBUG 的常用命令, 学会用 DEBUG 调试程序 2. 深入了解数据在存储器中的存取办法, 及堆栈中数据的压入和弹出 3. 掌握各种寻址办法以及简单指令的执行过程 二 实验内容 1. 设堆栈指针 SP=2000H,AX=3000H,BX=5000H, 请编一程序段将 AX 的内容和 BX 的内容进行交换 请用堆栈作为两寄存器交换内容的中间存储单元,

More information

Microsoft Word - 作业2008.doc

Microsoft Word - 作业2008.doc 微机系统与接口 课程作业(2007-2008) ( 标清题号无须抄题 ) 习题一 ( 第 1 章 ) 1. 写出下列二进制数的原码 反码和补码 ( 设字长为 8 位 ): ⑴ +010111 ⑵ +101011 ⑶ -101000 ⑷ -111111 2. 当下列各二进制分别代表原码 反码和补码时, 其等效的十进制数值为多少? ⑴ 00001110 ⑵ 11111111 ⑶ 10000000 ⑷ 10000001

More information

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例 帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例 这篇文章主要介绍了帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例, 本文还详细介绍了帝国 CMS 数据库类中的一些常用方法, 需要的朋友可以参考下 例 1: 连接 MYSQL 数据库例子 (a.php)

More information

1 CPU interrupt INT trap CPU exception

1 CPU interrupt INT trap CPU exception 1 CPU interrupt INT trap CPU exception 2 X86 CPU gate 64 16 1 2 5 8 16 16 P DPL 00101 TSS 101 DPL P 1 64 16 1 2 1 1 3 3 5 16 16 16 P DPL 0 D 000 16 110 111 100 D 1=32 0=16 DPL P 1 INT DPL1>=CPL>=DPL CPU

More information

<4D F736F F F696E74202D DB5DAB0CBBDB22DBBE3B1E0D3EFD1D4B3CCD0F22E >

<4D F736F F F696E74202D DB5DAB0CBBDB22DBBE3B1E0D3EFD1D4B3CCD0F22E > 第八讲 授课教师 : 陆俊林王箫音 2012 年春季学期 主要内容 一 汇编语言的主要特点 二 汇编语言程序的结构 三 汇编语言的基本语法 四 汇编语言程序的开发调试 教材相关章节 : 微型计算机基本原理与应用 ( 第二版 ) 第 5 章汇编语言的基本语法第 6 章汇编语言程序设计及应用 1 主要内容 一 汇编语言的主要特点 二 汇编语言程序的结构 三 汇编语言的基本语法 四 汇编语言程序的开发调试

More information

图 内部结构图 8251 的外部引脚如图 所示, 共 28 个引脚, 每个引脚信号的输入输出方式如图中的箭 头方向所示

图 内部结构图 8251 的外部引脚如图 所示, 共 28 个引脚, 每个引脚信号的输入输出方式如图中的箭 头方向所示 实验题目 : 串行接口芯片 8251 实验目的 : 1. 掌握 8251 的工作方式及应用 2. 了解有关串口通讯的知识 串行接口芯片 8251 3. 掌握使用 8251 实现双机通讯的软件编程和电路连接 实验设备 : IA-32 架构的微机系统及应用教学平台两套 实验原理 : 1. 8251 的基本性能 性能 : 8251 是可编程的串行通信接口, 可以管理信号变化范围很大的串行数据通信 有下列基本

More information

06721 main() lock pick proc() restart() [2][4] MINIX minix2.0 GDT, IDT irq table[] CPU CPU CPU CPU (IDTR) idt[] CPU _hwint00:! Interrupt

06721 main() lock pick proc() restart() [2][4] MINIX minix2.0 GDT, IDT irq table[] CPU CPU CPU CPU (IDTR) idt[] CPU _hwint00:! Interrupt MINIX ( 730000) ( 730000) MINIX MINIX2.0 MINIX : MINIX TP3 1 MINIX UNIX Tanenbaum UNIX MINIX LINUX MINIX MINIX MINIX1.0 UNIX V7 MINIX2.0[3] POSIX MINIX3 MINIX Gabriel A. Wainer 1994-1995 [5] 1998 I/O 2002

More information

主要内容 : 汇编语言源程序的结构汇编语言语句格式伪指令语句功能调用汇编语言程序设计方法宏汇编和条件汇编 2015 年 3 月 30 日星期一 7 时 58 分 57 秒 2

主要内容 : 汇编语言源程序的结构汇编语言语句格式伪指令语句功能调用汇编语言程序设计方法宏汇编和条件汇编 2015 年 3 月 30 日星期一 7 时 58 分 57 秒 2 第 4 章 汇编语言程序设计 (1) 2015 年 3 月 30 日星期一 7 时 58 分 56 秒 1 主要内容 : 汇编语言源程序的结构汇编语言语句格式伪指令语句功能调用汇编语言程序设计方法宏汇编和条件汇编 2015 年 3 月 30 日星期一 7 时 58 分 57 秒 2 机器语言 二进制数形式的指令和数据 B0 64 是什么意思? 这就是机器语言 既不直观, 又不易理解和记忆. MOV

More information

<4D F736F F D20B5DA33D5C D A3A84CA3A9B5C4D6B8C1EECFB5CDB32E646F6378>

<4D F736F F D20B5DA33D5C D A3A84CA3A9B5C4D6B8C1EECFB5CDB32E646F6378> AVR 单片机 C 语言开发入门与典型实例 ( 修订版 ) 作者 : 华清远见 第 3 章 ATmega128(L) 的指令系统 本章目标 本章主要介绍 ATmega128(L) 的指令系统, 首先分析 ATmega128(L) 的 指令的特点 分类和寻址方式, 并详细介绍了指令系统的每条指令, 最后介绍了 ATmega128(L) 汇编语言的一些基本知识 本章的主要内容有以下几个方面 指令系统的特点

More information

Microsoft PowerPoint - os_4.ppt

Microsoft PowerPoint - os_4.ppt 行 程 資 科 系 林 偉 川 行 程 概 念 行 程 與 程 式 主 要 的 不 同 點 : 程 式 是 被 放 在 外 部 的 儲 存 裝 置 如 磁 碟 上, 而 行 程 則 被 放 在 記 憶 體 中 程 式 在 儲 存 裝 置 中 是 靜 態 的, 而 行 程 在 記 憶 體 中 是 動 態 的, 它 會 隨 著 一 些 事 件 的 發 生 而 產 生 相 對 的 改 變 行 程, 就 是

More information

微机第02章1(指令寻址)

微机第02章1(指令寻址) 微机原理及应用 主讲 : 谢维成 http://xweicheng.ys168.com scxweicheng@yahoo.com.cn 西华大学电气信息学院 1 2 课程介绍 课程性质 : 必修, 电类专业 ( 信息工程 电气工程 测控技术 应用电子 ) 学科专业技术基础基础课学时 : 授课 48 学时 (3.5 学分 ), 实验 10 学时 ( 单独 ) 考试 : 题库命题统考 ( 笔试 作业实验

More information

第0章 硬件部分试题分析和解题方法

第0章  硬件部分试题分析和解题方法 1 计算机专业研究生入学考试 全真题解 (2003 版 ) 硬件分册 介绍与预览 2003 版 全真题解 丛书进行的改进 目录 硬件分册目录 1 硬件分册第 0 章 4 结构方面 : 1: 改变了原书的例题循序, 对所有题目进行了深入地分析, 寻找 到内在联系, 按找合理的顺序组织例题, 这样使读者在复习的时候, 可以找到循序渐进, 深入浅出的感觉 2: 对于例题的讲解, 我们增加了深入的分析, 使读者可以了解到

More information

Microsoft Word - 1 page0.doc

Microsoft Word - 1  page0.doc 社 心 版 中 出 版 学 科 术出 k.cn o 技 o b 教 a. 职 ww w 高等教育 十二五 规划教材 汇编语言程序设计教程 雷印胜贾萍胡晓鹏等编著 北京 内容简介 秉承知识的系统性 完整性和严谨性的宗旨, 我们编写了本书 为了便于教学安排和循序渐进地学习知识, 本书以 Intel 8086/8088 16 位微处理器为基础, 探寻 Intel 主流系列高性能微机的技术发展方向, 从实用角度通过大量实例,

More information

Microsoft Word - 实验8_ADDA.doc

Microsoft Word - 实验8_ADDA.doc 一. 实验目的 实验八数模与模数转换 (1) 了解数 / 模转换器的基本原理, 掌握 DAC0832 芯片的使用方法 (2) 了解模 / 数转换的基本原理, 掌握 ADC0809 的使用方法 二. 实验环境 1. 硬件环境 微型计算机 (Intel x86 系列 CPU) 一台, 清华科教仪器厂 TPC-2003A 微机接口实验装置一台 ; 数字 2. 软件环境 记忆示波器一台, 万用表一台 (1)Windows

More information

学习MSP430单片机推荐参考书

学习MSP430单片机推荐参考书 MSP430 16 MSP430 C MSP430 C MSP430 FLASH 16 1 CPU 16 ALU 16 PC SP SR R4~R15 2 3 00-FFH 100-1FFH 4 5 1 2 51 24 27 6 1 2 3 4 5 6 4 12 SR SP SR CPU SR CPU C Z N GIE CPUOff CPU OscOff SCG0 SCG1 CPU EXIT SP

More information

一、单选题(本大题共15小题,每小题1分,共15分)

一、单选题(本大题共15小题,每小题1分,共15分) 北京大学信息科学技术学院考试试卷 科目 : 微机原理 A 姓名 : 学号 : 题号一二三四五六七八总分 分数 阅卷人 考试时间 : 2010 年 1 月 8 日任课教师 : 王克义装订线内请勿答题考场纪律 1. 请持学生证入场考试, 并按指定座位就座 ; 除必要的文具和教师指定的用具用书外, 其他所有物品包括手机 呼机 MP3 电子词典 书籍 笔记 纸张等严禁带入座位, 必须放在指定位置 凡有试题印制问题请向监考教师提出,

More information

Microsoft Word - Syllabus of Assembly Programming_new.doc

Microsoft Word - Syllabus of Assembly Programming_new.doc 目 录 汇编语言教学提纲... 4 一学习目的... 4 二教材... 4 三学分... 4 四实验环境及软件 :... 4 五考试方式及成绩评定办法... 4 六项目选题参考方案 :... 4 七项目提交方式... 5 第一部分 PC 硬件和软件的基本知识 ( 原版教材的 Part A)... 6 第一节常用数制... 6 1) 2 进制数... 6 2) 16 进制数... 6 第二节数据表示...

More information

器之 间 向一致时为正 相反时则为负 ③大量电荷的定向移动形成电 流 单个电荷的定向移动同样形成电流 3 电势与电势差 1 陈述概念 电场中某点处 电荷的电势能 E p 与电荷量 q Ep 的比值叫做该点处的电势 表达式为 V 电场中两点之间的 q 电势之差叫做电势差 表达式为 UAB V A VB 2 理解概念 电势差是电场中任意两点之间的电势之差 与参考点的选择无关 电势是反映电场能的性质的物理量

More information

Introduction to Computer Systems /18-243, spring st Lecture, Jan. 12th

Introduction to Computer Systems /18-243, spring st Lecture, Jan. 12th 计算机组成原理习题课 1 授课老师 : 王浩宇 haoyuwang@bupt.edu.cn 1 练习 : 机器数的表示和相互转化 练习 1: 当十六进制数 9B 和 FF 分别表示为原码 补码 反码 移码和无符号数时, 所对应的十进制数各为多少 ( 设机器数采用一位符号位 )? 16 进制 真值 无符号数 原码 ( 真值 ) 反码 ( 真值 ) 补码 ( 真值 ) 移码 ( 真值 ) 9BH 二进制十进制

More information

Ch2.1

Ch2.1 2.1 指令系统 王超 中国科学技术大学计算机学院嵌入式系统实验室 2019 年春 主要内容 1. 指令系统概述 1.1 指令系统的发展 1.2 指令系统的性能要求 1.3 编程语言与硬件的关系 2. 指令格式 2.1 指令的一般格式 2.2 指令字长 2.3 指令助记符 3. 操作数与操作类型 3.1 操作数类型 3.2 数据在存储器中的存储方式 3.3 操作类型 4. 寻址方式 4.1 指令寻址

More information

Linux kernel exploit研究和探索

Linux kernel exploit研究和探索 Linux kernel exploit DOC alert7 PPT e4gle 2002-12-2 1 2002-12-2 2 Linux kernel exploit kernel exploit exploit exploit exploit (Kernel Buffer Overflow) (Kernel

More information

Microsoft PowerPoint - 5. 指针Pointers.ppt [兼容模式]

Microsoft PowerPoint - 5. 指针Pointers.ppt [兼容模式] 指针 Pointers 变量指针与指针变量 Pointer of a variable 变量与内存 (Variables and Memory) 当你声明一个变量时, 计算机将给该变量一个内存, 可以存储变量的值 当你使用变量时, 计算机将做两步操作 : - 根据变量名查找其对应的地址 ; - 通过地址对该地址的变量内容进行读 (retrieve) 或写 (set) 变量的地址称为变量的指针! C++

More information

PowerPoint Presentation

PowerPoint Presentation 7.2 并行接口 二. 可编程并行接口芯片 8255A 的功能及其应用 与 CPU 一侧相连的引脚 D0 PA0 ~ ~ ~ ~ ~ D7 PA7 RESET PC7 WR RD PC4 PC3 PC0 A0 PB0 A1 PB7 CS PA 口 PC 口上半部 PC 口下半部 PB 口 A 组 B 组 与 I/O 设备相连的引脚 7.2 并行接口二. 可编程并行接口芯片 8255A 的功能及其应用

More information

Ps22Pdf

Ps22Pdf ( ) ( 150 ) 25 15 20 40 ( 25, 1, 25 ), 1. A. B. C. D. 2. A. B. C. D. 3., J = 1 H = 1 ( A B, J', J, H ) A. A = B = 1, J' =0 B. A = B = J' =1 C. A = J' =1, B =0 D. B = J' = 1, A = 0 4. AB + AB A. AB B. AB

More information

<4D F736F F D20B5DAC1F9D5C2CFB0CCE2B4F0B0B8A3A8CDF8D5BEA3A92E646F63>

<4D F736F F D20B5DAC1F9D5C2CFB0CCE2B4F0B0B8A3A8CDF8D5BEA3A92E646F63> 第六章中央处理器 2. 简单回答下列问题 ( 参考答案略 ) ( 1) CPU 的基本组成和基本功能各是什么? ( 2) 取指令部件的功能是什么? ( 3) 控制器的功能是什么? ( 4) 为什么对存储器按异步方式进行读写时需要 WMFC 信号? 按同步方式访问存储器时, CPU 如何实现存储器读写? ( 5) 单周期处理器的 CPI 是多少? 时钟周期如何确定? 为什么单周期处理器的性能差? 元件在一个指令周期内能否被重复使用?

More information

Microsoft Word - 正文.doc

Microsoft Word - 正文.doc 上篇习题解答 第 1 章 微型计算机概述 思考题与习题解答 1.1 本章重点 1. 计算机的发展与应用 (1) 计算机的发展过程 计算机的发展根据其采用逻辑器件的组成情况, 到目前为止已经历了四代 第一代为电子管计算机 ; 第二代为晶体管计算机 ; 第三代为中小规模集成电路计算机 ; 第四代为大规模和超大规模集成电路计算机 (2) 计算机的发展趋势 随着科学技术的发展, 未来计算机将向高性能 网络化

More information

AT89C2051中文资料.doc

AT89C2051中文资料.doc 图形点阵液晶显示模块使用手册 TG12864C(L) 广州捷胜吉电子科技 地址 : 广州市天河区天河路 561# 新赛格电子城 B2226 电话 :(020)33550997 13829772038 网址 :WWW.GZJSJDZ.COM E-mail:CJKD@21CN.COM 目 录 ( 一 ) 概述 (1) ( 二 ) 外形尺寸图 (1) ( 三 ) 模块主要硬件构成说明 (2) ( 四 )

More information

<4D F736F F D D433635CFB5C1D0B5A5C6ACBBFAD4ADC0EDBCB0BFAAB7A25F56312E322E646F63>

<4D F736F F D D433635CFB5C1D0B5A5C6ACBBFAD4ADC0EDBCB0BFAAB7A25F56312E322E646F63> 凌阳 8 位通用单片机 SPMC65 系列单片机原理及开发 VERSION1.2 2006-1-12 凌阳单片机推广中心 http://www.sunplusmcu.com 前 言 通用单片机, 其实泛指微控器, 对于芯片提供厂商, 又指应用于通用领域的单片机产品 ; 广泛应用于家电产品 工业控制产品 仪器仪表设备 智能控制器等当中, 渗透在人们的日常生活 生产活动当中 按照通用单片机的数据总线位数划分,

More information

Microsoft Word - P3.doc

Microsoft Word - P3.doc ;P3.3 警报器 ;* ( 程序转载请著明出处, 未声明可适应本站腾龙 /isp 开发套件 / 倚天版开发套件 * ;* E-mail:sxj1974@163.com (51c51 test web) 51 测试网, 自学单片机的网站 * ;* Create by : 石学军 www.51c51.com www.8951.com 更多例程请登陆网站 * org 00h ajmp dlv org 0030h

More information

Microsoft PowerPoint - chapter5.ppt

Microsoft PowerPoint - chapter5.ppt 本章目標 了解 80x86 的邏輯運算指令與程式設計 了解 80x86 的位元運算指令與程式設計 了解 80x86 的移位與循環指令與程式設計 了解 80x86 的符號擴展指令與特殊指令的動作 了解 80x86 的字元串運算指令與程式設計 了解 80x86 的 CP 控制與旗號位元指令的動作 林銘波編著 全華科技圖書公司 5.1 邏輯運算指令動作 0 1 0 1 0 0 1 1 OR 1 0 1 1

More information

L1 computer system overview

L1 computer system overview Computer Architecture and Organization Department of Computer Science and Technology Nanjing University Fall 2013 Instructor: Shuai Wang Course Goal In depth understanding of modern computer architecture,

More information

80X86微机原理及接口技术

80X86微机原理及接口技术 80X86 微机原理及接口技术 实验教程 西安唐都科教仪器公司 Copyright Reserved 2012 版权声明 本实验教程的版权归西安唐都科教仪器开发有限责任公司所有, 保留一切权 利 未经本公司书面许可, 任何单位和个人不得擅自摘抄 复制本实验教程的部分 或全部, 并以任何形式传播 西安唐都科教仪器开发有限责任公司,2012(C),All Right Reserved. 80X86 微机原理及接口技术实验教程

More information

bingdian001.com

bingdian001.com 2016 14 1.5 21 1. 50% 20% 5% 10% A.2 B.10.5 C.10 D.2.1 A = 1/ - =50%20%/10%5%=2 2. 2015 1 1.2 1.5 2016 1.9 2015 A.50% B.90% C.75% D.60% A = / = =1.2 1.5=1.8 2016 =1.9-1 /1=0.9 =0.9/1.8=50% 3. A. B. C.

More information

Microsoft PowerPoint ren-advanced topics [兼容模式]

Microsoft PowerPoint ren-advanced topics [兼容模式] 嵌入式系统设计与应用 第五章 ARM 与 Thumb 指令集 西安交通大学电信学院 任鹏举 1 深入 ARM 指令集 在以字节为单位寻址的存储器中, 有两种方式来存储字, 这根据最低有效字节与相邻较高有效字节相比是存在较低的还是较高的地址来划分 On holy wars and a plea for peace 小端 大端 条件执行 ARM 指令集不同寻常的特征是, 条件执行不仅应用于转移指令, 也可以应用于所有的

More information

33023A.book(31005A_cn.fm)

33023A.book(31005A_cn.fm) 第 5 章 CPU 和 ALU 目录 本章包括下面一些主要内容 : 5. 简介...5-2 5.2 指令的一般格式... 5-4 5.3 中央处理单元 (CPU)... 5-4 5.4 指令时钟... 5-4 5.5 算术逻辑单元 (ALU)... 5-5 5.6 状态寄存器... 5-6 5.7 OPTION_REG 寄存器... 5-8 5.8 电源控制寄存器... 5-9 5.9 设计技巧...

More information

版权声明 本实验教程的版权归西安唐都科教仪器开发有限责任公司所有, 保留一切权 利 未经本公司书面许可, 任何单位和个人不得擅自摘抄 复制本实验教程的部分或全部, 并以任何形式传播 西安唐都科教仪器开发有限责任公司,2009(C),All Right Reserved. 80X86 微机原理及接口技

版权声明 本实验教程的版权归西安唐都科教仪器开发有限责任公司所有, 保留一切权 利 未经本公司书面许可, 任何单位和个人不得擅自摘抄 复制本实验教程的部分或全部, 并以任何形式传播 西安唐都科教仪器开发有限责任公司,2009(C),All Right Reserved. 80X86 微机原理及接口技 TD-PIT++ 32 位微机原理及接口技术 实验教程 西安唐都科教仪器公司 Copyright Reserved 2009 版权声明 本实验教程的版权归西安唐都科教仪器开发有限责任公司所有, 保留一切权 利 未经本公司书面许可, 任何单位和个人不得擅自摘抄 复制本实验教程的部分或全部, 并以任何形式传播 西安唐都科教仪器开发有限责任公司,2009(C),All Right Reserved. 80X86

More information

第三章 宏汇编语言程序设计

第三章 宏汇编语言程序设计 微机原理与接口技术 实验指导书 淮阴师范学院计算机科学与技术系 实验一代码转换 一 实验目的 : 1 掌握顺序 分支程序的设计方法 2 编制顺序 分支程序 3 上机调试顺序 分支程序, 掌握源代码转换的基本方法 4 学会用 INT 21 功能实现人机对话 二 实验内容 本程序所实现的功能是 : 键入小写字母 ( 最多 20 个 ) 以. 号作为结束标志, 输出相应的大写字母 用 INT 21H 中的的

More information

求出所有的正整数 n 使得 20n + 2 能整除 2003n n 20n n n 20n n 求所有的正整数对 (x, y), 满足 x y = y x y (x, y) x y = y x y. (x, y) x y =

求出所有的正整数 n 使得 20n + 2 能整除 2003n n 20n n n 20n n 求所有的正整数对 (x, y), 满足 x y = y x y (x, y) x y = y x y. (x, y) x y = 求出所有的正整数 n 使得 20n + 2 能整除 2003n + 2002 n 20n + 2 2003n + 2002 n 20n + 2 2003n + 2002 求所有的正整数对 (x, y), 满足 x y = y x y (x, y) x y = y x y. (x, y) x y = y x y 对于任意正整数 n, 记 n 的所有正约数组成的集合为 S n 证明 : S n 中至多有一半元素的个位数为

More information

微處理機期末專題

微處理機期末專題 微 處 理 機 期 末 專 題 自 動 鋼 琴 組 員 :b92611004 羅 鈞 瑋 b92611008 吳 妍 儂 b92611038 吳 韋 靜 b92611042 林 佳 穎 一 簡 介 本 組 的 主 題 是 自 動 鋼 琴 在 播 放 音 樂 的 同 時, 鋼 琴 會 自 動 按 下 琴 鍵, 被 按 下 的 琴 鍵 所 對 應 到 的 音 階, 就 是 正 在 撥 放 的 樂 曲 的

More information

长 安 大 学 硕 士 学 位 论 文 基 于 数 据 仓 库 和 数 据 挖 掘 的 行 为 分 析 研 究 姓 名 : 杨 雅 薇 申 请 学 位 级 别 : 硕 士 专 业 : 计 算 机 软 件 与 理 论 指 导 教 师 : 张 卫 钢 20100530 长安大学硕士学位论文 3 1 3系统架构设计 行为分析数据仓库的应用模型由四部分组成 如图3 3所示

More information

Chapter #

Chapter # 第三章 TCP/IP 协议栈 本章目标 通过本章的学习, 您应该掌握以下内容 : 掌握 TCP/IP 分层模型 掌握 IP 协议原理 理解 OSI 和 TCP/IP 模型的区别和联系 TCP/IP 介绍 主机 主机 Internet TCP/IP 早期的协议族 全球范围 TCP/IP 协议栈 7 6 5 4 3 应用层表示层会话层传输层网络层 应用层 主机到主机层 Internet 层 2 1 数据链路层

More information