वेरिएबल - असेंबली लैंग्वेज

Prahlad Godara ------ From DOOSEEP

NASM चर किसी विशिष्ट नाम के साथ किसी भी डेटा को संग्रहीत करने के लिए भंडारण स्थान को आरक्षित करते हैं। जब भी उस डेटा या मूल्य के लिए एक निर्देशात्मक आवश्यकता होती है, तो उस डेटा को आसानी से वेरिएबल के नाम से एक्सेस किया जा सकता है।

NASM असेंबली भाषा में चर (Variable)

डेटा के लिए संग्रहण स्थान आवंटित करना

वैरिएबल सिंटैक्स - डेटा के लिए स्टोरेज एलोकेशन स्टेटमेंट

[variable-name]    define-directive    initial-value   [,initial-value]...

जहां, चर-नाम प्रत्येक भंडारण स्थान के लिए पहचानकर्ता है। असेंबलर डेटा सेगमेंट में परिभाषित प्रत्येक चर नाम के लिए एक ऑफसेट मान जोड़ता है।

शुरुआत में ही डेटा प्रकार और मान सेट

डिफाइन डायरेक्ट के पांच बुनियादी प्रकार

Directive Purpose Storage Space
DB Define Byte allocates 1 byte
DW Define Word allocates 2 bytes
DD Define Doubleword allocates 4 bytes
DQ Define Quadword allocates 8 bytes
DT Define Ten Bytes allocates 10 bytes

निम्नलिखित निर्देशों का उपयोग करने के कुछ उदाहरण हैं -


    choice		    DB	'P'
    number		    DW	12345
    neg_number   	DW	-12345
    big_number	    DQ	123456789
    real_number1	DD	1.234
    real_number2	DQ	123.456
कृपया ध्यान दें
  1. अक्षर के प्रत्येक बाइट को हेक्साडेसिमल में इसके ASCII मान के रूप में संग्रहीत किया जाता है।
  2. प्रत्येक दशमलव मान स्वचालित रूप से इसके 16-बिट बाइनरी समकक्ष में परिवर्तित हो जाता है और एक हेक्साडेसिमल संख्या के रूप में संग्रहीत होता है।
  3. प्रोसेसर लिटिल-एंडियन बाइट ऑर्डर का उपयोग करता है।
  4. नकारात्मक संख्याओं को इसके 2 के पूरक प्रतिनिधित्व में बदल दिया जाता है।
  5. लघु और लंबे फ्लोटिंग-पॉइंट नंबरों को क्रमशः 32 या 64 बिट्स का उपयोग करके दर्शाया जाता है।

निम्नलिखित कार्यक्रम परिभाषित निर्देश के उपयोग को दर्शाता है -


    section .text
    global _start          ;लिंकर के लिए घोषित (gcc)
     
 _start:                   ;लिंकर प्रवेश 
    mov	edx,1		  ;message length
    mov	ecx,choice        ;message to write
    mov	ebx,1		  ;file descriptor (stdout)
    mov	eax,4		  ;सिस्टम कॉल नंबर। (sys_write)
    int	0x80		  ;call kernel
 
    mov	eax,1		  ;सिस्टम कॉल नंबर। (sys_exit)
    int	0x80		  ;call kernel
 
 section .data
 choice DB 'P'
            

जब उपरोक्त कोड संकलित और रन किया जाता है, तो यह निम्नलिखित परिणाम प्राप्त होता है -

P

UNINITIALIZED डेटा के लिए भंडारण स्थान आवंटित करना

आरक्षित निर्देशों का उपयोग बिना डेटा के स्थान को दुबारा यूज़ के लिए किया जाता है। आरक्षित निर्देश एक एकल ऑपरेंड लेते हैं जो आरक्षित होने के लिए अंतरिक्ष की इकाइयों की संख्या को निर्दिष्ट करता है। प्रत्येक परिभाषित निर्देश में संबंधित आरक्षित निर्देश है।

रिजर्व निर्देश के पांच बुनियादी प्रकार

Directive Purpose
RESB Reserve a Byte
RESW Reserve a Word
RESD Reserve a Doubleword
RESQ Reserve a Quadword
REST Reserve a Ten Bytes

Multiple Definitions

आपके पास एक कार्यक्रम में कई डेटा परिभाषा विवरण हो सकते हैं। उदाहरण के लिए −


    choice	  DB 	'a' 		 ;ASCII of y = 79H
    number1	  DW 	12345 	 ;12345D = 3039H
    number2    DD  12345679  ;123456789D = 75BCD15H

असेंबलर कई चर परिभाषाओं के लिए सन्निहित स्मृति आवंटित करता है।

Multiple Initializations

टाइम्स निर्देश एक ही मूल्य के लिए कई इनिशियलाइज़ेशन की अनुमति देता है। उदाहरण के लिए, आकार 9 के अंक नाम के एक सरणी को निम्न कथन का उपयोग करके शून्य पर परिभाषित और आरंभ किया जा सकता है−


उदाहरण

    section	.text
    global _start        ;लिंकर के लिए (ld)
     
 _start:                 ;linker entry point
    mov	edx,9		;लंबाई
    mov	ecx, atype	;write
    mov	ebx,1		;file descriptor (stdout)
    mov	eax,4		;सिस्टम कॉल नंबर। (sys_write)
    int	0x80		;call kernel
 
    mov	eax,1		;सिस्टम कॉल नंबर। (sys_exit)
    int	0x80		;call kernel
 
 section	.data
 atype   times 9 db 'a'

जब उपरोक्त कोड असेम्ब्ल और निष्पादित किया जाता है, तो यह निम्नलिखित परिणाम का उत्पादन करता है −

aaaaaaaaa

Read in- English
Tags- hindi education, Variable - Assembly Language , assembly language, type of Assembly Program Variable in hindi, example program in assembly language
कोई टिप्पणी नहीं:
एक टिप्पणी भेजें