सीपीयू रजिस्टर असेम्ब्ली के लिए - सामान्य नियंत्रण खंड रजिस्टर

Prahlad Godara ------ From DOOSEEP

Register-computer-memor from dooseep

रजिस्टर एक प्रकार की कंप्यूटर मेमोरी है जिसका उपयोग सीपीयू द्वारा तुरंत उपयोग किए जा रहे डेटा और निर्देशों को जल्दी से स्वीकार, स्टोर और ट्रांसफर करने के लिए किया जाता है। सीपीयू द्वारा उपयोग किए जाने वाले रजिस्टरों को प्रोसेसर रजिस्टर भी कहा जाता है।

Registers in assembly

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

प्रोसेसर के कार्य को गति देने के लिए प्रोसेसर में कुछ आंतरिक मेमोरी स्टोरेज स्थान शामिल होते हैं, जिन्हें रजिस्टर कहा जाता है । यह बाकी मेमोरी से काफी तेज होते है। एक प्रोसेसर रजिस्टर में एक निर्देश, एक भंडारण पता, या कोई डेटा (जैसे बिट अनुक्रम या व्यक्तिगत वर्ण) हो सकता है।

हम रजिस्टर को समझने के लिए IA-32 आर्किटेक्चर या 32bit और 16 बिट रजिस्टरों प्रोसेसर का उपयोग करेंगे।

रजिस्टरों के प्रकार

कंप्यूटर में डाटा प्रोसेसिंग और सीपीयू के काम में मदद करने के लिए रजिस्टरों को उनके काम के अनुसार अलग-अलग श्रेणियों में बांटा गया है। उदाहरण के लिए - सामान्य रजिस्टर, नियंत्रण रजिस्टर, खंड रजिस्टर।

सामान्य रजिस्टर

