日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

汇编语言中常用指令对标志位寄存器的影响

發布時間:2025/3/15 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 汇编语言中常用指令对标志位寄存器的影响 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

參考了《匯編語言 基于x86處理器》第七版
轉載請注明出處
如果有錯誤的地方請指正,謝謝。

文章目錄

  • 算術運算(ADD/SUB)影響標志位
    • ADD指令
    • SUB指令
    • NEG指令
  • INC/DEC指令影響標志位
    • INC指令
    • DEC指令
  • 布爾指令影響標志位
    • AND指令
    • OR指令
    • NOT指令
    • XOR指令
    • TEST指令
  • 移位指令影響標志位
    • 邏輯移位(SHL/SHR)
    • 算術移位(SAL/SAR)
    • 循環移位(ROL/ROR)
    • 帶進位的循環移位(RCL/RCR)
    • 雙精度移位(SHLD/SHRD)
  • 乘/除法影響標志位
    • 無符號乘法(MUL)
    • 有符號乘法(IMUL)
      • 單操作數
      • 雙操作數
      • 三操作數
  • 無符號除法(DIV)
  • 有符號除法(IDIV)

算術運算(ADD/SUB)影響標志位

ADD指令

  • 有符號:
    兩數相加,如果超過有符號數最大取值范圍時(如8位有符號數大于127),OF置位。

  • 無符號:
    兩數相加,如果超過無符號數最大取值范圍時(如8位無符號數最大取255)CF置位。

  • ?????????根據目標操作數修改:OF/CF/ZF/SF/AF/PF

    示例:-128-1執行后,CF標志位與OF標志位分別是多少? CF=0 OF=1

    SUB指令

  • 有符號:
    兩數相減,如果超過有符號數最小取值范圍時(如8位有符號數小于-128),OF置位。

  • 無符號:
    兩數相減,如果被減數小于減數,CF置位。

  • ?????????根據目標操作數修改:OF/CF/ZF/SF/AF/PF

    示例:-128+1執行后,CF標志位與OF標志位分別是多少? CF=0 OF=0

    NEG指令

    • NEG是匯編指令中的求補指令,NEG指令對操作數執行求補運算:用零減去操作數,然后結果返回操作數。求補運算也可以表達成:將操作數按位取反后加1。
    • 對任何非0的操作數使用NEG指令都將CF置位。
    • 根據目標操作數修改:CF/OF/ZF/SF/AF/PF

    INC/DEC指令影響標志位

    INC指令

    • 不影響進位標志位,根據目標操作數修改溢出標志位、符號標志位、奇偶標志位、零標志位,輔助進位標志位。 OF/SF/PF/ZF/AF

    DEC指令

    • 不影響進位標志位,根據目標操作數修改溢出標志位、符號標志位、奇偶標志位、零標志位,輔助進位標志位。 OF/SF/PF/ZF/AF

    布爾指令影響標志位

    布爾指令:AND/OR/NOT/XOR/TEST

    AND指令

    • 清除進位標志位和溢出標志位,根據目標操作數修改符號標志位、奇偶標志位、零標志位,輔助進位標志位無定義。 SF/PF/ZF

    OR指令

    • 清除進位標志位和溢出標志位,根據目標操作數修改符號標志位、奇偶標志位、零標志位,輔助進位標志位無定義。 SF/PF/ZF

    NOT指令

    • 不修改標志位

    XOR指令

    • 清除進位標志位和溢出標志位,根據目標操作數修改符號標志位、奇偶標志位、零標志位,輔助進位標志位無定義。 SF/PF/ZF

    TEST指令

    • 清除進位標志位和溢出標志位,根據目標操作數修改符號標志位、奇偶標志位、零標志位,輔助進位標志位無定義。 SF/PF/ZF

    移位指令影響標志位

    移位指令:邏輯移位(SHL/SHR)、算術移位(SAL/SAR)、循環移位(ROL/ROR)、帶進位的循環移位(RCL/RCR)、雙精度移位(SHLD/SHRD)

    邏輯移位(SHL/SHR)

    • 進位標志位為移入CF的位
    • 根據目標操作數修改溢出標志位、符號標志位、零標志位、奇偶標志位,輔助進位標志位無定義。 CF/OF/SF/ZF/PF

    算術移位(SAL/SAR)

    • 進位標志位為移入CF的位
    • 根據目標操作數修改溢出標志位、符號標志位、零標志位、奇偶標志位,輔助進位標志位無定義。 CF/OF/SF/ZF/PF

    循環移位(ROL/ROR)

    • 進位標志位為移入CF的位
  • 移位次數等于1時:
    如果移位后的符號與移位前的符號相反,溢出標志位置位。

  • 移位次數大于1時:
    溢出標志位無定義。

    • 不修改符號標志位、零標志位、奇偶標志位、輔助進位標志位。

    帶進位的循環移位(RCL/RCR)

    • 進位標志位為移入CF的位
  • 移位次數等于1時:
    如果移位后的符號與移位前的符號相反,溢出標志位置位。

  • 移位次數大于1時:
    溢出標志位無定義。

    • 不修改符號標志位、零標志位、奇偶標志位、輔助進位標志位。

    雙精度移位(SHLD/SHRD)

    • 進位標志位為移入CF的位

    • 根據目標操作數修改溢出標志位、符號標志位、零標志位、奇偶標志位,輔助進位標志位無定義。
      CF/OF/SF/ZF/PF

    乘/除法影響標志位

    包括無符號乘法(MUL)、有符號乘法(IMUL)、無符號除法(DIV)、有符號除法(IDIV)

    無符號乘法(MUL)

    • 如果乘積的高半部分不為0則進位標志位、溢出標志位置位。
      也就是說運算結果超過無符號數最大取值范圍(如8位無符號數大于255),則進位標志位、溢出標志位置位。

    • 符號標志位、零標志位、輔助進位標志位、奇偶標志位無定義。

    有符號乘法(IMUL)

    單操作數

    • 如果乘積的高半部分不是低半部分符號位的擴展,那么進位標志位、溢出標志位置位。
    • 也就是說運算結果不在8位有符號數取值范圍內(如8位有符號數取值:-27 ~ 27-1),進位標志位、溢出標志位置位。
    • 符號標志位、零標志位、輔助進位標志位、奇偶標志位無定義。

    雙操作數

    • 按照目標操作數的大小來截取乘積,如果被丟棄的是有效位,那么進位標志位、溢出標志位置位。
    • 也就是說運算結果不在8位有符號數取值范圍內(如8位有符號數取值:-27 ~ 27-1),進位標志位、溢出標志位置位。
    • 符號標志位、零標志位、輔助進位標志位、奇偶標志位無定義。

    三操作數

    同雙操作數

    無符號除法(DIV)

    執行DIV或IDIV后,所有算術運算狀態標志位的值都不確定。

    有符號除法(IDIV)

    執行DIV或IDIV后,所有算術運算狀態標志位的值都不確定。

    未完,有待添加

    新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!

    總結

    以上是生活随笔為你收集整理的汇编语言中常用指令对标志位寄存器的影响的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。