मैं इस बारे में उलझन में हूं कि गुणा और विभाजित संचालन x86 असेंबली में कैसे काम करते हैं। उदाहरण के लिए, 8-बिट के साथ सौदों के बाद नीचे दिया गया कोड बहुत मुश्किल प्रतीत नहीं होता है।x86 असेंबली गुणा और निर्देश निर्देशों को विभाजित करें, 16-बिट और उच्च
कि 8-बिट गुणा:
; User Input:
; [num1], 20
; [num2] , 15
mov ax, [num1] ; moves the 8 bits into AL
mov bx, [num2] ; moves the 8 bits into BL
mul bl ; product stored in AX
print ax
लेकिन क्या होता है जब आप दो 16-बिट संख्याओं को गुणा करना चाहते हैं? कैसे 8 बिट संख्याओं के साथ दो 16 बिट संख्याओं को एक साथ बढ़ाया जाएगा?
मैं उलझन में हूं कि मूल्यों को किस रजिस्टर्ड में संग्रहीत किया जाएगा। क्या उन्हें AL और AH में संग्रहीत किया जाएगा या यह केवल 16-बिट संख्या को AX में संग्रहीत करेगा। दिखाने के लिए मैं क्या मतलब है:
; User Input:
; [num1], 20
; [num2], 15
mov eax, [num1] ; Does this store the 16-bit number in AL and AH or just in AX
mov ebx, [num2] ; Does this store the 16-bit number in BL and BH or just in BX
mul ??? ; this register relies on where the 16-bit numbers are stored
print eax
किसी पर थोड़ा विस्तार से बता सकता है कि कैसे गुणा और विभाजित काम करता है? (विशेष रूप से 16-बिट और 32-बिट संख्या के साथ? मैं बिट्स को घुमाने के लिए अगर मान कम अल में एएच संग्रहित कर रहे हैं और एक बस mov num1
और num2
ax
और bx
में क्रमशः की जरूरत होगी?
या कर सकते हैं और फिर उन्हें गुणा eax
में उत्पाद प्राप्त करने के लिए
आप पढ़ कोशिश की [Documenta tion] (http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html)? –