zoukankan      html  css  js  c++  java
  • 8086算术运算类指令

    算术运算指令

    ①加法类指令

    ②减法类指令

    ③乘法指令

    ④除法指令

    ⑤BCD吗指令

    一、加法类指令

    首先我么们先看加法类指令三个(add,adc,inc)

    1)不带进位位的加法指令ADD

    add用来执行2个字节或2个字的相加操作,运算时不考虑CF位

    ADD DST,SRC   ;DST<--(DST)+(SRC)

    ADD影响OF,SF,ZF,AF,PF,CF标志

    2)带进位位的加法指令ADC

    ADC在功能上和ADD类似,只是有一点区别,即执行ADC指令时,将进位标志CF的值加进和中。

    ADC DST,SRC         ;DST<--(DST)+(SRC)+CF

    ADC指令多用于多字节相加运算,如进行两个8字节(64位)数据相加,应先用ADD指令将低32位相加,再用ADC指令将高32位相加,此时会把低位字节产生的进位传递到高位字节运算中。

    ADC影响OF,SF,ZF,AF,PF,CF.标志位

    3)增量指令INC

    INC指令只有一个操作数,指令执行时,将操作数内容加1,

    INC指令影响AF,OF,PF,SF,ZF.

    注意:INC指令不影响进位标志CF

    二、减法类指令(SUB,SBB,CMP,DEC,NEG)

    1)比考虑借位的减法指令SUB

    SUB和上面的加法类似,也是不带借位的减

    SUB [BP+2],CL               ;将ss段中的BP+2所指的单元中的值减去CL中的值,结果在BP+2所指堆栈单元中


    SUB影响的标志位OF,ZF,AF,SF,PF,CF

    2)考虑借位的减法指令SBB

    和上面的ADC类似,就是SBB在执行减法运算时还要减去CF的值。

    SBB AX,2530H       ;将AX中的内容减去2530H,并减去进位位CF的值

    和上面类似,这里不在重复

    3)减量指令DEC

    这又和上面的INC类似,就是将操作数减一,同样不会影响CF,只是执行减一而已。

    和上面都一样,这里不在重复。

    4)求补指令NEC

    其实我更喜欢叫它求负指令,它就是对给出的操作数求一个负,然后回送,可是机器内部是以补码的形式存储的,所以就是求补指令啦。

    NEG影响的标志位AF,CF,ZF,PF,SF,OF'

    注意:①如果操作数的值为80H、8000H、80000000H,那么执行求补指令会溢出,结果没有变化,但溢出标志OF置1

    ②此指令执行时,通常使CF为1,只有当操作数为0时,CF才为0,因为此指令是用0减去某个操作数,所以除非为0,通常都会产生借位。

    5)比较指令CMP

    cmp也是执行两个数相减操作,但不送回相减结果,会影响标志位

    此指令会影响标志位AF,CF,OF,PF,SF,ZF

    那么如果判断比较结果呢?

    答:如果比较的两个操作数相等的话,ZF = 1,根据ZF就可判断两数是否相等

    ①两个无符号比较

    无符号相减时CF,就是借位标志,如果CF为0,表示无借位,则被减数大,若果,CF为1,则表示有借位,则减数大

    ②两个有符号数比较

    看符号标志SF,而符号标志SF总是和结果的最高位相同,如果SF为0,表示被减数大,如果SF为1,则表示减数大

    转载来自 http://blog.csdn.net/best_fiends_zxh/article/details/52723765

  • 相关阅读:
    三(奇数)等分两者中间有间隔,两端没间隔
    网易云音乐基于 Flink + Kafka 的实时数仓建设实践
    【电商知识】关于电商定价的几个策略
    硬核!15张图解Redis为什么这么快
    用户画像实践:神策标签生产引擎架构
    数据产品实战(二):ABTest平台
    R代码|基于特征重要性的特征排序代码
    R代码|K均值算法R语言代码
    一文了解R语言数据分析 ----主成分分析
    全网最全 | MySQL EXPLAIN 完全解读
  • 原文地址:https://www.cnblogs.com/lls1350767625/p/7616456.html
Copyright © 2011-2022 走看看