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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Win32ASM学习[15]:加减指令: INC、DEC、NEG、ADD、ADC、SUB、SBB、CMP

發布時間:2023/12/1 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Win32ASM学习[15]:加减指令: INC、DEC、NEG、ADD、ADC、SUB、SBB、CMP 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

;INC(Increment): 加一

;DEC(Decrement): 減一

;NEG(Negate):? 求補(求反)

;ADD(Add):? 加

;ADC(Add Carry): 帶進位加

;SUB(Subtract): 減

;SBB(Subtract With Borrow): 帶進位減

;CMP(Compare): 比較

;INC、DEC、NEG 的指令格式

;INC r/m

;ADD、ADC、SUB、SBB、CMP 的指令格式:

;ADD r/m, r/m/i

;它們的結果影響 OF、SF、ZF、AF、PF、CF

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

INC、DEC、NEG

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

.code
main proc
??? mov eax, 6
??? inc eax
??? PrintDec eax ;7
??? dec eax
??? PrintDec eax ;6
??? neg eax????? ;NEG 就是加個負號
??? PrintDec eax ;-6
??? neg eax
??? PrintDec eax ;6
??? ret
main endp
end main

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

ADD、ADC

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

.code
main proc
??? mov eax, 5
??? add eax, 1
??? PrintDec eax ;6
???
??? stc????????? ;CF=1
??? mov eax, 5
??? adc eax, 1?? ;ADC 比 ADD 還要多加上 CF
??? PrintDec eax ;7
???
??? clc????????? ;CF=0
??? mov eax, 5
??? adc eax, 1
??? PrintDec eax ;6
??? ret
main endp
end main

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

SUB、SBB

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

.code
main proc
??? mov eax, 5
??? sub eax, 1
??? PrintDec eax ;4
???
??? stc
??? mov eax, 5
??? sbb eax, 1?? ;SBB 比 SUB 還要多減去 CF
??? PrintDec eax ;3
???
??? clc
??? mov eax, 5
??? sbb eax, 1
??? PrintDec eax ;4
??? ret
main endp
end main

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

CMP

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

.code
main proc
??? mov eax, 3
??? cmp eax, 3
??? lahf
??? PrintHex ah ;46 - 01000110b(ZF=1 說明兩個數相等)
???
??? mov eax, 3
??? cmp eax, 2
??? lahf
??? PrintHex ah ;02 - 00000010b(SF=0、ZF=0 說明前者 > 后者)
???
??? mov eax, 3
??? cmp eax, 4
??? lahf
??? PrintHex ah ;76 - 10010111b(SF=1、ZF=0 說明前者 < 后者)???
??? ret
main endp
end main

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

辨析 NEG 與 NOT

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

.386
.model flat, stdcall

include??? windows.inc
include??? kernel32.inc
include??? masm32.inc
include??? debug.inc
includelib kernel32.lib
includelib masm32.lib
includelib debug.lib

.data?
??? val sword ?
.code
main proc
??? ;求補運算: 取反+1
??? mov val, 44
??? PrintDec val? ;44
??? PrintHex val? ;002C - 00000000 00101100b
???
??? not val
??? inc val
??? PrintDec val? ;-44
??? PrintHex val? ;FFD4 - 11111111 11010100b
???
??? not val
??? inc val
??? PrintDec val? ;44
??? PrintHex val? ;002C - 00000000 00101100b
???
??? ;NEG 就相當于: 取反+1
??? mov val, 44
??? neg val
??? PrintDec val? ;-44
??? PrintHex val? ;FFD4 - 11111111 11010100b
???
??? neg val
??? PrintDec val? ;44
??? PrintHex val? ;002C - 00000000 00101100b
??? ret
main endp
end main

?

-------------------------------------------------------------------------------------------------------------------------------------------------------------------



?

?

總結

以上是生活随笔為你收集整理的Win32ASM学习[15]:加减指令: INC、DEC、NEG、ADD、ADC、SUB、SBB、CMP的全部內容,希望文章能夠幫你解決所遇到的問題。

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