मेरे पास निम्न आदेश हैं

DAT DW 128,256,64,32
MOV CX, DAT[4]

जैसा कि मुझे पता है, DAT[4] का मतलब है कि हमें चौथे इंडेक्स का मान मिलेगा, लेकिन इस मामले में हमारे पास ऐसा कोई इंडेक्स नहीं है।
क्या आप कृपया मुझे बता सकते हैं कि CX रजिस्टर में MOV CX, DAT[4] के बाद मेरे पास क्या होगा?

0
Varuzhan Stepanyan 14 जून 2020, 19:55

1 उत्तर

सबसे बढ़िया उत्तर

जैसा कि मुझे पता है, डीएटी [४] का मतलब है कि हमें चौथे सूचकांक का मूल्य मिलेगा,

असेंबली भाषा में हम उच्च स्तरीय भाषाओं जैसे संपूर्ण तत्वों के आधार पर सरणी अनुक्रमण का उपयोग नहीं करते हैं। एक उच्च स्तरीय भाषा में DAT[4] पांचवें सरणी तत्व को पुनः प्राप्त करेगा (यदि अनुक्रमण 0 से शुरू हुआ)।

असेंबली भाषा में वर्गाकार कोष्ठकों के बीच की संख्या सरणी की शुरुआत से ऑफसेट होती है और बाइट्स में मापी जाती है। आपका उदाहरण:

DAT DW 128,256,64,32

हेक्स का उपयोग करके फिर से लिखा गया:

DAT DW 0080h, 0100h, 0040h, 0020h

खुद को स्मृति में प्रस्तुत करता है जैसे (x86 थोड़ा एंडियन होने के नाते):

80h, 00h, 00h, 01h, 40h, 00h, 20h, 00h
^                   ^
offset 0            offset 4

ऑफ़सेट 4 के शब्द में 40h का निम्न बाइट और 00h का उच्च बाइट होता है।
इसलिए MOV CX, DAT[4] CX को 0040h के साथ लोड करेगा जो कि दशमलव में 64 है।

1
Sep Roland 14 जून 2020, 19:54