2011-11-05 5 views

उत्तर

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-बिट संकार्य विभाजित करने के लिए। अधिक जानकारी के लिए Intels Architectures Software Developer’s Manuals देखें।

+2

लेकिन जीसीसी div का उपयोग नहीं करता है क्योंकि यह धीमा है: http://stackoverflow.com/questions/4361979/how-does- -जीसीसी-कार्यान्वयन के- मॉड्यूल-काम और क्यों होती है-यह नहीं उपयोग- –

13

यदि आप बिटुल का उपयोग करके मॉड्यूलो की दो शक्तियों की गणना करते हैं और विभाजन करने से सरल और आमतौर पर तेज़ होते हैं। यदि b दो की शक्ति है, a % b == a & (b - 1)

उदाहरण के लिए, चलिए रजिस्टर ईएक्स, मॉड्यूलो 64 में एक मूल्य लेते हैं।
सबसे आसान तरीका AND EAX, 63 होगा, क्योंकि 63 बाइनरी में 111111 है।

मुखौटे, उच्च अंक हमारे लिए रूचि नहीं रखते हैं। कोशिश करके देखो!

एनालॉगिक रूप से, एमयूएल या डीवी का उपयोग करने की बजाय दो, बिट-स्थानांतरण की शक्तियों के साथ जाने का तरीका है। हालांकि हस्ताक्षर किए गए पूर्णांक से सावधान रहें!

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^