算术运算指令_第1页
算术运算指令_第2页
算术运算指令_第3页
算术运算指令_第4页
算术运算指令_第5页
全文预览已结束

下载本文档

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

文档简介

算数类指令经常会影响标志位 搞清楚以下两个概念 算数类指令经常会影响标志位 搞清楚以下两个概念 对标志对标志没有定义没有定义 指令执行后这些标志是任意的 指令执行后这些标志是任意的 不可预测不可预测 就是谁也不知道是 就是谁也不知道是 0 还还 是是 1 对标志对标志没有影响没有影响 指令执行 指令执行不改变不改变标志状态标志状态 注意有符号数进行计算是用其补码进行计算的 注意有符号数进行计算是用其补码进行计算的 有符号有符号数在计算机里是以数在计算机里是以补补码的形式码的形式 进行进行存储存储的 的 使用内存地址为寻址方式时 一定要用伪指令指明操作数类型 使用内存地址为寻址方式时 一定要用伪指令指明操作数类型 加法类加法类 带符号数相加要考虑溢出带符号数相加要考虑溢出 1 加法指令加法指令 ADD ADD 目的操作数 源操作数目的操作数 源操作数 将源与目的操作数相加 结果送到目的操将源与目的操作数相加 结果送到目的操 作数作数 目的操作数 目的操作数 reg mem 源操作数 源操作数 imm reg mem 注意 注意 1 存储器之间不能相加 存储器之间不能相加 2 根据结果对相应的标志位作出改变 即 根据结果对相应的标志位作出改变 即 影响标志位 影响标志位 2 带进位加法指令带进位加法指令 ADC ADD 目的操作数 源操作数目的操作数 源操作数 将源 目的操作数与将源 目的操作数与 CF 标志位相加 标志位相加 结果送到目的操作数结果送到目的操作数 目的操作数 目的操作数 reg mem 源操作数 源操作数 imm reg mem 注意 注意 1 存储器之间不能相加 存储器之间不能相加 2 根据结果对相应的标志位作出改变 即 根据结果对相应的标志位作出改变 即 影响标志位 影响标志位 3 ADC 指令主要与指令主要与 ADD 配合 实现配合 实现多精度加法运算 多精度加法运算 4 CF 是本指令执行前的状态是本指令执行前的状态 多精度加法运算示例多精度加法运算示例 mov ax 4652h ax 4652h add ax 0f0f0h ax 3742h CF 1 mov dx 0234h dx 0234h adc dx 0f0f0h dx f325h CF 0 DX AX 0234 4652H F0F0 F0F0H F325 3742H 3 增量指令增量指令 INC increment INC 指令对操作数加指令对操作数加 1 增量 增量 INC reg mem 操作数 操作数 reg mem 注意 注意 1 不影响进位不影响进位 CF 标志 按定义设置其他状态标志 标志 按定义设置其他状态标志 仅不影响 仅不影响 CF 还会影响其他 还会影响其他 2 主要用于对计数器和地址指针的调整 而不用来做单纯的算术计算 主要用于对计数器和地址指针的调整 而不用来做单纯的算术计算 3 当使用存储器操作数时 不得出现二义性 当使用存储器操作数时 不得出现二义性 减法类 减法类 4 减法指令减法指令 SUB 目的操作数减去源操作数 结果送到目的操作数 目的操作数减去源操作数 结果送到目的操作数 sub 目的操作数 源目的操作数 源 操作数 操作数 目的操作数 目的操作数 reg mem 源操作数 源操作数 imm reg mem 注意 注意 1 存储器之间不能相减 存储器之间不能相减 2 根据结果对相应的标志位作出改变 即 根据结果对相应的标志位作出改变 即 影响标志位 影响标志位 3 看清谁是减数 谁是被减数 看清谁是减数 谁是被减数 5 带借位减法指令带借位减法指令 SBB 将目的操作数减去源操作数 再减去借位 将目的操作数减去源操作数 再减去借位 CF 进位 进位 结果送到 结果送到 目的操作数 目的操作数 目的操作数 目的操作数 reg mem 源操作数 源操作数 imm reg mem 注意 注意 1 存储器之间不能相减 存储器之间不能相减 2 根据结果对相应的标志位作出改变 即 根据结果对相应的标志位作出改变 即 影响标志位 影响标志位 3 看清谁是减数 谁是被减数看清谁是减数 谁是被减数 4 SBB 指令主要与指令主要与 SUB 配合 实现多精度减法运算配合 实现多精度减法运算 5 CF 是本指令执行前的状态是本指令执行前的状态 多精度减法运算示例多精度减法运算示例 mov ax 4652h ax 4652h sub ax 0f0f0h ax 5562h CF 1 mov dx 0234h dx 0234h sbb dx 0f0f0h dx 1143h CF 1 DX AX 0234 4652H F0F0 F0F0H 1143 5562H 6 减量指令减量指令 DEC decrement 操作数 操作数 reg mem 注意 注意 1 不影响进位不影响进位 CF 标志 按定义设置其他状态标志 标志 按定义设置其他状态标志 仅不影响 仅不影响 CF 还会影响其他 还会影响其他 2 主要用于对计数器和地址指针的调整 而不用来做单纯的算术计算 主要用于对计数器和地址指针的调整 而不用来做单纯的算术计算 3 当使用存储器操作数时 不得出现二义性 当使用存储器操作数时 不得出现二义性 7 求补指令求补指令 NEG negative 用零减去操作数 然后结果 用零减去操作数 然后结果返回该操作数返回该操作数 操作数 操作数 reg mem 注意 注意 1 也可以表达成 将操作数按位取反后加也可以表达成 将操作数按位取反后加 1 2 NEG 指令对标志的影响与用零作减法的指令对标志的影响与用零作减法的 SUB 指令一样 指令一样 影响标志位 影响标志位 课本课本 P49 页两种求补方式 页两种求补方式 8 比较指令比较指令 CMP compare CMP 指令将目的操作数减去源操作数 按照定义相应指令将目的操作数减去源操作数 按照定义相应设置状设置状 态标志 结果不回送目的操作数态标志 结果不回送目的操作数 目的操作数 目的操作数 reg mem 源操作数 源操作数 imm reg mem 注意 注意 1 存储器之间不能相减 存储器之间不能相减 2 根据结果对相应的标志位作出改变 即 影响标志位 根据结果对相应的标志位作出改变 即 影响标志位 3 看清谁是减数 谁是被减数 看清谁是减数 谁是被减数 4 不更改目的操作数 不更改目的操作数 十进制调整指令 重要 十进制调整指令 重要 十进制数调整指令对二进制运算的结果进行十进制调整 以得到十进制的运算结果十进制数调整指令对二进制运算的结果进行十进制调整 以得到十进制的运算结果 分成压缩分成压缩 BCD 码和非压缩码和非压缩 BCD 码调整 码调整 BCD 码在计算机中仍以十六进制表示 但是认码在计算机中仍以十六进制表示 但是认 为是十进制数 为是十进制数 压缩压缩 BCD 码码 压缩压缩 BCD 码就是通常的码就是通常的 8421 码 它用码 它用 4 个个二进制位表示一个十进制位 二进制位表示一个十进制位 一个字节一个字节可可 以表示以表示两个十进制位两个十进制位 即 即 00 99 非压缩非压缩 BCD 码码 非压缩非压缩 BCD 码用码用 8 个个二进制位表示一个十进制位 二进制位表示一个十进制位 只用低只用低 4 个个二进制位二进制位表示表示一个十进一个十进 制位制位 0 9 高高 4 位任意 通常默认为位任意 通常默认为 0 示例 示例 二进制二进制编码编码的的十十进制数 一位十进制数用进制数 一位十进制数用 4 位二进制编码来表示位二进制编码来表示 8086 支持压缩支持压缩 BCD 码和非压缩码和非压缩 BCD 码的调整运算码的调整运算 真值真值 8 64 二进制编码二进制编码 08H 40H 压缩压缩 BCD 码码 08H 64H 非压缩非压缩 BCD 码码08H 0604H 压缩压缩 BCD 码加码加 DAA 减 减 DAS 调整指令调整指令 操作数隐含 为寄存器操作数隐含 为寄存器 AL ADD AL i8 r8 m8 ADC AL i8 r8 m8 DAA 注意课本 注意课本 P47 例题 两条件都满足的情况 例题 两条件都满足的情况 使用条件 使用条件 1 当当 AF 标志位为标志位为 0 或或 AL 寄存器的寄存器的低低 4 位超出位超出 BCD 数的计数符号数的计数符号 则则 AL 寄存器的内容加寄存器的内容加 06F 且将 且将 AF 置置 1 2 当当 CF 标志位为标志位为 1 或或 AL 寄存器的高四位超出寄存器的高四位超出 BCD 数的计数符号数的计数符号 则则 AL 寄存器的内容加寄存器的内容加 60H 且将 且将 CF 置置 1 AL 将将 AL 的加和调整为压缩的加和调整为压缩 BCD 码码 SUB AL i8 r8 m8 SBB AL i8 r8 m8 DAS 使用条件 使用条件 1 当当 AF 标志位为标志位为 1 或 或 AL 寄存器的低寄存器的低 4 位超出位超出 BCD 数的计数符号数的计数符号 则 则 AL 寄存器的内容减寄存器的内容减 06F 且将 且将 AF 置置 1 2 当当 CF 标志位为标志位为 1 或 或 AL 寄存器的高四位超出寄存器的高四位超出 BCD 数的计数符号数的计数符号 则 则 AL 寄存器的内容减寄存器的内容减 60H 且将 且将 CF 置置 1 AL 将将 AL 的减差调整为压缩的减差调整为压缩 BCD 码码 注意注意 1 使用使用 DAA 或或 DAS 指令前 应先执行指令前 应先执行以以 AL 为目的操作数为目的操作数的加法或减法指令的加法或减法指令 2 DAA 和和 DAS 指令指令对对 OF 标志标志无定义 按结果影响其他标志 例如无定义 按结果影响其他标志 例如 CF 反映压缩反映压缩 BCD 码相加或减的进位或借位状态码相加或减的进位或借位状态 乘法类乘法类 乘法指令乘法指令 1 无符号乘法无符号乘法 MUL r8 m8 无符号字节乘法 无符号字节乘法 AX AL r8 m8 MUL r16 m16 无符号字乘法 无符号字乘法 DX AX AX r16 m16 操作数 操作数 目的操作数隐含 为目的操作数隐含 为 AX AL 源操作数为源操作数为 imm8 reg8 或或 imm16 reg16 2 有符号乘法有符号乘法 IMUL r8 m8 有符号字节乘法 有符号字节乘法 AX AL r8 m8 IMUL r16 m16 有符号字乘法 有符号字乘法 DX AX AX r16 m16 注意 注意 1 立即数不能作操作数 立即数不能作操作数 MUL 3 是错的 是错的 2 分清楚是有符号乘法还是无符号乘法 分清楚是有符号乘法还是无符号乘法 3 影响标志位 影响标志位 对标志位的影响 对标志位的影响 乘法指令如下影响乘法指令如下影响 OF 和和 CF 标志 标志 MUL 指令指令 若乘积的高一半 若乘积的高一半 AH 或或 DX 为 为 0 则 则 OF CF 0 否则 否则 OF CF 1 IMUL 指令指令 若乘积的高一半是低一半的若乘积的高一半是低一半的符号扩展符号扩展 则 则 OF CF 0 否则均 否则均 1 乘法指令对乘法指令对其他其他状态标志状态标志没有定义没有定义 标识为影响示例 标识为影响示例 mov al 0b4h al b4h 180 mov bl 11h bl 11h 17 mul bl ax Obf4h 3060 OF CF 1 AX 高高 8 位不为位不为 0 mov al 0b4h al b4h 76 mov bl 11h bl 11h 17 imul bl ax faf4h 1292 OF CF 1 AX 高高 8 位含位含有效数字有效数字 除法类除法类 除法指令除法指令 1 无符号除法无符号除法 DIV r8 m8 无符号字节除法 无符号字节除法 AL AX r8 m8 的的商商 Ah AX r8 m8 的的余数余数 DIV r16 m16 无符号字除法 无符号字除法 AX DX AX r16 m16 的的商商 DX DX AX r16 m16 的的 余数余数 操作数 操作数 目的操作数隐含 为目的操作数隐含 为 AX 或或 DX 源操作数为源操作数为 imm8 reg8 或或 imm16 reg16 2 有符号除法有符号除法 IDIV r8 m8 有符号字节除法 有符号字节除法 AL AX r8 m8 的商 的商 Ah AX r8 m8 的余数的余数 IDIV r16 m16 有符号字除法 有符号字除法 AX DX AX r16 m16 的商 的商 DX DX AX r16 m16 的的 余数余数 注意 注意 1 立即数不能作操作数 立即数不能作操作数 DIV 3 是错的 是错的 2 分清楚是有符号乘法还是无符号乘法 分清楚是有符号乘法还是无符号乘法 3 除法指令对标志除法指令对标志没有定义 没有定义 4 除法指令会除法指令会产生结果溢出 产生结果溢出 溢出 溢出 当被除数远大于除数时 所得的商就有可能超出它所能表达的范围 如果存放商当被除数远大于除数时 所得的商就有可能超出它所能表达的范围 如果存放商 的寄存器的寄存器 AL AX 不能表达 便产生溢出 不能表达 便产生溢出 8086CPU 中就产生中就产生编号为编号为 0 的内部中断的内部中断 除法错中断除法错中断 对对 DIV 指令 除数为指令 除数为 0 或者在字节除时商 或者在字节除时商超过超过 8 位位 或者在字除时商 或者在字除时商超过超过 16 位位 则发生除法溢出 则发生除法溢出 对对 IDIV 指令 除数为指令 除数为 0 或者在字节除

温馨提示

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

评论

0/150

提交评论