الجمعية س 86 التي تشارك السجلات في الضرب والقسمة

StackOverflow https://stackoverflow.com//questions/10695472

  •  12-12-2019
  •  | 
  •  

سؤال

هنا هو رمز بلدي:

.data
        ans1 db 0
        ans2 db 0
.data? 
        in1 db 100 dup(?) ; first input value
        in2 db 100 dup(?) ; second input value
.code
start:
        ; here I have code for input 
        ; I get 2 nums, and I want to multiply and divide them
        ; here is what I already have to mul/div them:
        lea eax, in1
        lea edx, in2
        imul eax ; multiply in1 and in2
        mov ans1, eax ; move result to ans1
        xor eax, eax ; clear register
        xor edx, edx ; " "
        lea eax, in1
        lea edx, in2
        idiv eax ; divide in1 by in2
        mov ans2, eax ; move result to ans2
        lea eax, ans1
        push eax
        call StdOut ; print ans1 (I have include instructions at the start)
        lea ebx, ans2
        push ebx  
        call StdOut ; print ans2 ("")

سؤالي:1.بالضبط أي سجل أضع in1 و in2 لمضاعفة لهم?2.""لتقسيمهم?3.أين يتم تخزين الباقي في قسم?

ولا تقلق بشأن بيان عام ، هل يمكن أن تخبرني فقط عن السجلات التي ستعمل بالتأكيد (في أقرب وقت ممكن) في الضرب والقسمة.

ملاحظة:قد يقول البعض أن هذا المنصب هو تكرار الجمعية اكس 86-ماسم 32:الانهيار المطلق للضرب والقسمة ، ولكن (صححني إذا كنت مخطئا) من الأكثر احتراما لمجتمع المنتدى إنشاء منشور جديد ، بدلا من إضافة تعليقات إلى المنشور القديم وجعله خارج الموضوع.

هل كانت مفيدة؟

المحلول

إذا كنت تكتب التجميع ، فلا يجب أن تكون بعيدا جدا عن المواصفات المرجعية:

Unsigned multiply (AX ← AL ∗ r/m8).

يخبرك بكل ما تحتاج إلى معرفته.سيتم وضع النتيجة في AX.المصادر هي آل وأي سجل 8 بت أو موقع الذاكرة.

تحرير

لم يتم/لم يتم تنسيق سؤالك بشكل صحيح ، كانت أسئلتك على نفس السطر.

التقسيم هو DIV:

Unsigned divide AX by r/m8, with result stored in AL ← Quotient, AH ← Remainder

بجدية:اقرأ الدليل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top