هل بايت/كلمات/عناوين موقعة أو غير موقعة في Z80 Assembler/Machine Code؟
-
02-10-2019 - |
سؤال
أقوم بعمل محاكي لثنائيات Z80 ، لكن لا يمكنني معرفة ما إذا كانت جميع أنواع بيانات عدد صحيح موقعة أو غير موقعة من الدليل أو من جوجل. وكذلك أرقام السجلات A
,B
...HL
,BC
وما إلى ذلك موقعة أم لا؟
أيضًا ، في رمز الجهاز ، البايت/الكلمات/العناوين التي تأتي بعد الإرشادات كوسائط موقعة أو غير موقعة؟
كما في هذه الأمثلة (من مجموعة تعليمات 8080/Z80):
8080 Mnemonic Z80 Mnemonic Machine Code Operation
------------- ------------ ------------ ---------
MVI A,byte LD A,byte 3Ebyte A <- byte
LXI B,word LD BC,word 01word BC <- word
JMP address JP address C3address PC <- address
شكرا مقدما.
المحلول
يمكن أن تحتوي السجلات على إما ، ومعظم المعاملات تحسب كلتا الإجابات في نفس الوقت بسبب متمم ثنائي. ومع ذلك ، تحتاج بعض التعليمات إلى معلومات ما إذا كانت القيمة المحتوية موقعة أو غير موقعة. وهي موجودة في شكلين ، واحد لتوقيع وواحد لأحد غير موقعة. لا يمكن أن تتذكر ما إذا كان Z80 لديه أي من هذه.
انظر (1.) العناوين المطلقة غير موقعة ويتم توقيع العناوين النسبية (الفروع) ، لتكون قادرة على القفز للخلف.
نصائح أخرى
AKAIK ، لا تحتوي بيانات لغة التجميع وتعليمات النقل على معلومات علامة. تحدد كل من عمليات البيانات ونقل حجم البيانات فقط. معلومات التوقيع هي جزء من بعض التعليمات ، مثل تعليمات الضرب الموقعة/غير الموقعة. لذلك ، يمكن التعامل مع نفس السجل من خلال تعليمات IMUL باعتبارها عددًا صحيحًا موقّعًا ، وتعليمات MUL كمعديد غير موقّع.
في العديد من الآلات ، فإن الاختلافات الوحيدة بين الأرقام الموقعة وغير الموقعة هي الطريقة التي يتم بها إجراء مقارنات الحجم ، والطريقة التي يتم بها تحويل القيم الأقصر إلى أوقات أطول (لاحظ أن العديد من عمليات المعالجات تعقل بشكل فعال أنواعًا أقصر إلى أنواع أطول ، ويؤدي التقسيم بطبيعته مقارنات الحجم). عند إجراء أي نوع من العمليات بخلاف تلك المذكورة أعلاه ، يتم التعامل مع المعاملات الموقعة وغير الموقعة على وجه التحديد (قليلاً مقابل) بنفس الطريقة ، لذلك ليست هناك حاجة لتمييزها.