सामान्य रजिस्टर - इन रजिस्टरों का उपयोग सामान्य डेटा, अंकगणित, तार्किक अगले निर्देश के बिंदु आदि के सामान्य प्रसंस्करण के लिए किया जाता है। सामान्य रजिस्टरों को निम्नलिखित समूहों में विभाजित किया जा सकता है - डेटा रजिस्टर, पॉइंटर रजिस्टर और इंडेक्स रजिस्टर।

  1. डेटा रजिस्टर - अंकगणित, तार्किक और अन्य कार्यों के लिए चार 32-बिट डेटा रजिस्टरों का उपयोग किया जाता है। इन 32-बिट रजिस्टरों का तीन तरीकों से उपयोग किया जा सकता है -
    • पूर्ण 32-बिट डेटा 0 से 31 इंडेक्स में रजिस्टर करता है: EAX, EBX, ECX, EDX।
    • 32-बिट रजिस्टरों के निचले भाग इंडेक्स 0 से 15 हैं। चार 16-बिट डेटा रजिस्टर AX, BX, CX और DX हैं।
    • उपर्युक्त चार 16-बिट रजिस्टरों के निचले 0 से लेकर 7 इंडेक्स तक (AL , BL , CL ,DL )और उच्चतर 8 से लेकर 15 इंडेक्स तक हिस्सों को आठ 8-बिट डेटा
    • रजिस्टरों के रूप में उपयोग किया जा सकता है।

    Data Registers 32-bit registers 16-bit registers EXAEBXECXEDX 31 16 15 0 AX AccumulatorBX BaseCX CountDX Data AH ALBH BLCH CLDH DL

    इनमें से कुछ डेटा रजिस्टरों का अंकगणितीय संचालन में विशिष्ट उपयोग होता है।

    • AX प्राथमिक एक्युमुलेटर हैइसका उपयोग इनपुट/आउटपुट और अधिकांश अंकगणितीय निर्देशों में किया जाता है। उदाहरण के लिए, गुणन ऑपरेशन में, एक ऑपरेंड को ऑपरेंड के आकार के अनुसार EAX या AX या AL रजिस्टर में संग्रहित किया जाता है।
    • BX को आधार रजिस्टर के रूप में जाना जाता है - क्योंकि इसका उपयोग इंडेक्स एड्रेसिंग में किया जा सकता है.
    • CX को काउंट रजिस्टर - ECX के रूप में, CX रजिस्टर पुनरावृत्त संचालन में लूप काउंट को स्टोर करते हैं.
    • DX डेटा रजिस्टरइसका उपयोग इनपुट/आउटपुट ऑपरेशंस में भी किया जाता है। इसका उपयोग AX रजिस्टर के साथ-साथ DX के साथ बड़े मूल्यों को शामिल करने वाले कार्यों को गुणा और विभाजित करने के लिए भी किया जाता है.

  2. Pointer registers -पॉइंटर रजिस्टर 32-बिट EIP, ESP, and EBP रजिस्टर हैं और 16-बिट राइट पार्ट आईपी, IP और BP हैं। सूचक रजिस्टरों की तीन श्रेणियां हैं
    Pointer Registers 32-bit registers 16-bit registers ESPBSP 31 16 15 0 SP Stack PointerBP Base Pointer SPBP
    • निर्देश पोइंटर (IP)- एक 16-बिट आईपी रजिस्टर है जो अगले निर्देश के ऑफसेट पते को निष्पादित करने के लिए संग्रहीत करता है। IP, CS रजिस्टर (CS:IP के रूप में) के सहयोग से कोड सेगमेंट में वर्तमान निर्देश का पूरा पता देता है।
    • स्टैक पॉइंटर (SP) - SP रजिस्टर प्रोग्राम स्टैक के भीतर ऑफ़सेट मान प्रदान करता है। SP , SS रजिस्टर (SS:SP) के सहयोग से, प्रोग्राम स्टैक के भीतर डेटा या पते की वर्तमान स्थिति का प्रतिनिधित्व करता है।
    • बेस पॉइंटर (BP) -16-बिट BP रजिस्टर मुख्य रूप से एक सबरूटीन को पारित पैरामीटर चर को संदर्भित करने में मदद करता है। पैरामीटर का स्थान प्राप्त करने के लिए SS रजिस्टर में पता BP में ऑफसेट के साथ संयुक्त है। BP को विशेष संबोधन के लिए आधार रजिस्टर के रूप में DI और SI के साथ भी जोड़ा जा सकता है।

  3. इंडेक्स रजिस्टर - 32-बिट इंडेक्स रजिस्टर, ESI और EDI, और उनके 16-बिट सबसे दाहिने हिस्से। एसआई और डीआई, अनुक्रमित पते के लिए उपयोग किए जाते हैं और कभी-कभी जोड़ और घटाव में उपयोग किए जाते हैं। इंडेक्स पॉइंटर्स के दो सेट हैं −
    Pointer Registers ESPBSP 31 16 15 0 SI Source IndexBI Destination SIDI
    • Source Index (SI)− इसका उपयोग स्ट्रिंग ऑपरेशंस के लिए सोर्स इंडेक्स के रूप में किया जाता है.
    • डेस्टिनेशन इंडेक्स (DI) - इसका उपयोग स्ट्रिंग ऑपरेशंस के लिए गंतव्य सूचकांक के रूप में किया जाता है।

कंट्रोल रजिस्टर्स

32-बिट निर्देश सूचक रजिस्टर और संयुक्त 32-बिट फ्लैग रजिस्टर को नियंत्रण रजिस्टर माना जाता है।

कई निर्देशों में तुलना और गणितीय गणनाएं शामिल होती हैं और फ़्लैग्स की स्थिति में परिवर्तन होता है और कुछ अन्य सशर्त निर्देश नियंत्रण प्रवाह को अन्य स्थान पर ले जाने के लिए इन स्टेटस फ़्लैग्स के मान का परीक्षण करते हैं।

सामान्य फ़्लैग बिट हैं:

