日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

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

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

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

;INC(Increment): 加一

;DEC(Decrement): 減一

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

;ADD(Add):? 加

;ADC(Add Carry): 帶進(jìn)位加

;SUB(Subtract): 減

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

;CMP(Compare): 比較

;INC、DEC、NEG 的指令格式

;INC r/m

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

;ADD r/m, r/m/i

;它們的結(jié)果影響 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 就是加個負(fù)號
??? 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 說明兩個數(shù)相等)
???
??? 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
??? ;求補(bǔ)運(yùn)算: 取反+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 就相當(dāng)于: 取反+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

?

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



?

?

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。