0
Q
瞭解cmp指令
A
回答
4
cmp arg2, arg1
執行與sub arg2, arg1
相同的操作,除了沒有任何操作數被修改。 不存儲區別。
然而,標誌寄存器是更新,並且可以在一個條件跳轉中使用,像跳如果相等(JE
),最通常爲cmp
之後的下一指令。
與其他指令相比,您可以比較兩個值而不會破壞它們中的任何一個。如果你做了sub arg2, arg1
而他們碰巧是平等的,那麼其中之一將會是零。隨着cmp
他們都在那裏。
相關問題
- 1. 裝配 - JZ指令CMP
- 2. 爲什麼此CMP指令失敗?
- 3. 瞭解一些ADC指令
- 4. 瞭解CUDA SHFL指令
- 5. 請給我解釋了滑塊指令
- 6. 瞭解塊中的變量(__block指令)
- 7. 瞭解自定義指令和ngModelController
- 8. x86 CMP指令不適用於單字比較
- 9. 如何將IA32'cmp'指令轉換爲Y86?
- 10. 瞭解ARM彙編指令和C/C++指針
- 11. 用C程序調用linux命令cmp
- 12. 解碼68K指令
- 13. 角指令表不走了
- 14. `test`指令做了什麼?
- 15. 從cmp 0x4(%esi),%ebx彙編指令表示的0x4是什麼意思?
- 16. 試圖瞭解主拆卸第一指令
- 17. 在這種情況下了解預處理器指令?
- 18. 瞭解OpenMP 4.0將生成哪些SIMD指令?
- 19. 程序集x86瞭解定義字(DF)指令
- 20. 瞭解c函數指針
- 21. 瞭解休眠取指
- 22. C++:瞭解「this」指針
- 23. c瞭解結構指針
- 24. 瞭解帶指針的const_iterator?
- 25. 瞭解令牌使用%%
- 26. SVG:瞭解翻譯命令
- 27. 命令被bash誤解了
- 28. 瞭解bashrc別名命令
- 29. 解碼BNE MIPS指令
- 30. Angular + RequireJs:解決templateUrls指令
@Carcigenicate * ax? Cos AFAIK通常與'je'搭配使用。但是je需要知道條件是真是假。 –
請注意,您指的是* wikibooks *,它是* wikis *的特定集合。 A * wiki *只是用戶可以編輯的一種網站。因此,Wikibooks絕對不是x86組裝定義的主要資源(這是一個很好的例子,爲什麼依賴專家文檔比用戶生成的文檔更好)。使用谷歌找到另一個來源,並解釋! –
'je'不需要知道條件是真還是假,'je'是'jz'的別名,'jz'是'如果設置了零標記則跳轉'。所以無論最後一條指令是否修改ZF,都會預測下一個「je」是否會跳轉(ZF = 1)或不是(ZF = 0)。新的asm程序員沒有得到它的有趣後果之一是編寫像'sub ax,1''cmp ax,0''jne myLoop'這樣的代碼......在那裏不需要'cmp',已經以足夠的方式爲該jne工作設置了ZF(但更合理的是使用'jnz myLoop'別名,即讀作「jump not zero loop」 - 幾乎是英語。 – Ped7g