2010-10-08 8 views
24

क्या x86 रजिस्टर movsb निर्देश में स्रोत स्थान को दर्शाता है?क्या x86 रजिस्टर movsb निर्देश में स्रोत स्थान को दर्शाता है?

+37

यह 'osdev.org' का प्रवेश प्रश्न है! –

+0

बिल्कुल! जब भी मैं osdev – geek1000

+4

@ManuHegde हे में शामिल होना चाहता था, तब भी मैं गुम हो गया था, कम से कम यह संभावना है कि आप एक बॉट हैं। सवाल यह था कि सवाल क्या था। ;-) –

उत्तर

32

32-बिट मोड में, esi

विशिष्ट में, movsb प्रतियां ds:esi से es:edi, समायोजित दोनों esi और edi द्वारा 1, या तो ऊपर या नीचे दिशा ध्वज के आधार पर करने के लिए एक बाइट।

+6

आज के युवाओं के लिए संबंधित x86 ट्रिविया का एक बिट - 'एसआई '(या 32-बिट दुनिया में' ईएसआई ')' स्रोत सूचकांक 'के लिए खड़ा है और' DI'' गंतव्य सूचकांक 'के लिए खड़ा है, जो कि से आता है इन रजिस्टरों के विशेष उद्देश्य के उपयोग। –

+1

यह भी पता चले कि डिफॉल्ट सेगमेंट रजिस्टरों डीएस और ईएस को अन्य सेगमेंट रजिस्टरों का उपयोग करने के लिए ओवरराइड किया जा सकता है। –

+5

@ आई। जे। केनेडी: केवल 'डीएस' को ओवरराइड किया जा सकता है। 'Es' तय है। –

7

कैसे मैनुअल

से कि जानकारी निकालने के लिए अब जब कि तुम osdev.org में लॉग इन किया है, यह वास्तव में यह सीखने के द्वारा अपने नैतिक ऋण का भुगतान करने का समय है। :-)

Intel Manual Volume 2 Instruction Set Reference - 325383-056US September 2015 अनुभाग "स्ट्रिंग के लिए स्ट्रिंग से movs/MOVSB ​​/ MOVSW/MOVSD/MOVSQ-चाल डाटा" कहते हैं:

बाइट, शब्द ले जाता है, या दूसरे संकार्य के साथ निर्दिष्ट doubleword (स्रोत ऑपरेंड) पहले ऑपरेंड (गंतव्य ऑपरेंड) के साथ निर्दिष्ट स्थान पर। स्रोत और गंतव्य दोनों ऑपरेशन स्मृति में स्थित हैं। ईएसआई या डी एस: स्रोत संकार्य के पते के डी एस से पढ़ी जाती एसआई पंजीकृत करता

मिनिमल परीक्षण कार्यक्रम

अंत में, आप एक न्यूनतम कार्यक्रम अनुदेश का उपयोग करता है, तो देखने के लिए करना चाहिए आप सही तरीके से यह समझ लिया है: दावे on GitHub के साथ इस की

section .data 
    src db 0 
    dest db 1 
section .text 
global _start 
_start: 
    mov esi, src 
    mov edi, dest 
    cld 
    movsb 
    /* dest == 0*/ 

Runnable संस्करण।

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