<ओल>
  • ओवरफ़्लो फ़्लैग (OF) - यह एक हस्ताक्षरित अंकगणितीय ऑपरेशन के बाद डेटा के एक उच्च-क्रम बिट (बाएं बिट) के अतिप्रवाह को इंगित करता है।
  • दिशा ध्वज (DF) - यह स्ट्रिंग डेटा को ले जाने या तुलना करने के लिए बाएँ या दाएँ दिशा निर्धारित करता है। जब DF मान 0 होता है, तो स्ट्रिंग ऑपरेशन बाएँ से दाएँ दिशा में होता है और जब मान 1 पर सेट होता है, तो स्ट्रिंग ऑपरेशन दाएँ से बाएँ दिशा में होता है।
  • इंटरप्ट फ्लैग (IF)- यह निर्धारित करता है कि कीबोर्ड एंट्री आदि जैसे बाहरी व्यवधानों को अनदेखा या संसाधित किया जाना है या नहीं। मान 0 होने पर यह बाहरी व्यवधान को अक्षम कर देता है और 1 पर सेट होने पर व्यवधान को सक्षम कर देता है।
  • ट्रैप फ्लैग (TF) - यह सिंगल-स्टेप मोड में प्रोसेसर के संचालन को सेट करने की अनुमति देता है। हमारे द्वारा उपयोग किया जाने वाला DEBUG प्रोग्राम ट्रैप फ़्लैग सेट करता है, ताकि हम एक बार में एक निर्देश को निष्पादित कर सकें।
  • साइन फ्लैग (SF) − यह एक अंकगणितीय संक्रिया के परिणाम का चिह्न दिखाता है। यह ध्वज अंकगणितीय ऑपरेशन के बाद डेटा आइटम के चिह्न के अनुसार सेट किया गया है। चिह्न सबसे बाईं ओर के बिट के उच्च-क्रम द्वारा इंगित किया जाता है। एक सकारात्मक परिणाम SF के मान को 0 से साफ़ करता है और नकारात्मक परिणाम इसे 1 पर सेट करता है।
  • Zero Flag (ZF) − यह अंकगणित या तुलना संक्रिया के परिणाम को दर्शाता है। एक गैर-शून्य परिणाम शून्य फ़्लैग को 0 पर साफ़ कर देता है, और एक शून्य परिणाम इसे 1 पर सेट कर देता है।
  • सहायक कैरी फ्लैग (AF) - इसमें अंकगणितीय संक्रिया के बाद बिट 3 से बिट 4 तक कैरी होता है; विशेष अंकगणित के लिए उपयोग किया जाता है। AF तब सेट होता है जब 1-बाइट अंकगणितीय ऑपरेशन बिट 3 से बिट 4 में कैरी का कारण बनता है।
  • पैरिटी फ़्लैग (PF) - यह एक अंकगणितीय संक्रिया से प्राप्त परिणाम में 1-बिट्स की कुल संख्या को इंगित करता है। 1-बिट्स की एक सम संख्या पैरिटी फ़्लैग को 0 पर साफ़ कर देती है और 1-बिट्स की एक विषम संख्या पैरिटी फ़्लैग को 1 पर सेट कर देती है।
  • कैरी फ्लैग (CF)- इसमें एक अंकगणितीय ऑपरेशन के बाद उच्च-क्रम बिट (सबसे बाईं ओर) से 0 या 1 का कैरी होता है। यह किसी शिफ्ट या रोटेट ऑपरेशन के अंतिम बिट की सामग्री को भी संग्रहीत करता है।
  • निम्न तालिका 16-बिट फ्लैग रजिस्टर में फ्लैग बिट्स की स्थिति दर्शाती है:

    Flag: O D I T S Z A P C
    Bit no: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

    सेगमेंट रजिस्टर

    खंड डेटा, कोड और ढेर रखने के लिए एक कार्यक्रम में परिभाषित विशिष्ट क्षेत्र हैं। तीन मुख्य खंड हैं - <उल>
  • कोड खंड − इसमें निष्पादित किए जाने वाले सभी निर्देश शामिल होते हैं। एक 16-बिट कोड सेगमेंट रजिस्टर या सीएस रजिस्टर कोड सेगमेंट के शुरुआती पते को स्टोर करता है।
  • डेटा खंड − इसमें डेटा, स्थिरांक और कार्य क्षेत्र शामिल हैं। एक 16-बिट डेटा सेगमेंट रजिस्टर या डीएस रजिस्टर डेटा सेगमेंट के शुरुआती पते को स्टोर करता है।
  • स्टैक सेगमेंट − इसमें प्रक्रियाओं या सबरूटीन्स के डेटा और वापसी पते शामिल हैं। इसे 'स्टैक' डेटा संरचना के रूप में कार्यान्वित किया जाता है। स्टैक सेगमेंट रजिस्टर या एसएस रजिस्टर स्टैक के शुरुआती पते को स्टोर करता है।
  • डीएस, सीएस और एसएस रजिस्टरों के अलावा, अन्य अतिरिक्त सेगमेंट रजिस्टर हैं - ईएस (अतिरिक्त सेगमेंट), एफएस और जीएस, जो डेटा स्टोर करने के लिए अतिरिक्त सेगमेंट प्रदान करते हैं।

    असेंबली प्रोग्रामिंग में, प्रोग्राम को मेमोरी स्थानों तक पहुँचने की आवश्यकता होती है। एक खंड के भीतर सभी मेमोरी स्थान खंड के शुरुआती पते के सापेक्ष होते हैं। एक खंड एक ऐसे पते से शुरू होता है जो समान रूप से 16 या हेक्साडेसिमल 10 से विभाज्य है। इसलिए, ऐसे सभी मेमोरी पतों में सबसे दाहिना हेक्स अंक 0 है, जो आमतौर पर खंड रजिस्टरों में संग्रहीत नहीं होता है।

    सेगमेंट रजिस्टर सेगमेंट के शुरुआती पतों को स्टोर करता है। एक खंड के भीतर डेटा या निर्देश का सटीक स्थान प्राप्त करने के लिए, ऑफसेट मान (या विस्थापन) की आवश्यकता होती है। किसी खंड में किसी स्मृति स्थान को संदर्भित करने के लिए, प्रोसेसर खंड रजिस्टर में खंड पते को स्थान के ऑफसेट मान के साथ जोड़ता है।

    Example - असेंबली प्रोग्रामिंग में रजिस्टरों के उपयोग को समझने के लिए निम्नलिखित सरल प्रोग्राम को देखें। यह प्रोग्राम एक साधारण संदेश के साथ स्क्रीन पर 9 # प्रदर्शित करता है
     
    section	.text
       global _start	 ;लिंकर के लिए घोषित (gcc)
    	
    _start:	         ;लिंकर प्रवेश बिंदु
       mov	edx,len  ;संदेश की लंबाई
       mov	ecx,msg  ;लिखने के लिए संदेश
       mov	ebx,1    ;फाइल डिस्क्रिप्टर (stdout)
       mov	eax,4    ;system call number (sys_write)
       int	0x80     ;कॉल कर्नेल
    	
       mov	edx,7    ;संदेश की लंबाई
       mov	ecx,s2   ;लिखने के लिए संदेश
       mov	ebx,1    ;फाइल डिस्क्रिप्टर (stdout)
       mov	eax,4    ;सिस्टम कॉल (sys_write)
       int	0x80     ;call kernel
    	
       mov	eax,1    ;सिस्टम कॉल (sys_exit)
       int	0x80     ;कॉल कर्नेल
    	
    section	.data
    msg db 'Displaying 7 hass',0xa ;एक संदेश
    len equ $ - msg  ;संदेश की लम्बाई
    s2 times 7 db '#'  

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

     
    Displaying 7 hsss
    #######
        
    Read in- English
    Tags- type or registers in computer, what is processor register, register memory, प्रोसेसर रजिस्टर क्या है, प्रोसेसर रजिस्टर क्या है, register prakar kitne hi, register kese kahte hi
    कोई टिप्पणी नहीं:
    एक टिप्पणी भेजें