x86 Assembler中是否有類似模運算符的東西?彙編語言 - 如何進行模數?
27
A
回答
54
DIV
指令(以及它對應的有符號數IDIV
)給出了商和餘數(模)。 DIV r16
用一個16位操作數將DX:AX
中的一個32位數除,並將商存儲在AX
中,其餘部分存儲在DX
中。
實施例:
mov dx, 0
mov ax, 1234
mov bx, 10
div bx ; Divides 1234 by 10. DX = 4 and AX = 123
在32位組件可以做div ebx
通過EBX
劃分在EDX:EAX
64位操作數。有關更多信息,請參閱英特爾Architectures Software Developer’s Manuals。
+2
但GCC不使用div,因爲它很慢:http://stackoverflow.com/questions/4361979/how-does-在-GCC-與實施的模塊,工作和爲什麼 - 做 - 它 - 不使用,該 –
13
如果計算模2的冪次,則使用按位AND更簡單並且通常比執行除法更快。如果b
是2的冪,a % b == a & (b - 1)
。
例如,我們在寄存器EAX中,取模64。
最簡單的方法是AND EAX, 63
,因爲63是二進制的111111。
被掩蓋的高位數對我們沒有興趣。試試看!
類比而言,不是使用MUL或DIV的二次冪,而是使用位移。不過,請注意簽名的整數!
相關問題
- 1. 以彙編語言進行比較
- 2. 彙編語言
- 3. CMP彙編語言
- 4. 彙編語言:cbw
- 5. 彙編語言 - LDI
- 6. 彙編語言環
- 7. MIPS彙編語言
- 8. 功能彙編語言
- 9. MIPS彙編語言
- 10. 8086彙編語言
- 11. x86彙編語言
- 12. 將彙編語言宏轉換爲純彙編語言
- 13. 彙編語言[EMU 8086]
- 14. 與彙編語言拼搏
- 15. 分割用匯編語言
- 16. 彙編語言的設計模式
- 17. 彙編語言子程序
- 18. MIPS彙編語言(Power2)
- 19. 如何在彙編語言中循環
- 20. 如何創建彙編語言?
- 21. 如何操作位彙編語言MIPS32
- 22. 彙編語言diff工具
- 23. 彙編語言優化器
- 24. 彙編語言x86 Irvine32
- 25. 彙編語言 - 堆棧機
- 26. 彙編語言到C
- 27. 彙編語言NASM錯誤
- 28. 彙編語言的指針
- 29. 彙編語言介紹
- 30. Doxygen和彙編語言
http://stackoverflow.com/questions/4361979/calculating-modulo-in-assembly –