




已阅读5页,还剩69页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
3 8086 3 8086 的指令系统 3 1 数据传送指令 P89 3 2 算术运算指令 P96 3 3 逻辑运算及移位指令 P107 3 4 串操作指令 P114 3 5 控制转移指令 P119 3 6 输入 输出指令 P134 3 7 处理器控制专用指令 P135 3 1 3 1 数据传送指令 通用数据传送指令 MOV P90 堆栈操作指令 PUSH POP P91 交换指令 XCHG P92 查表指令 XLAT P93 地址传送指令 LEA LDS LES P93 标志传送指令 P95 LAHF SAHF PUSHF POPF 3 1 3 1 数据传送指令 通用数据传送指令 MOV 功能 将源操作数内容复制到目操作数中 MOV dst src dst src Dst R M SR Src R M SR Im 寄存器 CS 不作目的数 立即数 段寄存器 存储器 3 1 3 1 数据传送指令 通用数据传送指令 MOV 例 MOV CX 0 MOV AX SI MOV AX DS MOV SS CX MOV DI BP MOV ES BX 2 CL MOV WORD PTR DI BP 4FH CS 不能做 目操作数 3 1 3 1 数据传送指令 注意 不影响标志位 立即数 CS 段寄存器不能做目的操作数 两个存储单元之间不能直接进行数据传送 两个段寄存器之间不能直接进行数据传送 不能直接给段寄存器送立即数 两操作数必须等长传送 可通过通 用寄存器 3 1 3 1 数据传送指令 通用寄存器的桥梁作用 seg r seg MOV AX ES MOV DS AX imm r seg MOV AX 2000H MOV DS AX MOV DS ES seg seg MOV DS 2000H imm seg m r m MOV AX 20H MOV BX AX MOV BX 20H m m 思考 MOV BX 20H 3 1 3 1 数据传送指令 通用数据传送指令 MOV P90 堆栈操作指令 PUSH POP P91 交换指令 XCHG P92 查表指令 XLAT P93 地址传送指令 LEA LDS LES P93 标志传送指令 P95 LAHF SAHF PUSHF POPF 3 1 3 1 数据传送指令 堆栈操作指令 入栈指令 PUSH PUSH src SP SP 2 SP 1 src H SP src L src reg16 mem16 seg 出栈指令 POP POP dst dst L SP dst H SP 1 SP SP 2 dst reg16 mem16 Seg 除 CS 例 PUSH AX PUSH WORD PTR BP POP ES POP WORD PTR BP SI 3 1 3 1 数据传送指令 入栈操作示例 设有 SS 3200H SP 0800H AX 105CH SP 0800H 32800H Stack PUSH AX SP SP 1 327FFH SP SP 1 327FEH SP 07FEH 5CH AL 10H AH 3 1 3 1 数据传送指令 出栈操作示例 设有 SS 3200H SP 07FEH POP AX SP SP 1 32800H SP SP 1 327FFH SP 07FEH 327FEH Stack 10H 5CH SP 0800H AX 105CH AH AL 5CH 10H 3 1 3 1 数据传送指令 一定是 16 位操作 即压入和弹出的一定是字单元 且高 字节总是在高地址单元 不允许使用立即数作为操作数 不能以 CS IP 作为目的操作数 因为 8086 系统的堆栈是向下 低地址端 生成的 并且 是实栈顶 所以入栈时总是 SP 先减 2 再压入字 而出栈时 总是先弹出字再将 SP 加 2 堆栈中的数据总是先进后出 不影响标志位 堆栈操作注意 3 1 3 1 数据传送指令 通用数据传送指令 MOV P90 堆栈操作指令 PUSH POP P91 交换指令 XCHG P92 查表指令 XLAT P93 地址传送指令 LEA LDS LES P93 标志传送指令 P95 LAHF SAHF PUSHF POPF 3 1 3 1 数据传送指令 交换指令 XCHG 可使用的操作数类型组合 XCHG CL DH 通用寄存器 通用寄存器 XCHG AX BP 通用寄存器 存储器 功能 将源 目操作数的内容互相交换 指令执行后源 目操作数同时被改变 指令形式 XCHG op1 op2 op1 op2 op1 R M op2 R M 立即数为什么 不能做操作 数 寄存器 存储器 3 1 3 1 数据传送指令 交换指令 XCHG 注意 不能直接交换两个存储单元的值 任一个操作数都不能是段寄存器或立即数 不影响标志位 3 1 3 1 数据传送指令 例 用 MOV PUSH POP XCHG 指令 完成两寄存器 AX BX 中数据的交换 讨论所用机器码数量 用 MOV 指令 用 PUSH 指令 POP 用 XCHG 指令 MOV CX AX MOV AX BX MOV BX CX 6 字节机器码 PUSH AX PUSH BX POP AX POP BX 4 字节机器码 XCHG AX BX 1 字节机器码 3 1 3 1 数据传送指令 通用数据传送指令 MOV P90 堆栈操作指令 PUSH POP P91 交换指令 XCHG P92 查表指令 XLAT P93 地址传送指令 LEA LDS LES P93 标志传送指令 P95 LAHF SAHF PUSHF POPF 3 1 3 1 数据传送指令 数据查表指令 XLAT 指令格式 指令功能 XLAT AL BX AL 使用 XLAT 指令前 BX 表的首地址 AL 表的索引值 使用 XLAT 指令 使用 XLAT 指令后 BX AL 地址单元中的字节数据送 AL 3 1 3 1 数据传送指令 查表求平方 TABLE DB 0 1 4 9 16 25 225 MOV AX SEG TABLE MOV DS AX MOV BX OFFSET TABLE DS BX 指向表 TABLE MOV AL 4 AL 中为查表索引值 XLAT TABLE 取表中数据 16 到 AL 中 最多只能查到 15 的平方 225 3 1 3 1 数据传送指令 LED 七段显示码与显示数字的关系 77H 9 7FH 8 67H 3 6DH 2 03H 1 3FH 0 显示码 显示数字 77H 7FH 67H 6DH 03H 3FH 用 AL 代表显示数字 用 XLAT 指令查出对应显示码 BX AL 0 9 3 1 3 1 数据传送指令 通用数据传送指令 MOV P90 堆栈操作指令 PUSH POP P91 交换指令 XCHG P92 查表指令 XLAT P93 地址传送指令 LEA LDS LES P93 标志传送指令 P95 LAHF SAHF PUSHF POPF 3 1 3 1 数据传送指令 有效地址传送指令 LEA 指令格式 指令功能 指令应用 LEA reg src reg src 的 EA 将 src 的有效地址 16 位段内偏移地址 传送给通用寄存器 reg MOV BX 2130H 立即数 2130H 赋给通用寄存器 BX LEA BX 2130H 地址值 2130H 赋给通用寄存器 BX 3 1 3 1 数据传送指令 符号地址的获得 例 将符号地址 BUFF 的地址值赋给通用寄存器 BX LEA BX BUFF 指令 LEA 传送 BUFF 的地址值给 BX MOV BX OFFSET BUFF 运算符 OFFSET 返回 BUFF 的地址值后赋给 BX MOV BX BUFF 注 将 BUFF 地址单元中的字数据传送给 BX 3 1 3 1 数据传送指令 注意 LEA 指令和 OFFSET 运算符可以完成相同的功能 只是执行时 间不同 LEA BX label 程序运行时 取 lable 的 EA 到 BX 中 MOV BX OFFSET label 汇编时取 lable 的 EA 运行时放入 BX 中 3 1 3 1 数据传送指令 例 查表求数字 0 9 的格雷码 格雷码表 14H 12H 11H 0CH 0AH 09H 06H 05H 34H 18H TABLE DS 段 0 9 的格雷码从符号地 址 TABLE 开始顺序存入 编程序段 LEA BX TABLE 表首地址赋 BX MOV AL 7 表偏为 7 XLAT 查表 注 AL 中有 7 的格雷码 11H 3 1 3 1 数据传送指令 全地址指针传送指令 LDS LES 指令格式 指令功能 LDS reg src reg src 的 EA DS src 的 EA 2 LES reg src reg src 的 EA ES src 的 EA 2 LDS 32 位目标地址送 段寄存器 DS 和通用寄存器 reg LES 32 位目标地址送 段寄存器 ES 和通用寄存器 reg 3 1 3 1 数据传送指令 指令 LEA 与 LDS LES 的区别 LEA reg src src 表示存储器单元地址本身 LDS reg src LES reg src src 表示存储器单元地址中的地址值 3 1 3 1 数据传送指令 指令 LEA 与 LDS LES 的比较 已知 DS 09A0H BX 0048H LEA DI BX LDS DI BX LES DI BX 执行后 DI 0048H 执行后 DI 003EH DS 0816H 执行后 DI 003EH ES 0816H DS 09A0 08H 3EH 00H 16H 0048H 0049H 004AH 004BH 3 1 3 1 数据传送指令 通用数据传送指令 MOV P90 堆栈操作指令 PUSH POP P91 交换指令 XCHG P92 查表指令 XLAT P93 地址传送指令 LEA LDS LES P93 标志传送指令 P95 LAHF SAHF PUSHF POPF 3 1 3 1 数据传送指令 标志传送指令 LAHF SAHF LAHF AH F 低 8 读标志寄存器的低 8 位到寄存器 AH 的指令 SAHF F 低 8 AH 将 AH 的值写入标志寄存器的低 8 位的指令 注 字节传送方式 16 位标志寄存器中的低 8 位数据传送 即状态标志位 CF AF ZF SF PF 的传送 3 1 3 1 数据传送指令 标志传送指令 PUSHF POPF PUSHF 标志寄存器的入栈指令 POPF 标志寄存器的出栈指令 注 字传送方式 16 位标志寄存器中的 16 位数据传送 即状态标志位 OF CF AF ZF SF PF 的传送 及控制标志位 IF DF TF 的传送 3 1 3 1 数据传送指令 注意 操作数全部隐含 PUSHF 和 POPF 指令一般用于保护 FR 内容 LAHF 和 SAHF 指令一般用于修改 FR 内容 LAHF 将 FR 的低 8 位送入 AH 修改 AH 的值 SAHF 将修改后的值重新送回 FR 上述方法显然只能处理 FR 的低 8 位 如需处 理 FR 中的任一位 可用以下方法 PUSHF 将 FR 的值压入堆栈 POP AX 将刚压入的 FR 值弹出到 AX 中 修改 AX 的值 PUSH AX 将修改后的值压入堆栈 POPF 将修改后的值弹出到 FR 中 3 1 3 1 数据传送指令 数据传送类指令总结 源 目操作数长度必须一致 源 目操作数不能同时是存储器操作数 源 目操作数不能同时是段寄存器 立即数和代码段寄存器 CS 不能作目操作数 当目操作数是段寄存器时 源操作数不能是立即数 可以使用段寄存器的指令 MOV PUSH POP 除 XCHG 指令外 其它数传指令仅改变目操作数 源操 作数保持不变 除 SAHF POPF 指令外 其它数传指令的执行不影响标 志位 对所有指 令都适 用 3 8086 3 8086 的指令系统 3 1 数据传送指令 P89 3 2 算术运算指令 P96 3 3 逻辑运算及移位指令 P107 3 4 串操作指令 P114 3 5 控制转移指令 P119 3 6 输入 输出指令 P134 3 7 处理器控制专用指令 P135 微机系统原理与接口技术 微机系统原理与接口技术 算术运算类指令 加法指令 减法指令 乘法指令 除法指令 ADD ADC 指令 INC 指令 DAA AAA 指令 SUB SBB 指令 DEC 指令 DAS AAS 指令 NEG 指令 CMP 指令 MUL IMUL 指令 AAM 指令 DIV IDIV 指令 AAD 指令 微机系统原理与接口技术 微机系统原理与接口技术 算术运算类指令 计算机中运算指令的特点 对十进制加 减 乘 除的应用是小学问题 对二进制加 减 乘 除的应用是大学问题 对有限位二进制加 减 乘 除的应用是 计算机中必须解决的问题 微机系统原理与接口技术 微机系统原理与接口技术 算术运算类指令 计算机中运算指令的特点 除了除法指令及符号扩展指令外 其它算术运算指令 都将影响各状态标志 不同的指令对各状态标志的影响 也不同 加 减法运算时所有数据长度相等 乘法运算时结果 长度加倍 除法运算时被除数长度加倍 乘除法运算时 使用隐含操作数 可以使用 BCD 码进行算术运算 并可用相应的调整指 令对结果进行调整以保证结果仍为 BCD 码 微机系统原理与接口技术 微机系统原理与接口技术 算术运算类指令 运算指令对状态标志位的影响 无符号数运算影响状态标志位 CF 有符号数运算影响状态标志位 OF 有符号数运算结果的正负值影响状态标志位 SF 两数运算结果是否为 0 影响状态标志位 ZF 两数低 4 位运算影响状态标志位 AF 两数运算结果中 1 的量 影响状态标志位 PF 微机系统原理与接口技术 微机系统原理与接口技术 算术运算类指令 计算机中两数运算后的溢出检测 对无符号数测状态标志位 CF 对有符号数测状态标志位 OF CF 的特点 两数运算后 CF 0 表示运算结果未超界 无溢出 两数运算后 CF 1 表示运算结果己超界 有溢出 OF 的特点 两数运算后 OF 0 表示运算结果未超界 无溢出 两数运算后 OF 1 表示运算结果己超界 有溢出 注 溢出即加法有进位 减法有借位 注 溢出即运算出现错误 微机系统原理与接口技术 微机系统原理与接口技术 算术运算类指令 二进制数的表值范围与标志 8 位无符号数 和在数 0 255 内 CF 0 和在数 0 255 外 CF 1 8 位有符号数 和在数 128 127 内 OF 0 和在数 128 127 外 OF 1 微机系统原理与接口技术 微机系统原理与接口技术 两个 8 位二进制数的加法运算及和的溢出 分析 表示无符号数时 无溢出 表示有符号数时 无溢出 分析 15 127 15 255 00001111B 3 12 3 12 00000011B 00001100B 认为有符号数相加 认为无符号数相加 机内二进制数相加 CF 0 无溢出 OF 0 无溢出 微机系统原理与接口技术 微机系统原理与接口技术 两个 8 位二进制数的加法运算及和的溢出 分析 表示无符号数时 有溢出 表示有符号数时 无溢出 分析 2 255 1 00000010B 6 4 6 252 00000110B 11111100B 认为有符号数相加 认为无符号数相加 机内二进制数相加 CF 1 有溢出 OF 0 无溢出 微机系统原理与接口技术 微机系统原理与接口技术 两个 8 位二进制数的加法运算及和的溢出 分析 表示无符号数时 无溢出 表示有符号数时 有溢出 分析 131 127 131 255 10000011B 8 123 8 123 00001000B 01111011B 认为有符号数相加 认为无符号数相加 机内二进制数相加 CF 0 无溢出 OF 1 有溢出 微机系统原理与接口技术 微机系统原理与接口技术 两个 8 位二进制数的加法运算及和的溢出 分析 表示无符号数时 有溢出 表示有符号数时 有溢出 分析 132 255 1 01111100B 121 11 135 245 10000111B 11110101B 认为有符号数相加 认为无符号数相加 机内二进制数相加 CF 1 有溢出 OF 1 有溢出 微机系统原理与接口技术 微机系统原理与接口技术 算术运算 加法类指令 加法指令 ADD 指令特点 指令格式 指令功能 不带进位的加法指令 ADD dst src dst dst src 用于低字 字节 相加 注 无符号数 有符号数的加法用相同的指令 最常用 的加法 微机系统原理与接口技术 微机系统原理与接口技术 算术运算 加法类指令 加法指令 ADC 指令特点 指令格式 指令功能 带进位的加法指令 ADC dst src dst dst src CF 用于高字 字节 相加 微机系统原理与接口技术 微机系统原理与接口技术 算术运算 加法类指令 ADD ADC 指令的操作数及类型 OP reg reg OP reg mem OP mem reg OP reg imm OP mem imm 操作数 数据类型 字节数据类型 字数据类型 微机系统原理与接口技术 微机系统原理与接口技术 算术运算 加法类指令 ADD 与 ADC 分析 影响所有标志位 ADC 指令的另一个默认操作数为进位位 CF 若进位标志 CF 0 则 ADD ADC 无符号数 有符号数用相同的加法指令 对无符号数加法时 判断标志位 CF 对有符号数加法时 判断标志位 OF 微机系统原理与接口技术 微机系统原理与接口技术 算术运算 加法类指令 INC 加 1 指令 指令格式 指令功能 影响的标志 不影响的标志 允许的操作数 INC oprd oprd oprd 1 多用于循环程序中的地址指针加 1 OF SF ZF PF AF CF reg mem 微机系统原理与接口技术 微机系统原理与接口技术 例 将存放在 20000H 和 21000H 地址处的两个 32 位 数相加 结果放在 21000H 地址处 MOV AX 2000H MOV DS AX 设置默认段基址 DS 2000H MOV SI 0 使 SI 指向 20000H 单元 MOV DI 1000H 使 DI 指向 21000H 单元 MOV AX SI 将 20000H 20001H 单元的 16 位数送到 AX 中 ADD DI AX 将两个 32 位数的低 16 位相加 结果放 21000H 处 MOV AX SI 2 将 20002H 20003H 单元的 16 位数送到 AX 中 ADC DI 2 AX 将 32 位的高 16 位相加 结果放 21002H 处 MOV DI 4 0 ADC DI 4 0 处理高 16 位的进位 微机系统原理与接口技术 微机系统原理与接口技术 例 两双倍精度字 1234FEDCH 和 11228765H 相加 11H 22H 87H 65H 12H 34H FEH DCH DS 段 1000H 2000H 编程 存储图 LEA SI 1000H LEA DI 2000H MOV AX SI ADD AX DI MOV SI AX MOV AX SI 2 ADC AX DI 2 MOV SI 2 AX 结果 23H 57H 86H 41H 微机系统原理与接口技术 微机系统原理与接口技术 算术运算 加法类指令 十进制数的 BCD 编码 用 4 位二进制数对 1 位十进制数进行编码 8 4 2 1 BCD 编码 0000 0 1001 9 组合十进制数 1 字节含 2 个 BCD 编码的十进制数 非组合十进制数 1 字节含 1 个 BCD 编码的十进制数 BCD BCD BCD 0000 微机系统原理与接口技术 微机系统原理与接口技术 算术运算 加法类指令 十进制数的 BCD 编码表示 4 位二进制数的表值范围 0000B 1111B 0 15 0H FH 4 位二进制数的 BCD 编码表示 0000B 1001B 表示 0 9 写为 0H 9H 8 位二进制数含两个 BCD 码 称组合十进制数 00000000B 10011001B 表示 00 99 写为 00H 99H 8 位二进制数含一个 BCD 码 称非组合十进制数 00000000B 00001001B 表示 0 9 写为 00H 09H 微机系统原理与接口技术 微机系统原理与接口技术 调整原理 计算 8 9 0000 1000 见右式 0000 1001 0001 0001 11 结果应为 17 而计算机相加为 11 原因在于运算过 程中 如遇到低 4 位往高 4 位产生进位时 此时 AF 1 是按逢十六进一的规则 但 BCD 码要求逢十进一 因 此只要产生进位 个位就会少 6 这就要进行加 6 调 正 95 这个 1 代表了 16 而实际上 仅应为 10 即多进了 6 微机系统原理与接口技术 微机系统原理与接口技术 实际上当低 4 位的结果 9 即 A F 之间 时 也应进 行加 6 调正 原因是逢十没有进位 故用加 6 的方法 强行产生进位 如对上例的结果进行加 6 0001 0001 11 0000 0110 6 0001 0111 17 96 微机系统原理与接口技术 微机系统原理与接口技术 算术运算 加法类指令 半字节 4 位二进制数 BCD 码和的调整 和 9 不调整 或加 0 调整 9 和 15 先加 6 调整 后有 AF 1 低 4 位 CF 1 高 4 位 15 9 或标志 AF 1 15 则 AL AL 06H 且 CF AF 1 若 AL AX AL DI 8 位存储器操作数 MUL WORD PTR DI DX AX AX DI 16 位存储器操作数 src 不能为立即数 微机系统原理与接口技术 微机系统原理与接口技术 算术运算 乘法类指令 IMUL 有符号数乘法指令 指令格式 IMUL src AX AL src 8 位乘数 DX AX AX src 16 位乘数 指令特点 除了仅用于有符号数的乘法外 其余 与无符号数乘法指令相同 微机系统原理与接口技术 微机系统原理与接口技术 IMUL 指令讨论 问题 为什么乘法指令有无符号和有符号之分 例 完成 0011 1110 4 4 8 模式 为无符号数时 0011 3 X 1110 X 14 00101010 2AH 42 2AH 为有符号数时 0011 3 X 1110 X 2 00101010 2AH 6 FAH 结果应为 FAH 而非 2AH 用 IMUL 指令解决如下 去掉符号位相乘 1110 的原码 1010 去掉最高位 1 0011 0010 00000110 对积求补 00000110 01111010 添加符号 01111010 11111010 FAH 微机系统原理与接口技术 微机系统原理与接口技术 算术运算 乘法类指令 AAM 非组合十进制数乘法调整指令 应用条件 仅用于无符号乘法指令 MUL 中的 8 8 模式 指令格式 AAM AH AX 10 调整后的商 AH AL AX 10 调整后的余 AL 指令功能 将积 AX 中的真实值调整为用非组合 BCD 表示的数 注 8086 没有提供组合 BCD 码的乘法调整指令 微机系统原理与接口技术 微机系统原理与接口技术 AAM 指令应用例 例 两个非组合 BCD 数 08H 和 09H 相乘 积也为非组合 BCD 数表示 分析 8 9 72 将真实积 72 表示为 0702H 程序 MOV AL 08H MOV BL 09H MUL BL 积 AX 中的值为 72 即 AH 0 AL 72 AAM AH 72 10 7 07H AL 72 10 2 02H AX 0702H AAM 实际上实现了 16 进制数 十 进制数的转化 微机系统原理与接口技术 微机系统原理与接口技术 算术运算类指令 加法指令 减法指令 乘法指令 除法指令 ADD ADC 指令 INC 指令 DAA AAA 指令 SUB SBB 指令 DEC 指令 DAS AAS 指令 NEG 指令 CMP 指令 MUL IMUL 指令 AAM 指令 DIV IDIV 指令 AAD 指令 微机系统原理与接口技术 微机系统原理与接口技术 算术运算 除法类指令 除法指令中的专用寄存器 商 被除数 除数的数据类型 商 8 位 被除数 16 位 除数 8 位 商 16 位 被除数 32 位 除数 16 位 寄存器的使用原则 8 位 16 位 8 位模式 商寄存器为 AL AH 被除数寄存器为 AX 16 位 32 位 16 位模式 商寄存器为 AX DX 被除数寄存器为 DX AX 微机系统原理与接口技术 微机系统原理与接口技术 算术运算 除法类指令 商的整商 余表示法 8 位 8 位 16 位 8 位模式 整商存放在 AL 中 余存放在 AH 中 16 位 16 位 32 位 16 位模式 整商存放在 AX 中 余存放在 DX 中 微机系统原理与接口技术 微机系统原理与接口技术 算术运算 除法类指令 DIV 无符号数除法指令 指令格式 DIV src AL AH AX src 8 位除数 AX DX DX AX src 16 位除数 指令特点 DIV 指令仅显示给出除数源操作数 src DIV 指令目的操作数根据 src 的数据类型而定 若 src 为 8 位除数 则被除数为 AX 商为 AL AH 若 src 为 16 位除数 则被除数为 DX AX 商为 AX DX 当除数远小于被除数时 将引起除数为 0 错误 不是溢出错误 标志位未定义 微机系统原理与接口技术 微机系统原理与接口技术 算术运算 除法类指令 IDIV 有符号数除法指令 指令格式 IDIV src AL AH AX src 8 位除数 AX DX DX AX src 16 位除数 指令特点 除了仅用于有符号数的除法外 其余同无符号除法指令 微机系统原理与接口技术 微机系统原理与接口技术 算术运算 除法类指令 除数源操作数 src 的确定 src 为寄存器操作数 由寄存器名确定 DIV CL AL AH AX CL DIV CX AX DX DX AX CX src 为存储器操作数 须对数据类型进行说明 DIV BYTE PTR DI AL AH AH DI 8 位存储器操作数 DIV WORD PTR DI AX DX DX AX DI 16 位存储器操作数 src 不能为立即数 微机系统原理与接口技术 微机系统原理与接口技术 符号扩展指令 CBW CWD 主要用在 IDIV 指令之前 将被除数的符号位扩展至高 位寄存器中 使长度扩展一倍 AL 扩展为 AX CBW AX 扩展为 DX AX CWD 不影响任何标志位 对应于符号扩展 零 扩展 将高位字 字节 补充为 0 0 AX 0000000000000000 DX 0 AX C W D 1 AX 1 AX 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 DX C W D 0 A L 0 AX 0 0000000 C B W 1 A L 1 AX 1 1 1 1 1 1 1 1 C B W 算术运算 除法类指令 微机系统原理与接口技术 微机系统原理与接口技术 算术运算 除法类指令 AAD 非组合十进制数除法调整指令 应用条件 仅用于无符号除法指令 DIV 中的 16 8 模式 指令格式 AAD AL AH 10 AL AH 0 指令功能 将被除数 AX 中用非组合 BCD 表示的数 调整为真实值 AAD 必须在 DIV 之前 与其它调整指令不同 只能进行非组合 BCD 码除法调整 微机系统原理与接口技术 微机系统原理与接口技术 AAD 指令应用例 例 完成非组合 BCD 表示的算式 0403H 06H 分析 应为 43 6 即应先将非组合 BCD 表示的被 除数 0403H 调整为 43 后除 6 程序 MOV AX 0403H MOV BL 6 AAD AL 4 10 3 43 AH 0 DIV BL AL 07H AH 01H AAD 指令进行的是 AAM 的逆操作 微机系统原理与接口技术 微机系统原理与接口技术 算术运算 乘 除法类指令 AAM 与 AAD 的讨论 乘法调整 MUL AAM 先乘后调整积 将积从 AL 中扩展到 AX 中 真实值到表示数的调整 除法调整 AAD DIV 先调整被除数后除 将被除数从 AX 中压缩到 AL 中 表示数到真实值的调整 微机系统原理与接口技术 微机系统原理与接口技术 算术运算类指令总结 除了除法和符号扩展外 其他的算术运算指令会 影响状态标志位 加减法指令无专用寄存器 乘除法指令有专用寄存器 AL AH AX DX BCD 调整指令有专用寄存器 AL AH AX 符号扩展指令有专用寄存器 AL AX DX 乘法指令有 8 8 16 16 16 32 模式 除法指令有 16 8 8 8 32 16 16 16 模式 加减法指令无有符号 无符号之分 乘除法指令有有符号 无符号之分 3 8086 3 8086 的指令系统 3 1 数据传送指令 P89 3 2 算术运算指令 P96 3 3 逻辑运算及移位指令 P107 3 4 串操作指令 P114 3 5 控制转移指令 P119 3 6 输入 输出指令 P134 3 7 处理器控制专用指令 P135 微机系统原理与接口技术 微机系统原理与接口技术 逻辑运算类指令 布尔型指令 移位类指令 循环移位类指令 AND OR XOR NOT 指令 TEST 指令 SHL SHR 指令 SAL SAR 指令 ROL ROR 指令 RCL RCR 指令 微机系统原理与接口技术 微机系统原理与接口技术 逻辑运算类指令 AND OR XOR 位与 或 异或指令 指令格式 指令功能 AND dst src dst dst 与 src OR dst src dst dst 或 src XOR dst src dst dst 异或 src AND 位清 0 OR 位置 1 XOR 位取反 目操作数 REG MEM 源操作数 REG MEM Imm 将 C F O F 标志清 0 影 响 S F Z F P F 标志 微机系统原理与接口技术 微机系统原理与接口技术 逻辑运算类指令 TEST 位测试指令 指令格式 指令功能 TEST dst src dst 与 src 与 CMP 指令相同 不将运算结果送 dst 常用于 取出 操作数的某一位来进行判断 仅讨论运算对标志位 ZF 的影响 后续执行对应的条件转移指令 JZ JNZ 将 CF OF 标志清 0 影响 SF ZF PF 标志 微机系统原理与接口技术 微机系统原理与接口技术 逻辑运算指令的应用 1 AND 指令通常用于将操作数的某些位清 0 如 AND AL 0FCH AL 的低 2 位清 0 其余保持不变 2 TEST 指令常用于 取出 操作数的某一位来进行判断 如 TEST AL 20H 取 AL 的 D5 位 JZ BCLR Z F 1 该位为 0 就到 BCLR 处 3 OR 指令通常用于将操作数的某些位置 1 如 OR AL 80H AL 的 D7 位置 1 其余位保持不变 4 XOR 指令通常用于将操作数的某些位取反 如 XOR AL 0FH AL 的低 4 位取反 高 4 位保持不变 微机系统原理与接口技术 微机系统原理与接口技术 逻辑运算类指令 NOT 位取非指令 指令格式 指令功能 NOT src src src 的反码 获得操作数的按位取非 注 布尔指令中的 dst src 的应用条件 同 MOV 指令所确定的传送原则 不影响任何标志 微机系统原理与接口技术 微机系统原理与接口技术 移位指令 SAL SAR SHL SHR 操作数 1 移 1 位 SAL SAR SHL SHR 操作数 CL 移位 CL 次 移位之后改变操作数内容 但 CL 的值不变 允许的操作数类型 通用寄存器 存储器 对标志位的影响 移出位 C F 仅当移 1 位时 影响 OF 符号位与之前不同则置 1 按照移位后的结果置 复位 S F Z F P F 逻辑运算类指令 微机系统原理与接口技术 微机系统原理与接口技术 逻辑运算类指令 SHL SAL 左移位指令 指令格式 逻辑左移位 SHL oprd 1 CF oprd 最高位 b n b n 1 b 0 0 算术左移位 SAL oprd 1 CF oprd 最高位 b n b n 1 b 0 0 指令功能 功能相同 均为低位补 0 逐位左移 高位进 CF 左移一次等同于乘以 2 CF 0 MSB LSB CF 0 MSB LSB 微机系统原理与接口技术 微机系统原理与接口技术 逻辑运算类指令 SHR SAR 右移位指令 指令格式 逻辑右移位 SHR oprd 1 CF b 0 b n 1 b n oprd 最高位 0 算术右移位 SAR oprd 1 CF b 0 b n 1 b n oprd 最高位 符号 指令功能 功能不相同 逻辑右移高位补 0 算术右移高位补符号 右移一次等同于除 2 SHR 针对无符号 SAR 针对有符号 CF MSB LSB 0 C F MSB LSB 微机系统原理与接口技术 微机系统原理与接口技术 用移位指令实现乘 除法 SAL AX 1 实现 AX 2 MOV BX AX SAL AX 1 实现 AX 4 ADD AX BX 实现 AX 6 MOV BL AL MOV CL 3 SHR AL CL 实现 AL 8 SUB BL AL 实现 AL 7 8 微机系统原理与接口技术 微机系统原理与接口技术 循环移位指令 格式 ROL ROR RCL RCR 操作数 1 移 1 位 ROL ROR RCL RCR 操作数 CL 移位 CL 次 移位之后改变操作数内容 但 CL 的值不变 允许的操作数类型 通用寄存器 存储器 对标志位的影响 移出位 C F 仅当移 1 位时影响 OF 移出的位不会丢失 逻辑运算类指令 微机系统原理与接口技术 微机系统原理与接口技术 逻辑运算类指令 ROL ROR 小循环移位指令 指令格式 小循环左移位 ROL oprd 1 CF oprd 最高位 b 0 oprd 最高位 b n b n 1 小循环右移位 ROR oprd 1 CF b 0 oprd 最高位 b 0 b n 1 b n 指令功能 CF 不参加循环 CF MSB LSB CF MSB LSB 微机系统原理与接口技术 微机系统原理与接口技术 逻辑运算类指令 RCL RCR 大循环移位指令 指令格式 大循环左移位 RCL oprd 1 CF oprd 最高位 b 0 CF b n b n 1 大循环右移位 RCR oprd 1 CF b 0 oprd 最高位 CF b n 1 b n 指令功能 CF 要参加循环 CF MSB LSB CF MSB LSB 微机系统原理与接口技术 微机系统原理与接口技术 逻辑运算及移位指令小结 AND TEST OR XOR 指令对标志位的影响 固定使 C F O F 0 根据运算结果改变 S F Z F P F NOT 指令形式上只有一个操作数 不影响任何标志位 SAL SAR SHL SHR 指令的使用方法相同 对标志 位的影响也相同 移出位给 C F 根据结果改变 S F Z F P F 当移位次数为 1 时 影响 OF ROL ROR RCL RCR 的使用方法相同 对标志位的 影响相同 移出位给 C F 当移位次数为 1 时 影响 OF 使用 SHR 或 SAR 每移 1 位 可视为分别将无符号数和带符 号数除以 2 使用 SHL SAL 每移 1 位 可视为将数值乘以 2 3 8086 3 8086 的指令系统 3 1 数据传送指令 P89 3 2 算术运算指令 P96 3 3 逻辑运算及移位指令 P107 3 4 串操作指令 P114 3 5 控制转移指令 P119 3 6 输入 输出指令 P134 3 7 处理器控制专用指令 P135 微机系统原理与接口技术 微机系统原理与接口技术 串操作类指令 串传送指令 MOVS MOVSB MOVSW 串比较指令 CMPS CMPSB CPMSW 串检索指令 SCAS SCASB SCASW 串装入指令 LODS LODSB LODSW 串存储指令 STOS STOSB STOSW 串操作指令重复前缀 REP REPZ REPE REPNZ REPNE 微机系统原理与接口技术 微机系统原理与接口技术 串操作的基本概念 什么是串 地址连续的字节或字存储单元 通常用于存放同一类数 据 数据源 源串 数据结果 目的串 串操作指令 对串元素实现传送 比较 检索 装入 存储等操作 并自动修改地址指针 串操作重复前缀 加在串操作指令之前 根据不同条件判断是否重复执行 串操作 可以实现对整个串的同一种操作 微机系统原理与接口技术 微机系统原理与接口技术 串操作指令的特点 DS SI 默认的源串指针 可段超越 ES DI 固定的目标串指针 不允许段超越 自动修改串指针 方向标志 D F 决定指针的修改方向 D F 0 指针加 D F 1 指针减 串元素的类型决定修改 量 字节串 指针加 减 1 字串 指针加 减 2 加有重复前缀时 固定使用 CX 计录并修改重复次数 再 根据 CX 值及标志位 Z F 判断是否重复进行串操作 前缀本 身不影响任何标志位 微机系统原理与接口技术 微机系统原理与接口技术 串传送指令 格式 MOVS 目标串首址标号 源串首址标号 MOVSB MOVSW 功能 将源串中 DS SI 所指的串元素复制到目标 串中 ES DI 所指的单元处 然后自动修改 SI DI MOVSB MOVSW 分别是字节串和字串的传送 指令 隐含了操作数 微机系统原理与接口技术 微机系统原理与接口技术 重复前缀 REP 格式 REP 串操作指令 功能 串操作指令执行之后 先修改 CX CX 1 CX 再判断串是否处理完 CX 是否为 0 不是 0 继续执行该串操作指令 否则顺序执行下 一条指令 微机系统原理与接口技术 微机系统原理与接口技术 2 用不带重复前缀的串传送指令 3 用重复串传送 1 不用串传送指 令 例 1 将数据段中 从 DATA1 开始的 100 个字节数据传送至 附加段中以 DATA2 开始的单元内 LEA SI DATA1 SI 指向源串 LEA DI DATA2 DI 指向目的串 MOV CX 100 共传 100 个字节 AGAIN MOV AL SI MOV ES DI AL 完成一个字节的传送 INC SI 指向下一个字节 INC DI DEC CX 计数值减 1 JNZ AGAIN CX 不等于 0 则重复 MOV SI OFFSET DATA1 MOV DI OFFSET DATA2 MOV CX 100 CLD AGAIN MOVS DATA2 DATA1 LOOP AGAIN MOV SI OFFSET DATA1 MOV DI OFFSET DATA2 MOV CX 100 CLD REP MOVSB 微机系统原理与接口技术 微机系统原理与接口技术 MOV CX 10H 源串 目标串中字的个数 LEA SI STR1 STR1 源串 数据段中 的首址标号 ADD SI 30 SI 指向源串的末地址 LEA DI STR2 STR2 目标串 附加段中 首址标号 ADD DI 30 DI 指向目标串的末地址 STD D F 1 串指针自动减量 REP MOVSW 完成 16 个字的传送 例 2 部分地址重合的字串传送需考虑传送方向 Memory 源串 目标串 微机系统原理与接口技术 微机系统原理与接口技术 串比较指令 格式 CMPS 目标串首址标号 源串首址标号 CMPSB CMPSW 功能 用串源中 DS SI 所指的串元素值减去目标 串中 ES DI 所指的串元素值 结果反映在标志位 上 自动修改 SI DI CMPSB CMPSW 分别是字节串和字串的比较指 令 隐含了操作数 微机系统原理与接口技术 微机系统原理与接口技术 重复前缀 REPZ REPE 格式 REPZ REPE 串操作指令 功能 串 操 作 指 令 执 行 之 后 修 改 CX CX 1 CX 判断是否满足串未完 CX 0 且 结果相等 ZF 1 满足则继续执行该串操作指 令 否则顺序执行下一条指令 微机系统原理与接口技术 微机系统原理与接口技术 串比较指令及重复前缀举例 比较两个字符串是否相等 MOV CX 20 源串 目标串的字符个数 LEA SI STR1 STR1 源串的首址标号 LEA DI STR2 STR2 目标串的首址标号 CLD D F 0 串指针自动增量 REPE CMPSB 比较对应元素是否相同 是 继续比 否 执行下条指令 JNZ DIFF 因对应元素不同而退出比较 SAME 因串结束 CX 0 而退出比较 微机系统原理与接口技术 微机系统原理与接口技术 LEA SI FLAG LEA DI STATUS MOV CX 5 CLD 例 3 比较 DS 段 FLAG 单元开始存放 和 ES 段 STATUS 单元开 始存放 中的两个字节型字符串是否相等 若不相等 将不一样字节出现的位置记入 DS 段的 POINT 单元 设字符 串的长度为 5 REPE CMPSB CX 0 或 ZF 0 结束 JNE FOUND ZF 0 说明找到不同 跳转 EXIT RET ZF 1 说明是 CX 0 导致结束 FOUND INC CX CX 记录了不同字节的位置 MOV POINT CX JMP EXIT 微机系统原理与接口技术 微机系统原理与接口技术 串检索指令 格式 SCAS 目标串首址标号 SCASB SCASW 功能 用 AL 字节串 或 AX 字串 的值减去 目标串中 ES DI 所指的串元素值 结果反映在标 志位上 然后自动修改 DI SCASB SCASW 分别是字节串和字串的检索指 令 隐含了操作数 实际上是源串 固定为累加器 的串比较指令 微机系统原理与接口技术 微机系统原理与接口技术 重复前缀 REPNZ REPNE 格式 REPNZ REPNE 串操作指令 功能 串 操 作 指 令 执 行 之 后 修 改 CX CX 1 CX 判断是否满足串未完 CX 0 且 结果不等 ZF 0 满足则继续执行该串操作指 令 否则顺序执行下一条指令 微机系统原理与接口技术 微机系统原理与接口技术 串检索指令及重复前缀举例 在一个字符串中检索有无关键字符 MOV CX 30 目标串的字符个数 LEA DI STR2 STR2 目标串的首址标号 MOV AL 关键字符在 AL 中 CLD D F 0 串指针自动增量 REPNE SCASB 比较 AL 与串元素 不同 继续比 相同 执行下条指令 JZ FND 找到关键字符 NOFD 因串检索结束而退出 未找到 微机系统
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 汽电机组拆装合同协议书
- 监理公司合同的补充协议
- 派遣固定期劳动合同范本
- 银行担保人签订合同范本
- 淘宝店铺运营服务协议书
- 生活垃圾代管协议书模板
- 私下将租赁合同转让协议
- 济南机场战略合作协议书
- 聘用协议性质为劳动合同
- 终止造林合同协议书范本
- 双氧水罐罐区安全设计规范
- 【正版授权】 ISO 13408-6:2021 EN Aseptic processing of health care products - Part 6: Isolator systems
- 开票税点自动计算器
- 2022-2023年人教版八年级化学上册期末测试卷(及参考答案)
- 护理不良事件防范教学培训课件
- DLT 5175-2021 火力发电厂热工开关量和模拟量控制系统设计规程-PDF解密
- 乙状结肠癌术后护理
- 全国中医优才计划
- 数字化系列研究之财务数智化篇:大型集团企业财务管理的数智化
- 多发性硬化症的康复治疗
- 医疗机构内定量检验结果的可比性验证指南
评论
0/150
提交评论