2009-09-27 10 views

उत्तर

22

आप MOVSB ​​तरह निर्देशों का उपयोग कर रहे हैं, सी, जबकि di estination रजिस्टर के रूप में माना जाता है, रों स्रोत देखें रजिस्टर के रूप में माना जाता है। लेकिन वे सामान्य x86 रजिस्ट्रार दोनों हैं।

10

मेरी असेंबली थोड़ा जंगली है, लेकिन एक स्रोत सूचकांक है, दूसरा गंतव्य सूचकांक है। movsb जैसे निर्देश SI पर इंगित स्मृति स्थान से एक बाइट कॉपी करेंगे, और इसे DI पर इंगित स्मृति स्थान पर ले जाएं, और फिर दोनों को बढ़ाएं, इसलिए यदि आप SI+1 पर DI+1 पर संग्रहीत बाइट कॉपी करना चाहते हैं, तो यह केवल एक और movsb निर्देश लेता है।

0

जैसा ऊपर बताया गया है कि गंतव्य सूचकांक के लिए डी खड़ा है और सी स्रोत सूचकांक के लिए खड़ा है, जब हम स्मृति से डेटा ले जाना चाहते हैं तो हम si eg, mov ax, [si] का उपयोग करते हैं। और जब हम स्मृति को डेटा ले जाना चाहते हैं तो हम di का उपयोग करते हैं। जैसे, mov [di], कुल्हाड़ी

दोनों 16 बिट रजिस्टर कर रहे हैं और 8 बिट

+2

आप mov [si], ax और mov ax, [di] दोनों का उपयोग कर सकते हैं, यदि आप सरल MOV निर्देश का उपयोग कर रहे हैं तो वे मूल रूप से वही हैं, जैसे आप mov [bx], ax का उपयोग कर सकते हैं। जब आप एमओवीएसबी जैसे निर्देशों का उपयोग कर रहे हैं तो सीपीयू मानता है कि एसआई स्रोत है और DI गंतव्य है, लेकिन जब आप इसे मैन्युअल रूप से करते हैं तो आप दोनों को करने के लिए उपयोग कर सकते हैं। – Bob

5

SI स्रोत इंडेक्स के लिए खड़ा है में विभाजित नहीं किया जा सकता। स्रोत सूचकांक को स्ट्रिंग निर्देश (LODS, MOVS, या CMPS) में पढ़ने वाले वर्तमान वर्ण के सूचक के रूप में उपयोग किया जाता है। अप्रत्यक्ष पते पर करते समय बीएसए या बीपी जोड़ने के लिए स्रोत इंडेक्स ऑफसेट के रूप में भी उपलब्ध है।
उदाहरण:

MOV [Bx + SI] , Ax 

यह निर्देश स्मृति स्थान जिसका पता Bx और एसआई का योग है में प्रतियां कुल्हाड़ी की सामग्री।

DI गंतव्य सूचकांक, वर्तमान चरित्र लिखा या एक स्ट्रिंग अनुदेश में तुलना की जा रही करने के लिए एक सूचक के रूप में इस्तेमाल के लिए खड़ा है।

यह एसआई की तरह ऑफसेट के रूप में भी उपलब्ध है।

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