நிபந்தனையற்ற மாற்றங்கள். நிரலாக்க MP சாதனங்களின் அடிப்படைகள் (விரிவுரை) பரிமாற்ற கட்டளைகளை கட்டுப்படுத்தவும்

  • 10.01.2024

எண்கணித கணக்கீடுகளின் வழிமுறைகளுடன், நுண்செயலி அறிவுறுத்தல் அமைப்பு தருக்க தரவு மாற்றத்திற்கான வழிமுறைகளையும் கொண்டுள்ளது. தர்க்க ரீதியாக நாம் அத்தகைய தரவு மாற்றங்களைக் குறிக்கிறோம், அவை அடிப்படையாக உள்ளன முறையான தர்க்க விதிகள்.

முறையான தர்க்கம் உண்மை மற்றும் தவறான அறிக்கைகளின் மட்டத்தில் செயல்படுகிறது. ஒரு நுண்செயலிக்கு, இது வழக்கமாக முறையே 1 மற்றும் 0 என்று பொருள்படும். கணினியானது பூஜ்ஜியங்கள் மற்றும் ஒன்றின் மொழிக்கு சொந்தமானது, ஆனால் இயந்திர வழிமுறைகள் செயல்படும் தரவுகளின் சிறிய அலகு பைட் ஆகும். இருப்பினும், கணினி மட்டத்தில், மிகக் குறைந்த மட்டத்தில்-பிட் மட்டத்தில் செயல்படுவது பெரும்பாலும் அவசியம்.

அரிசி. 29. தருக்க தரவு செயலாக்க கருவிகள்


தருக்க தரவு மாற்றத்திற்கான வழிமுறைகளில் தருக்க கட்டளைகள் மற்றும் தருக்க செயல்பாடுகள் அடங்கும். அசெம்ப்ளர் அறிவுறுத்தலின் செயல்பாடு பொதுவாக ஒரு வெளிப்பாடாக இருக்கலாம், இது ஆபரேட்டர்கள் மற்றும் இயக்கங்களின் கலவையாகும். இந்த ஆபரேட்டர்களில் எக்ஸ்பிரஷன் பொருள்களில் தர்க்கரீதியான செயல்பாடுகளைச் செயல்படுத்தும் ஆபரேட்டர்களும் இருக்கலாம்.

இந்த கருவிகளை விரிவாக ஆராய்வதற்கு முன், தருக்க தரவு என்ன, அதில் என்ன செயல்பாடுகள் செய்யப்படுகின்றன என்பதைக் கருத்தில் கொள்வோம்.

தருக்க தரவு

தருக்க தரவு செயலாக்கத்திற்கான கோட்பாட்டு அடிப்படை முறையான தர்க்கம்.தர்க்கத்தில் பல அமைப்புகள் உள்ளன. மிகவும் பிரபலமான ஒன்று முன்மொழிவு கால்குலஸ்.ஒரு அறிக்கை என்பது எவருக்கும் சொல்லக்கூடிய எந்தவொரு அறிக்கையாகும் உண்மை,அல்லது பொய்.

முன்மொழிவு கால்குலஸ் என்பது சில அறிக்கைகளின் உண்மை அல்லது பொய்யைத் தீர்மானிக்கப் பயன்படுத்தப்படும் விதிகளின் தொகுப்பாகும்.

முன்மொழிவு கால்குலஸ் கணினி செயல்பாட்டின் கொள்கைகள் மற்றும் அதை நிரலாக்க அடிப்படை முறைகளுடன் மிகவும் இணக்கமாக இணைக்கப்பட்டுள்ளது. அனைத்து கணினி வன்பொருள் கூறுகளும் லாஜிக் சிப்களில் கட்டமைக்கப்பட்டுள்ளன. கணினியில் உள்ள தகவல்களை மிகக் குறைந்த மட்டத்தில் குறிப்பிடுவதற்கான அமைப்பு பிட் என்ற கருத்தை அடிப்படையாகக் கொண்டது. ஒரு பிட், இரண்டு நிலைகள் (0 (தவறு) மற்றும் 1 (உண்மை) மட்டுமே கொண்டது, இயற்கையாகவே முன்மொழிவு கால்குலஸில் பொருந்துகிறது.

கோட்பாட்டின் படி, பின்வரும் தருக்க செயல்பாடுகளை அறிக்கைகளில் (பிட்களில்) செய்ய முடியும்.


1. மறுப்பு (தர்க்கரீதியான இல்லை) -ஒரு செயல்பாட்டின் தர்க்கரீதியான செயல்பாடு, அதன் முடிவு அசல் ஓபராண்டின் தலைகீழ் ஆகும்.

இந்த செயல்பாடு பின்வரும் உண்மை அட்டவணையால் தனித்துவமாக வகைப்படுத்தப்படுகிறது (அட்டவணை 12).

அட்டவணை 12. தருக்க மறுப்புக்கான உண்மை அட்டவணை

2. தருக்கச் சேர்த்தல் (தர்க்கரீதியான உள்ளடக்கம் அல்லது) -இரண்டு ஓபராண்டுகளில் ஒரு தர்க்கரீதியான செயல்பாடு, அதன் முடிவு உண்மையாக இருக்கும் (1) ஒன்று அல்லது இரண்டு செயல்களும் உண்மையாக இருந்தால் (1), மற்றும் தவறான (0) இரண்டு செயல்களும் தவறாக இருந்தால் (0).

இந்த செயல்பாடு பின்வரும் உண்மை அட்டவணையைப் பயன்படுத்தி விவரிக்கப்பட்டுள்ளது (அட்டவணை 13).

அட்டவணை 13. தர்க்கரீதியான உள்ளடக்கத்திற்கான உண்மை அட்டவணை அல்லது

3. தருக்க பெருக்கல் (தர்க்கரீதியான மற்றும்) -இரண்டு ஆபராண்டுகளில் ஒரு தர்க்கரீதியான செயல்பாடு உண்மை (1) க்கு மதிப்பிட்டால் மட்டுமே இரண்டு செயலிகளும் சரி (1) மற்ற எல்லா நிகழ்வுகளிலும், செயல்பாட்டின் மதிப்பு தவறானது (0).

இந்த செயல்பாடு பின்வரும் உண்மை அட்டவணையைப் பயன்படுத்தி விவரிக்கப்பட்டுள்ளது (அட்டவணை 14).

அட்டவணை 14. தருக்க மற்றும் உண்மை அட்டவணை

4. தருக்க பிரத்தியேக சேர்த்தல் (தர்க்கரீதியான பிரத்தியேக அல்லது) -இரண்டு ஓபராண்டுகளில் ஒரு தர்க்கரீதியான செயல்பாடு, அதன் முடிவு உண்மை (1) இரண்டு செயல்களில் ஒன்று மட்டும் உண்மையாக இருந்தால் (1), மற்றும் தவறான (0) இரண்டு இயக்கங்களும் தவறானதாக இருந்தால் (0) அல்லது "உண்மை" (1). இந்த செயல்பாடு பின்வரும் உண்மை அட்டவணையைப் பயன்படுத்தி விவரிக்கப்பட்டுள்ளது (அட்டவணை 15).

அட்டவணை 15. தர்க்கரீதியான பிரத்தியேகமான உண்மை அட்டவணை அல்லது

நுண்செயலி அறிவுறுத்தல் அமைப்பில் இந்த செயல்பாடுகளை ஆதரிக்கும் ஐந்து வழிமுறைகள் உள்ளன. இந்த அறிவுறுத்தல்கள் இயக்கங்களின் பிட்களில் தருக்க செயல்பாடுகளைச் செய்கின்றன. இயக்கங்களின் பரிமாணங்கள், இயற்கையாகவே, ஒரே மாதிரியாக இருக்க வேண்டும். எடுத்துக்காட்டாக, ஓபராண்டுகளின் அளவு ஒரு சொல் (16 பிட்கள்) என்றால், தருக்க செயல்பாடு முதலில் ஓபராண்ட்களின் பூஜ்ஜிய பிட்களில் செய்யப்படுகிறது, மேலும் அதன் முடிவு பிட் 0 க்கு பதிலாக எழுதப்படும். பின்னர் கட்டளை இந்த செயல்களை முதல் பதினைந்தாவது வரை அனைத்து பிட்களிலும் மீண்டும் மீண்டும் செய்கிறது.

தருக்க கட்டளைகள்

நுண்செயலி அறிவுறுத்தல் அமைப்பானது தருக்க தரவுகளுடன் பணிபுரிவதை ஆதரிக்கும் பின்வரும் கட்டளைகளின் தொகுப்பைக் கொண்டுள்ளது:

1) மற்றும் operand_1, operand_2 - தருக்க பெருக்கல் செயல்பாடு. கட்டளையானது operand_1 மற்றும் operand_2 ஆகிய இயக்கங்களின் பிட்களில் பிட்வைஸ் தருக்க மற்றும் செயல்பாட்டை (இணைப்பு) செய்கிறது. முடிவு operand_1 க்கு எழுதப்பட்டது;

2) og operand_1, operand_2 - தருக்க கூட்டல் செயல்பாடு. கட்டளையானது operand_1 மற்றும் operand_2 ஆகிய இயக்கங்களின் பிட்களில் பிட்வைஸ் லாஜிக்கல் அல்லது செயல்பாட்டை (டிஸ்ஜங்க்ஷன்) செய்கிறது. முடிவு operand_1 க்கு எழுதப்பட்டது;

3) hog operand_1, operand_2 – லாஜிக்கல் பிரத்தியேக கூட்டல் செயல்பாடு. operand_1 மற்றும் operand_2 ஆகிய இயக்கங்களின் பிட்களில் அறிவுறுத்தலானது ஒரு பிட்வைஸ் லாஜிக்கல் பிரத்தியேக அல்லது செயல்பாட்டைச் செய்கிறது. முடிவு ஓபராண்டின் இடத்தில் எழுதப்பட்டுள்ளது;

4) சோதனை operand_1, operand_2 - "சரிபார்ப்பு" செயல்பாடு (தருக்க பெருக்கத்தைப் பயன்படுத்தி). கட்டளையானது operand_1 மற்றும் operand_2 ஆகிய operandகளின் பிட்களில் பிட்வைஸ் தருக்க மற்றும் செயல்பாட்டைச் செய்கிறது. செயல்பாட்டின் நிலை அப்படியே உள்ளது, கொடிகள் zf, sf மற்றும் pf மட்டுமே மாறுகின்றன, இது செயல்பாட்டின் தனிப்பட்ட பிட்களின் நிலையை அவற்றின் நிலையை மாற்றாமல் பகுப்பாய்வு செய்வதை சாத்தியமாக்குகிறது;

5) செயல்பாடு அல்ல - தருக்க மறுப்பு செயல்பாடு. கட்டளையானது ஒபெராண்டின் ஒவ்வொரு பிட்டிலும் பிட்வைஸ் இன்வெர்ஷனை (மதிப்பை எதிர் கொண்டு மாற்றுகிறது) செய்கிறது. முடிவு ஓபராண்டிற்கு பதிலாக எழுதப்பட்டுள்ளது.

நுண்செயலி அறிவுறுத்தல் அமைப்பில் தருக்க வழிமுறைகளின் பங்கைப் புரிந்து கொள்ள, அவற்றின் பயன்பாட்டின் நோக்கம் மற்றும் நிரலாக்கத்தில் அவற்றைப் பயன்படுத்துவதற்கான வழக்கமான நுட்பங்களைப் புரிந்துகொள்வது மிகவும் முக்கியம்.

தருக்க கட்டளைகளைப் பயன்படுத்தி இது சாத்தியமாகும் ஒதுக்கீடுநோக்கத்திற்காக இயக்கத்தில் தனிப்பட்ட பிட்கள் ஒரு குறிப்பிட்ட மதிப்பை அமைத்தல், மீட்டமைத்தல், தலைகீழாக மாற்றுதல் அல்லது வெறுமனே சரிபார்த்தல்.

பிட்களுடன் அத்தகைய வேலையை ஒழுங்கமைக்க, operand_2 பொதுவாக முகமூடியின் பாத்திரத்தை வகிக்கிறது. இந்த முகமூடியின் 1 பிட்டில் அமைக்கப்பட்டுள்ள பிட்களைப் பயன்படுத்தி, ஒரு குறிப்பிட்ட செயல்பாட்டிற்குத் தேவையான operand_1 பிட்கள் தீர்மானிக்கப்படுகின்றன. இந்த நோக்கத்திற்காக என்ன தருக்க கட்டளைகளைப் பயன்படுத்தலாம் என்பதைக் காண்பிப்போம்:

1) சில பிட்களை 1 ஆக அமைக்க, og operand_1, operand_2 கட்டளையைப் பயன்படுத்தவும்.

இந்த அறிவுறுத்தலில், முகமூடியாகச் செயல்படும் operand_2, operand_1 இல் 1 ஆக அமைக்கப்பட வேண்டிய பிட்களுக்குப் பதிலாக ஒரு பிட்களைக் கொண்டிருக்க வேண்டும்;

2) சில பிட்களை 0 க்கு மீட்டமைக்க, கட்டளை மற்றும் operand_1, operand_2 ஐப் பயன்படுத்தவும்.

இந்த அறிவுறுத்தலில், முகமூடியாகச் செயல்படும் operand_2, operand_1 இல் 0 ஆக அமைக்கப்பட வேண்டிய பிட்களுக்குப் பதிலாக பூஜ்ஜிய பிட்களைக் கொண்டிருக்க வேண்டும்;

3) கட்டளை hog operand_1, operand_2 பயன்படுத்தப்படுகிறது:

a) operand_1 மற்றும் operand இல் உள்ள பிட்கள் வேறுபட்டவை என்பதைக் கண்டறிய;

b) operand_1 இல் குறிப்பிடப்பட்ட பிட்களின் நிலையை மாற்றவும்.

hog கட்டளையை இயக்கும் போது, ​​நமக்கு விருப்பமான முகமூடியின் பிட்கள் (operand_2) ஒன்றாக இருக்க வேண்டும், மீதமுள்ளவை பூஜ்ஜியமாக இருக்க வேண்டும்;

குறிப்பிட்ட பிட்களின் நிலையைச் சரிபார்க்க, கட்டளை சோதனை operand_1, operand_2 (operand_1 ஐ சரிபார்க்கவும்) பயன்படுத்தவும்.

முகமூடியில் (operand_2) operand_1 இன் சரிபார்க்கப்பட்ட பிட்கள் ஒன்றின் மதிப்பைக் கொண்டிருக்க வேண்டும். சோதனை கட்டளையின் செயல்பாடு மற்றும் கட்டளையின் அல்காரிதம் போலவே உள்ளது, ஆனால் இது operand_1 இன் மதிப்பை மாற்றாது. கட்டளையின் முடிவு பூஜ்ஜியக் கொடியின் மதிப்பை அமைக்க வேண்டும் zf:

1) zf = 0 எனில், தருக்கப் பெருக்கல் பூஜ்ஜிய முடிவை விளைவித்தது, அதாவது முகமூடியின் ஒரு யூனிட் பிட், இது தொடர்புடைய ஒரு பிட்டுடன் பொருந்தவில்லை;

2) zf = 1 எனில், தருக்கப் பெருக்கல் பூஜ்ஜியமற்ற முடிவைக் கொண்டு வந்தது, அதாவது. குறைந்த பட்சம் ஓன்றுமுகமூடியின் ஒரு பிட் தொடர்புடைய ஒரு பிட் operand_1 உடன் பொருந்துகிறது.

சோதனைக் கட்டளையின் முடிவுக்கு எதிர்வினையாற்ற, ஜம்ப் கட்டளை jnz லேபிளைப் பயன்படுத்துவது நல்லது (பூஜ்ஜியமாக இல்லாவிட்டால் குதிக்கவும்) - பூஜ்ஜியக் கொடி zf பூஜ்ஜியமற்றதாக இருந்தால் குதிக்கவும் அல்லது எதிர் செயலைக் கொண்ட கட்டளை - jz லேபிள் (ஜம்ப் பூஜ்ஜியமாக இருந்தால்) - பூஜ்ஜியக் கொடி zf = 0 என்றால் குதிக்கவும்.

அடுத்த இரண்டு கட்டளைகள் 1 ஆக அமைக்கப்பட்ட operand இன் முதல் பிட்டைத் தேடுகின்றன. நீங்கள் இயக்கத்தின் ஆரம்பம் அல்லது முடிவில் இருந்து தேடலாம்:

1) bsf operand_1, operand_2 (Bit Scanning Forward) - பிட்களை முன்னோக்கி ஸ்கேன் செய்கிறது. அறிவுறுத்தல் operand_2 இன் பிட்களை குறைந்தபட்சம் குறிப்பிடத்தக்கது முதல் மிக முக்கியமான (பிட் 0 முதல் மிக முக்கியமான பிட் வரை) முதல் பிட் 1 எனத் தேடுகிறது. ஒன்று கண்டறியப்பட்டால், இந்த பிட்டின் எண்ணிக்கை operand_1 இல் முழு எண்ணாக உள்ளிடப்படும். operand_2 இன் அனைத்து பிட்களும் 0 ஆக இருந்தால், பூஜ்ஜியக் கொடி zf 1 ஆக அமைக்கப்படும், இல்லையெனில் zf கொடி 0 க்கு மீட்டமைக்கப்படும்;

2) bsr operand_1, operand_2 (Bit Scanning Reset) - பிட்களை தலைகீழ் வரிசையில் ஸ்கேன் செய்கிறது. அறிவுறுத்தல் operand_2 இன் பிட்களை மிகவும் குறிப்பிடத்தக்கது முதல் குறைந்தது குறிப்பிடத்தக்கது (மிக முக்கியமான பிட் முதல் பிட் 0 வரை) முதல் பிட் 1 ஆகத் தேடுகிறது (ஸ்கேன் செய்கிறது). ஒன்று கண்டறியப்பட்டால், இந்த பிட்டின் எண்ணிக்கை operand_1 இல் உள்ளிடப்படும். முழு எண் மதிப்பு. இடதுபுறத்தில் உள்ள முதல் ஒரு பிட்டின் நிலை பிட் 0 க்கு ஒப்பிடும்போது கணக்கிடப்படுவது முக்கியம். operand_2 இன் அனைத்து பிட்களும் 0 க்கு சமமாக இருந்தால், பூஜ்ஜிய கொடி zf 1 ஆக அமைக்கப்படும், இல்லையெனில் zf கொடி 0 க்கு மீட்டமைக்கப்படும். .

இன்டெல் நுண்செயலிகளின் சமீபத்திய மாடல்களில், ஓபராண்டின் ஒரு குறிப்பிட்ட பிட் அணுகலை அனுமதிக்கும் தருக்க கட்டளைகளின் குழுவில் மேலும் பல கட்டளைகள் தோன்றியுள்ளன. ஓபராண்ட் நினைவகத்தில் அல்லது பொது நோக்கத்திற்கான பதிவேட்டில் அமைந்திருக்கலாம். பிட்டின் நிலை, ஓபராண்டின் குறைந்த குறிப்பிடத்தக்க பிட்டுடன் தொடர்புடைய பிட்டின் ஆஃப்செட் மூலம் குறிப்பிடப்படுகிறது. ஆஃப்செட் மதிப்பை நேரடி மதிப்பாகக் குறிப்பிடலாம் அல்லது பொது நோக்கத்திற்கான பதிவேட்டில் இருக்கலாம். நீங்கள் bsr மற்றும் bsf கட்டளைகளின் முடிவுகளை ஆஃப்செட் மதிப்பாகப் பயன்படுத்தலாம். அனைத்து வழிமுறைகளும் தேர்ந்தெடுக்கப்பட்ட பிட்டின் மதிப்பை CE கொடிக்கு ஒதுக்குகின்றன

1) bt operand, bit offset (Bit Test) - பிட்டைச் சரிபார்க்கவும். கட்டளை பிட் மதிப்பை cf கொடிக்கு மாற்றுகிறது;

2) bts operand, bit offset (Bit Test and Set) - பிட்டை சரிபார்த்து அமைத்தல். அறிவுறுத்தல் பிட் மதிப்பை CF கொடிக்கு மாற்றுகிறது, பின்னர் பிட்டை சோதிக்க 1 ஆக அமைக்கிறது;

3) btr செயல்பாட்டு, பிட் ஆஃப்செட் (பிட் டெஸ்ட் மற்றும் ரீசெட்) - பிட்டை சரிபார்த்து மீட்டமைத்தல். அறிவுறுத்தல் ஒரு பிட்டின் மதிப்பை CF கொடிக்கு மாற்றுகிறது, பின்னர் இந்த பிட்டை 0 ஆக அமைக்கிறது;

4) btc operand, bit offset (Bit Test and Convert) - பிட்டை சரிபார்த்து தலைகீழாக மாற்றவும். அறிவுறுத்தல் ஒரு பிட்டின் மதிப்பை cf கொடிக்கு மாற்றுகிறது, பின்னர் அந்த பிட்டின் மதிப்பை மாற்றுகிறது.

ஷிப்ட் கட்டளைகள்

இந்தக் குழுவில் உள்ள வழிமுறைகள் செயல்பாட்டின் தனிப்பட்ட பிட்களின் கையாளுதலையும் வழங்குகின்றன, ஆனால் மேலே விவாதிக்கப்பட்ட தருக்க வழிமுறைகளை விட வேறு வழியில்.

அனைத்து ஷிப்ட் வழிமுறைகளும் ஆப்கோடைப் பொறுத்து ஓபராண்ட் புலத்தில் பிட்களை இடது அல்லது வலது பக்கம் நகர்த்துகின்றன. அனைத்து ஷிப்ட் வழிமுறைகளும் ஒரே கட்டமைப்பைக் கொண்டுள்ளன - காப் ஓபராண்ட், ஷிஃப்ட்_கவுண்டர்.

மாற்றப்பட்ட பிட்களின் எண்ணிக்கை - shift_counter -இரண்டாவது இயக்கத்தின் இடத்தில் அமைந்துள்ளது மற்றும் இரண்டு வழிகளில் குறிப்பிடலாம்:

1) நிலையான,உடனடி செயலியைப் பயன்படுத்தி ஒரு நிலையான மதிப்பைக் குறிப்பிடுவதை உள்ளடக்கியது;

2) மாறும்,அதாவது ஷிப்ட் அறிவுறுத்தலை செயல்படுத்தும் முன் cl பதிவேட்டில் ஷிப்ட் கவுண்டர் மதிப்பை சேமிப்பது.

cl பதிவேட்டின் அளவின் அடிப்படையில், ஷிப்ட் கவுண்டரின் மதிப்பு 0 முதல் 255 வரை இருக்கலாம் என்பது தெளிவாகிறது. ஆனால் உண்மையில் இது முற்றிலும் உண்மையல்ல. தேர்வுமுறை நோக்கங்களுக்காக, நுண்செயலி மதிப்பை மட்டுமே ஏற்றுக்கொள்கிறது குறைந்தது குறிப்பிடத்தக்க ஐந்து பிட்கள்கவுண்டர், அதாவது மதிப்பு 0 முதல் 31 வரை இருக்கும்.

அனைத்து ஷிப்ட் கட்டளைகளும் கேரி கொடியை cf அமைக்கின்றன.

பிட்கள் ஓபராண்டிற்கு அப்பால் மாற்றப்படுவதால், அவை முதலில் கேரி கொடியைத் தாக்கி, ஓபராண்டிற்கு வெளியே முடிவடையும் அடுத்த பிட்டின் மதிப்பிற்கு சமமாக அமைக்கின்றன. இந்த பிட் அடுத்ததாக எங்கு செல்கிறது என்பது ஷிப்ட் அறிவுறுத்தலின் வகை மற்றும் நிரல் அல்காரிதம் ஆகியவற்றைப் பொறுத்தது.

இயக்கக் கொள்கையின் அடிப்படையில், ஷிப்ட் கட்டளைகளை இரண்டு வகைகளாகப் பிரிக்கலாம்:

1) நேரியல் மாற்றம் கட்டளைகள்;

2) சுழற்சி மாற்ற கட்டளைகள்.

நேரியல் மாற்றம் கட்டளைகள்

இந்த வகை கட்டளைகளில் பின்வரும் வழிமுறையின் படி மாற்றத்தை செய்யும் கட்டளைகள் அடங்கும்:

1) அடுத்த "தள்ளப்பட்ட" பிட் CF கொடியை அமைக்கிறது;

2) மறுமுனையிலிருந்து இயக்கத்தில் அறிமுகப்படுத்தப்பட்ட பிட் மதிப்பு 0 ஐக் கொண்டுள்ளது;

3) அடுத்த பிட் மாற்றப்படும்போது, ​​​​அது CF கொடிக்குள் செல்கிறது, மேலும் முந்தைய மாற்றப்பட்ட பிட்டின் மதிப்பு இழக்கப்படுகிறது! லீனியர் ஷிப்ட் கட்டளைகள் இரண்டு துணை வகைகளாக பிரிக்கப்பட்டுள்ளன:

1) தருக்க நேரியல் மாற்றம் கட்டளைகள்;

2) எண்கணித நேரியல் மாற்ற கட்டளைகள்.

லாஜிக்கல் லீனியர் ஷிப்ட் கட்டளைகளில் பின்வருவன அடங்கும்:

1) shl operand, shift_counter (Shift Logical Left) - இடது பக்கம் தருக்க மாற்றம். ஷிஃப்ட்_கவுண்ட் மதிப்பால் தீர்மானிக்கப்படும் பிட்களின் எண்ணிக்கையால் ஓபராண்டின் உள்ளடக்கங்கள் இடதுபுறமாக மாற்றப்படும். வலதுபுறத்தில் (குறைந்த குறிப்பிடத்தக்க பிட்டின் நிலையில்) பூஜ்ஜியங்கள் உள்ளிடப்பட்டுள்ளன;

2) shr operand, shift_counter (Shift Logical Right) - வலப்புறம் தருக்க மாற்றம். ஷிஃப்ட்_கவுண்ட் மதிப்பால் தீர்மானிக்கப்படும் பிட்களின் எண்ணிக்கையால் ஓபராண்டின் உள்ளடக்கங்கள் வலதுபுறமாக மாற்றப்படும். இடதுபுறத்தில் (மிக முக்கியமான, சைன் பிட் நிலையில்) பூஜ்ஜியங்கள் உள்ளிடப்பட்டுள்ளன.

இந்த கட்டளைகள் எவ்வாறு செயல்படுகின்றன என்பதை படம் 30 காட்டுகிறது.

அரிசி. 30. நேரியல் தருக்க மாற்ற கட்டளைகளின் செயல்பாட்டின் திட்டம்


எண்கணித லீனியர் ஷிப்ட் வழிமுறைகள் லாஜிக்கல் ஷிப்ட் வழிமுறைகளிலிருந்து வேறுபடுகின்றன.

1) sal operand, shift_counter (Shift Arithmetic Left) - எண்கணிதத்தை இடதுபுறமாக மாற்றுதல். ஷிஃப்ட்_கவுண்ட் மதிப்பால் தீர்மானிக்கப்படும் பிட்களின் எண்ணிக்கையால் ஓபராண்டின் உள்ளடக்கங்கள் இடதுபுறமாக மாற்றப்படும். வலதுபுறத்தில் (குறைந்த குறிப்பிடத்தக்க பிட்டின் நிலையில்) பூஜ்ஜியங்கள் உள்ளன. sal கட்டளை அடையாளத்தை பாதுகாக்காது, ஆனால் அடையாள மாற்றத்தின் போது/கொடியை அமைக்கிறதுமற்றொரு உள்ளிழுக்கும் பிட். இல்லையெனில், sal கட்டளை shl கட்டளைக்கு முற்றிலும் ஒத்ததாக இருக்கும்;

2) sar operand, shift_counter (Shift Arithmetic Right) - எண்கணித வலதுபுறம் மாற்றம். மதிப்பால் தீர்மானிக்கப்படும் பிட்களின் எண்ணிக்கையால் ஓபராண்டின் உள்ளடக்கங்கள் வலதுபுறமாக மாற்றப்படுகின்றன shift_counter.இடதுபுறத்தில், ஓபராண்டில் பூஜ்ஜியங்கள் உள்ளிடப்படுகின்றன. sar கட்டளை குறியைப் பாதுகாக்கிறது, ஒவ்வொரு அடுத்த பிட்டையும் மாற்றிய பின் அதை மீட்டமைக்கிறது.

லீனியர் எண்கணித மாற்ற வழிமுறைகள் எவ்வாறு செயல்படுகின்றன என்பதை படம் 31 காட்டுகிறது.


அரிசி. 31. நேரியல் எண்கணித மாற்ற கட்டளைகளின் செயல்பாட்டின் திட்டம்

கட்டளைகளை சுழற்று

சுழற்று ஷிப்ட் கட்டளைகள் என்பது மாற்றப்படும் பிட்களின் மதிப்புகளை சேமிக்கும் கட்டளைகள். இரண்டு வகையான சுழற்சி கட்டளைகள் உள்ளன:

1) எளிய சுழற்சி மாற்ற கட்டளைகள்;

2) கேரி ஃபிளாக் cf வழியாக சுழற்சி மாற்ற கட்டளைகள்.

அணிகளுக்கு எளிய சுழற்சிமாற்றங்கள் அடங்கும்:

1) ரோல் ஓபராண்ட், ஷிப்ட்_கவுண்டர் (இடதுபுறம் சுழற்று) - இடதுபுறம் சுழற்சி மாற்றம். ஓபராண்டின் உள்ளடக்கங்கள் ஓபராண்டால் தீர்மானிக்கப்பட்ட பிட்களின் எண்ணிக்கையால் இடதுபுறமாக மாற்றப்படுகின்றன shift_counter.இடதுபுறம் மாற்றப்பட்ட பிட்கள் வலதுபுறத்தில் அதே இயக்கத்தில் எழுதப்படுகின்றன;

2) gog operand, shift_counter (வலதுபுறம் சுழற்று) - வலப்புறம் சுழற்சி மாற்றம். ஓபராண்டின் உள்ளடக்கங்கள் ஓபராண்டால் நிர்ணயிக்கப்பட்ட பிட்களின் எண்ணிக்கையால் வலதுபுறமாக மாற்றப்படுகின்றன shift_counter.வலதுபுறமாக மாற்றப்பட்ட பிட்கள் இடதுபுறத்தில் அதே இயக்கத்தில் எழுதப்படுகின்றன.

அரிசி. 32. எளிய சுழற்சி மாற்ற கட்டளைகளின் செயல்பாட்டின் திட்டம்


படம் 32 இலிருந்து பார்க்க முடிந்தால், எளிய சுழற்சி மாற்ற வழிமுறைகள் அவற்றின் செயல்பாட்டின் போது ஒரு பயனுள்ள செயலைச் செய்கின்றன, அதாவது: சுழற்சி முறையில் மாற்றப்பட்ட பிட் மறுமுனையிலிருந்து இயக்கத்தில் தள்ளப்படுவது மட்டுமல்லாமல், அதே நேரத்தில் அதன் மதிப்பு மதிப்பாக மாறும். CE கொடி

கட்டளைகளை சுழற்று கேரி கொடி CF வழியாகசிம்பிள் சைக்லிக் ஷிப்ட் கட்டளைகளிலிருந்து வேறுபட்டது, மாற்றப்படும் பிட் உடனடியாக அதன் மறுமுனையில் இருந்து ஓபராண்டிற்குச் செல்லாது, ஆனால் முதலில் கேரி ஃபிளாக் CEக்கு எழுதப்பட்டது. இந்த ஷிப்ட் அறிவுறுத்தலின் அடுத்த செயலாக்கம் மட்டுமே (இது ஒரு லூப்பில் செயல்படுத்தப்பட்டதாகக் கருதினால்) முன்பு மாற்றப்பட்ட பிட் ஓபராண்டின் மறுமுனையில் வைக்கப்படும்.(படம் 33).

சுழற்சி மாற்ற கட்டளைகளுக்கு ஏந்தி கொடி வழியாகபின்வருபவை தொடர்புடையவை:

1) rcl operand, shift_counter (Carry Left மூலம் சுழற்று) - கேரி மூலம் இடதுபுறம் சுழற்சி மாற்றம்.

ஓபராண்டின் உள்ளடக்கங்கள் ஓபராண்டால் தீர்மானிக்கப்பட்ட பிட்களின் எண்ணிக்கையால் இடதுபுறமாக மாற்றப்படுகின்றன shift_counter.மாற்றப்பட்ட பிட்கள் மாறி மாறி கேரி கொடி cf இன் மதிப்பாக மாறும்.

2) rcg operand, shift_counter (சுழற்று மூலம் வலதுபுறம் கொண்டு செல்லவும்) - கேரி மூலம் வலதுபுறம் சுழற்சி மாற்றம்.

ஓபராண்டின் உள்ளடக்கங்கள் ஓபராண்டால் நிர்ணயிக்கப்பட்ட பிட்களின் எண்ணிக்கையால் வலதுபுறமாக மாற்றப்படுகின்றன shift_counter.மாற்றப்பட்ட பிட்கள் மாறி மாறி கேரி ஃபிளாக் CF இன் மதிப்பாக மாறும்.

அரிசி. 33. கேரி ஃபிளாக் CF வழியாக சுழற்சி மாற்ற கட்டளைகள்


படம் 33 இலிருந்து, கேரிக் கொடியின் வழியாக மாறும்போது, ​​​​ஒரு இடைநிலை உறுப்பு தோன்றும் என்பது தெளிவாகிறது, இதன் உதவியுடன், குறிப்பாக, சுழற்சி முறையில் மாற்றப்பட்ட பிட்களை மாற்றுவது சாத்தியமாகும். பொருத்தமின்மைபிட் வரிசைகள்.

ஒரு பிட் வரிசையைப் பொருத்தாமல் இருப்பதன் மூலம், இந்த வரிசையின் தேவையான பகுதிகளை உள்ளூர்மயமாக்கவும் பிரித்தெடுக்கவும், அவற்றை வேறு இடத்திற்கு எழுதவும் அனுமதிக்கும் செயலைக் குறிக்கிறோம்.

கூடுதல் ஷிப்ட் கட்டளைகள்

சமீபத்திய இன்டெல் நுண்செயலி மாதிரிகளின் கட்டளை அமைப்பு, i80386 இல் தொடங்கி, நாம் முன்பு விவாதித்த திறன்களை விரிவாக்கும் கூடுதல் ஷிப்ட் கட்டளைகளைக் கொண்டுள்ளது. இவை ஷிப்ட் கட்டளைகள் இரட்டை துல்லியம்: 1) shld operand_1, operand_2, shift_counter - இரட்டை துல்லியம் இடது ஷிப்ட். shld கட்டளையானது operand_1 இன் பிட்களை இடதுபுறமாக மாற்றுவதன் மூலம் மாற்றியமைக்கிறது, படத்தில் உள்ள வரைபடத்தின்படி operand_2 இலிருந்து இடம்பெயர்ந்த பிட்களின் மதிப்புகளுடன் வலதுபுறத்தில் அதன் பிட்களை நிரப்புகிறது. 34. மாற்றப்பட வேண்டிய பிட்களின் எண்ணிக்கை மதிப்பால் தீர்மானிக்கப்படுகிறது ஷிப்ட்_கவுண்டர், operand_2மாறாது.


அரிசி. 34. shld கட்டளையின் திட்டம்


2) shrd operand_1, operand_2, shift_counter - இரட்டை துல்லியமான வலது மாற்றம். வழிமுறையானது, operand_1 இன் பிட்களை வலதுபுறமாக மாற்றுவதன் மூலம் மாற்றியமைக்கிறது, படம் 35 இல் உள்ள வரைபடத்தின்படி operand_2 இலிருந்து இடம்பெயர்ந்த பிட்களின் மதிப்புகளுடன் இடதுபுறத்தில் அதன் பிட்களை நிரப்புகிறது. மாற்றப்பட்ட பிட்களின் எண்ணிக்கை மதிப்பால் தீர்மானிக்கப்படுகிறது. ஷிப்ட்_கவுண்டர்,இது 0 வரம்பில் இருக்கலாம்... 31. இந்த மதிப்பை உடனடி செயல்பாடாகக் குறிப்பிடலாம் அல்லது cl பதிவேட்டில் இருக்கலாம். பொருள் operand_2மாறாது.

அரிசி. 35. shrd கட்டளையின் திட்டம்


நாங்கள் குறிப்பிட்டுள்ளபடி, shld மற்றும் shrd கட்டளைகள் 32 பிட்கள் வரை மாற்றங்களைச் செய்கின்றன, ஆனால் செயல்பாடுகள் மற்றும் இயக்க வழிமுறையைக் குறிப்பிடுவதன் தனித்தன்மை காரணமாக, இந்த கட்டளைகள் 64 பிட்கள் வரையிலான புலங்களுடன் வேலை செய்யப் பயன்படுத்தப்படலாம்.

2. கட்டுப்பாடு பரிமாற்ற கட்டளைகள்

அங்கம் வகிக்கும் சில அணிகளைச் சந்தித்தோம் நேரியல்திட்டத்தின் பிரிவுகள். அவை ஒவ்வொன்றும் பொதுவாக தரவை மாற்ற அல்லது மாற்ற சில செயல்களைச் செய்கின்றன, அதன் பிறகு நுண்செயலி கட்டுப்பாட்டை அடுத்த கட்டளைக்கு மாற்றுகிறது. ஆனால் மிகச் சில திட்டங்கள் இத்தகைய சீரான முறையில் செயல்படுகின்றன. ஒரு நிரலில் பொதுவாக புள்ளிகள் உள்ளன, அதில் எந்த கட்டளை அடுத்ததாக செயல்படுத்தப்படும் என்பதை தீர்மானிக்க வேண்டும். இந்த தீர்வு இருக்கலாம்:

1) நிபந்தனையற்ற -இந்த கட்டத்தில் கட்டுப்பாட்டை அடுத்த கட்டளைக்கு அல்ல, ஆனால் தற்போதைய கட்டளையிலிருந்து சிறிது தொலைவில் அமைந்துள்ள மற்றொரு கட்டளைக்கு மாற்றுவது அவசியம்;

2) நிபந்தனை -சில நிபந்தனைகள் அல்லது தரவுகளின் பகுப்பாய்வின் அடிப்படையில் அடுத்து எந்த கட்டளை செயல்படுத்தப்படும் என்பது பற்றிய முடிவு எடுக்கப்படுகிறது.

ஒரு நிரல் என்பது ஒரு குறிப்பிட்ட அளவு ரேம் இடத்தை ஆக்கிரமிக்கும் கட்டளைகள் மற்றும் தரவுகளின் வரிசையாகும். இந்த நினைவக இடம் ஒன்றுடன் ஒன்று அல்லது பல துண்டுகளால் ஆனது.

ஒரு ஜோடி பதிவேடுகளின் உள்ளடக்கத்தின் மூலம் அடுத்ததாக எந்த நிரல் அறிவுறுத்தல் செயல்படுத்தப்பட வேண்டும் என்பதை நுண்செயலி அறியும். cs:(e)ip:

1) cs - பிரிவு குறியீடு பதிவு, இது தற்போதைய குறியீடு பிரிவின் இயற்பியல் (அடிப்படை) முகவரியைக் கொண்டுள்ளது;

2) eip/ip - இன்ஸ்ட்ரக்ஷன் பாயிண்டர் ரிஜிஸ்டர், இது தற்போதைய குறியீடு பிரிவின் தொடக்கத்துடன் தொடர்புடைய அடுத்த அறிவுறுத்தலின் நினைவக ஆஃப்செட்டைக் குறிக்கும் மதிப்பைக் கொண்டுள்ளது.

எந்த குறிப்பிட்ட பதிவேடு பயன்படுத்தப்படும் என்பது முகவரியிடல் பயன்முறையானது use16 அல்லது use32 என அமைக்கப்பட்டுள்ளதா என்பதைப் பொறுத்தது. யூஸ் 16 குறிப்பிடப்பட்டால், ஐபி பயன்படுத்தப்படும், யூஸ்32 என்றால், ஈப் பயன்படுத்தப்படும்.

இவ்வாறு, கட்டுப்பாட்டு பரிமாற்ற வழிமுறைகள் cs மற்றும் eip/ip பதிவேடுகளின் உள்ளடக்கங்களை மாற்றுகின்றன, இதன் விளைவாக நுண்செயலி அடுத்த நிரல் கட்டளையை வரிசையாக அல்ல, ஆனால் நிரலின் வேறு சில பிரிவில் உள்ள கட்டளையை செயல்படுத்துவதற்கு தேர்ந்தெடுக்கிறது. நுண்செயலியில் உள்ள கன்வேயர் மீட்டமைக்கப்பட்டது.

செயல்பாட்டின் கொள்கையின் அடிப்படையில், நிரலில் மாற்றங்களின் அமைப்பை உறுதி செய்யும் நுண்செயலி கட்டளைகளை 3 குழுக்களாகப் பிரிக்கலாம்:

1. நிபந்தனையற்ற கட்டுப்பாட்டை மாற்றுவதற்கான கட்டளைகள்:

1) நிபந்தனையற்ற ஜம்ப் கட்டளை;

2) ஒரு செயல்முறையை அழைக்கவும் ஒரு செயல்முறையிலிருந்து திரும்பவும் கட்டளை;

3) மென்பொருள் குறுக்கீடுகளை அழைப்பதற்கும் மென்பொருள் குறுக்கீடுகளிலிருந்து திரும்புவதற்கும் கட்டளை.

2. கட்டுப்பாட்டு கட்டளைகளின் நிபந்தனை பரிமாற்றம்:

1) பக்க ஒப்பீட்டு கட்டளையின் முடிவின் அடிப்படையில் ஜம்ப் கட்டளைகள்;

2) ஒரு குறிப்பிட்ட கொடியின் நிலையை அடிப்படையாகக் கொண்ட மாறுதல் கட்டளைகள்;

3) ecx/cx பதிவேட்டின் உள்ளடக்கங்கள் வழியாக செல்ல கட்டளைகள்.

3. சுழற்சி கட்டுப்பாட்டு கட்டளைகள்:

1) எதிர் ecx/cx உடன் சுழற்சியை ஒழுங்கமைப்பதற்கான கட்டளை;

2) கூடுதல் நிபந்தனையின் கீழ் சுழற்சியில் இருந்து முன்கூட்டியே வெளியேறும் சாத்தியத்துடன் ecx/cx கவுண்டருடன் சுழற்சியை ஒழுங்கமைப்பதற்கான கட்டளை.

நிபந்தனையற்ற தாவல்கள்

முந்தைய விவாதம் மாற்றம் பொறிமுறையின் சில விவரங்களை வெளிப்படுத்தியுள்ளது. ஜம்ப் வழிமுறைகள் eip/ip இன்ஸ்ட்ரக்ஷன் பாயிண்டர் பதிவேட்டையும், cs குறியீடு பிரிவு பதிவேட்டையும் மாற்றும். சரியாக மாற்றியமைக்க வேண்டியது என்ன என்பதைப் பொறுத்தது:

1) நிபந்தனையற்ற ஜம்ப் கட்டளையில் (அருகில் அல்லது தொலைவில்) ஓபராண்ட் வகை மீது;

2) ஜம்ப் முகவரிக்கு முன் உள்ள குறிப்பிலிருந்து (ஜம்ப் கட்டளையில்) மாற்றியமைப்பவர்;இந்த வழக்கில், ஜம்ப் முகவரி நேரடியாக கட்டளையில் (நேரடி ஜம்ப்), அல்லது ஒரு பதிவு அல்லது நினைவக கலத்தில் (மறைமுக ஜம்ப்) அமைந்திருக்கும்.

மாற்றியமைப்பவர்பின்வரும் மதிப்புகளை எடுக்கலாம்:

1) ptr க்கு அருகில் - தற்போதைய குறியீடு பிரிவில் உள்ள லேபிளுக்கு நேரடி மாற்றம். கட்டளையில் குறிப்பிடப்பட்டுள்ள முகவரி (லேபிள்) அல்லது மதிப்பு பிரித்தெடுத்தல் எழுத்து - $ஐப் பயன்படுத்தி ஒரு வெளிப்பாடு அடிப்படையில் eip/ip பதிவு மட்டுமே (குறிப்பிட்ட வகை குறியீடு பிரிவின் பயன்பாடு16 அல்லது use32 ஐப் பொறுத்து) மாற்றியமைக்கப்பட்டது;

2) தூர ptr - மற்றொரு குறியீடு பிரிவில் உள்ள லேபிளுக்கு நேரடி மாற்றம். ஜம்ப் முகவரியானது உடனடி இயக்கம் அல்லது முகவரி (லேபிள்) என குறிப்பிடப்பட்டுள்ளது மற்றும் 16-பிட் தேர்வி மற்றும் 16/32-பிட் ஆஃப்செட் ஆகியவற்றைக் கொண்டுள்ளது, அவை முறையே cs மற்றும் ip/eip பதிவேடுகளில் ஏற்றப்படுகின்றன;

3) சொல் ptr - தற்போதைய குறியீடு பிரிவில் உள்ள லேபிளுக்கு மறைமுக மாற்றம். eip/ip மட்டுமே மாற்றியமைக்கப்பட்டது (கட்டளையில் குறிப்பிடப்பட்ட முகவரியில் அல்லது பதிவேட்டில் இருந்து நினைவகத்திலிருந்து ஆஃப்செட் மதிப்பின் மூலம்). ஆஃப்செட் அளவு 16 அல்லது 32 பிட்கள்;

4) dword ptr - மற்றொரு குறியீடு பிரிவில் உள்ள லேபிளுக்கு மறைமுக மாற்றம். இரண்டு பதிவேடுகள் - cs மற்றும் eip/ip - மாற்றியமைக்கப்படுகின்றன (நினைவகத்திலிருந்து ஒரு மதிப்பின் மூலம் - மற்றும் நினைவகத்திலிருந்து மட்டும், ஒரு பதிவேட்டில் இருந்து). இந்த முகவரியின் முதல் சொல்/dword ஆஃப்செட்டைக் குறிக்கிறது மற்றும் ip/eip இல் ஏற்றப்படுகிறது; இரண்டாவது/மூன்றாவது வார்த்தை cs இல் ஏற்றப்படுகிறது. jmp நிபந்தனையற்ற ஜம்ப் கட்டளை

நிபந்தனையற்ற ஜம்ப் கட்டளையின் தொடரியல் jmp [modifier] jump_address - திரும்பும் புள்ளி பற்றிய தகவலைச் சேமிக்காமல் ஒரு நிபந்தனையற்ற ஜம்ப்.

ஜம்ப்_அட்ரஸ் என்பது லேபிள் முகவரி அல்லது ஜம்ப் பாயிண்டர் அமைந்துள்ள நினைவகப் பகுதியின் முகவரி.

மொத்தத்தில், நுண்செயலி அறிவுறுத்தல் அமைப்பானது நிபந்தனையற்ற ஜம்ப் ஜம்பிக்கான பல இயந்திர அறிவுறுத்தல் குறியீடுகளைக் கொண்டுள்ளது.

அவற்றின் வேறுபாடுகள் மாறுதல் தூரம் மற்றும் இலக்கு முகவரியைக் குறிப்பிடும் முறை ஆகியவற்றால் தீர்மானிக்கப்படுகின்றன. சரகம்மாற்றம் ஓபராண்டின் இருப்பிடத்தால் தீர்மானிக்கப்படுகிறது மாற்றம்_முகவரி.இந்த முகவரி தற்போதைய குறியீடு பிரிவில் அல்லது வேறு சில பிரிவில் இருக்கலாம். முதல் வழக்கில், மாற்றம் அழைக்கப்படுகிறது உட்பிரிவு,அல்லது அன்புக்குரியவர்கள்,இரண்டாவது - இடைப்பட்ட,அல்லது தொலைவில்ஒரு உள்-பிரிவு ஜம்ப், eip/ip பதிவேட்டின் உள்ளடக்கங்கள் மட்டுமே மாற்றப்பட்டதாகக் கருதுகிறது.

jmp கட்டளையின் உள்-பிரிவு பயன்பாட்டிற்கு மூன்று விருப்பங்கள் உள்ளன:

1) நேராக குறுகிய;

2) நேராக;

3) மறைமுக.


நடைமுறைகள்

நிரல் குறியீட்டின் பிரிவுகளை நகலெடுப்பதில் உள்ள சிக்கலை தீர்க்க சட்டசபை மொழியில் பல கருவிகள் உள்ளன. இவற்றில் அடங்கும்:

1) நடைமுறைகளின் வழிமுறை;

2) மேக்ரோ அசெம்பிளர்;

3) குறுக்கீடு பொறிமுறை.

செயல்முறை, அடிக்கடி அழைக்கப்படுகிறது subroutine -இது சில பணிகளின் சிதைவின் (பல பகுதிகளாகப் பிரித்தல்) அடிப்படை செயல்பாட்டு அலகு ஆகும். ஒரு செயல்முறை என்பது ஒரு குறிப்பிட்ட துணைப் பணியைத் தீர்ப்பதற்கான கட்டளைகளின் குழுவாகும், மேலும் உயர்நிலைப் பணியை அழைப்பதில் இருந்து கட்டுப்பாட்டைப் பெறுவதற்கான வழிமுறைகளைக் கொண்டுள்ளது மற்றும் இந்த நிலைக்கு கட்டுப்பாட்டை திரும்பப் பெறுகிறது.

எளிமையான வழக்கில், ஒரு நிரல் ஒரு செயல்முறையைக் கொண்டிருக்கலாம். வேறு வார்த்தைகளில் கூறுவதானால், ஒரு செயல்முறை சரியாக வடிவமைக்கப்பட்ட கட்டளைகளின் தொகுப்பாக வரையறுக்கப்படுகிறது, இது ஒரு முறை விவரிக்கப்பட்டால், தேவைப்பட்டால், நிரலில் எங்கும் அழைக்கப்படலாம்.

சட்டசபை மொழியில் கட்டளைகளின் வரிசையை ஒரு செயல்முறையாக விவரிக்க, இரண்டு வழிமுறைகள் பயன்படுத்தப்படுகின்றன: PROC மற்றும் ENDP.

செயல்முறையை விவரிக்கும் தொடரியல் பின்வருமாறு (படம் 36).


அரிசி. 36. ஒரு நிரலில் ஒரு செயல்முறையை விவரிப்பதற்கான தொடரியல்


செயல்முறை தலைப்பில் (PROC உத்தரவு) செயல்முறை பெயர் மட்டுமே தேவை என்பதை படம் 36 இலிருந்து காணலாம். PROC கட்டளையின் அதிக எண்ணிக்கையிலான செயல்பாடுகளில், [தொலைவு] சிறப்புக் குறிப்புக்கு உரியது. இந்த பண்புக்கூறு மதிப்புகளை அருகில் அல்லது தொலைவில் எடுக்கலாம் மற்றும் மற்றொரு குறியீடு பிரிவில் இருந்து ஒரு செயல்முறையை அழைக்கும் திறனை வகைப்படுத்துகிறது. இயல்பாக, [distance] பண்புக்கூறு அருகில் அமைக்கப்படும்.

இந்த செயல்முறை நிரலில் எங்கும் வைக்கப்படலாம், ஆனால் கட்டுப்பாடு தற்செயலாக அதன் மீது விழாது. பொது கட்டளை ஸ்ட்ரீமில் ஒரு செயல்முறை வெறுமனே செருகப்பட்டால், நுண்செயலி இந்த ஓட்டத்தின் ஒரு பகுதியாக செயல்முறை கட்டளைகளை உணர்ந்து, அதன்படி, செயல்முறை கட்டளைகளை இயக்கும்.

நிபந்தனை தாவல்கள்

நுண்செயலி 18 நிபந்தனை ஜம்ப் வழிமுறைகளைக் கொண்டுள்ளது. இந்த கட்டளைகள் உங்களை சரிபார்க்க அனுமதிக்கின்றன:

1) கையொப்பமிடப்பட்ட செயல்களுக்கு இடையிலான உறவு ("மேலும் - குறைவாக");

2) கையொப்பமிடப்படாத செயல்களுக்கு இடையிலான உறவு ("மேலே - கீழே");

3) எண்கணிதக் கொடிகளின் நிலைகள் ZF, SF, CF, OF, PF (ஆனால் AF அல்ல).

நிபந்தனை ஜம்ப் கட்டளைகள் ஒரே தொடரியல் கொண்டவை:

jcc transition_label

நீங்கள் பார்க்க முடியும் என, அனைத்து கட்டளைகளின் நினைவூட்டல் குறியீடு "j" - வார்த்தையிலிருந்து தொடங்குகிறது குதிக்க(பவுன்ஸ்), அவள் -கட்டளையால் பகுப்பாய்வு செய்யப்பட்ட குறிப்பிட்ட நிபந்தனையை வரையறுக்கிறது.

இயக்கம் குறித்து transition_label,இந்த லேபிளை தற்போதைய குறியீடு பிரிவில் மட்டுமே இருக்க முடியும்; இது சம்பந்தமாக, நிபந்தனையற்ற ஜம்ப் கட்டளைகளின் தொடரியலில் இருந்த மாற்றியமைப்பாளரின் கேள்வி மறைந்துவிடும். ஆரம்பகால நுண்செயலி மாடல்களில் (i8086, i80186 மற்றும் i80286), நிபந்தனைக்குட்பட்ட ஜம்ப் வழிமுறைகள் குறுகிய தாவல்களை மட்டுமே செய்ய முடியும் - நிபந்தனைக்குட்பட்ட ஜம்ப் அறிவுறுத்தலைப் பின்பற்றும் அறிவுறுத்தலில் இருந்து -128 முதல் +127 பைட்டுகள் வரை. 80386 நுண்செயலி மாதிரியில் தொடங்கி, இந்த வரம்பு நீக்கப்பட்டது, ஆனால், நீங்கள் பார்க்க முடியும் என, தற்போதைய குறியீடு பிரிவில் மட்டுமே.

நிபந்தனைக்குட்பட்ட ஜம்ப் கட்டளையுடன் கட்டுப்பாடு எங்கு மாற்றப்படும் என்பது பற்றி முடிவெடுக்க, முதலில் ஒரு நிபந்தனை உருவாக்கப்பட வேண்டும், அதன் அடிப்படையில் கட்டுப்பாட்டை மாற்றுவதற்கான முடிவு எடுக்கப்படும்.

அத்தகைய நிலைக்கான ஆதாரங்கள் இருக்கலாம்:

1) எண்கணித கொடிகளின் நிலையை மாற்றும் எந்த கட்டளையும்;

2) ஒப்பீட்டு கட்டளைப் பக்கம், இது இரண்டு செயல்களின் மதிப்புகளை ஒப்பிடுகிறது;

3) ESH/CX பதிவேட்டின் நிலை.


cmp ஒப்பீட்டு கட்டளை

ஒப்பிட்டுப் பக்க கட்டளை ஒரு சுவாரஸ்யமான செயல்பாட்டுக் கொள்கையைக் கொண்டுள்ளது. இது முற்றிலும் கழித்தல் கட்டளையைப் போன்றது - sub operand, operand_2.

பக்க கட்டளை, துணை கட்டளை போன்றது, இயக்கங்களை கழித்து கொடிகளை அமைக்கிறது. அது செய்யாத ஒரே விஷயம், முதல் ஓபராண்டின் இடத்தில் கழித்தலின் முடிவை எழுதுவதுதான்.

பக்க கட்டளையின் தொடரியல் பக்கம் operand_1, operand_2 (ஒப்பிடு) - இரண்டு செயல்களை ஒப்பிட்டு, ஒப்பீட்டு முடிவுகளின் அடிப்படையில் கொடிகளை அமைக்கிறது.

பக்க கட்டளையால் அமைக்கப்பட்ட கொடிகளை சிறப்பு நிபந்தனை கிளை கட்டளைகளைப் பயன்படுத்தி பகுப்பாய்வு செய்யலாம். அவற்றைப் பார்ப்பதற்கு முன், இந்த நிபந்தனைக்குட்பட்ட ஜம்ப் கட்டளைகளின் நினைவூட்டல்களுக்கு (அட்டவணை 16) சிறிது கவனம் செலுத்துவோம். நிபந்தனைக்குட்பட்ட ஜம்ப் கட்டளைகளின் பெயர்களை உருவாக்கும் போது குறியீட்டைப் புரிந்துகொள்வது (jcc கட்டளையின் பெயரில் உள்ள உறுப்பு, எங்களால் நியமிக்கப்பட்டது) அவற்றை மனப்பாடம் செய்வதையும் மேலும் நடைமுறைப் பயன்பாட்டையும் எளிதாக்கும்.

அட்டவணை 16. jcc கட்டளை பெயரில் உள்ள சுருக்கங்களின் பொருள்
அட்டவணை 17. கட்டளைப் பக்கத்திற்கான நிபந்தனை ஜம்ப் கட்டளைகளின் பட்டியல் operand_1, operand_2

ஒரே கொடியின் மதிப்புகள் நிபந்தனைக்குட்பட்ட ஜம்ப் கட்டளைகளின் பல்வேறு நினைவூட்டல் குறியீடுகளுடன் ஒத்துப்போகின்றன என்பதில் ஆச்சரியப்பட வேண்டாம் (அவை அட்டவணை 17 இல் ஒரு சாய்வு மூலம் ஒருவருக்கொருவர் பிரிக்கப்படுகின்றன). நுண்செயலி வடிவமைப்பாளர்கள் குறிப்பிட்ட சில குழுக்களின் அறிவுறுத்தல்களுடன் இணைந்து நிபந்தனைக்குட்பட்ட ஜம்ப் வழிமுறைகளைப் பயன்படுத்துவதை எளிதாக்கும் விருப்பத்தின் காரணமாக பெயரின் வேறுபாடு உள்ளது. எனவே, வெவ்வேறு பெயர்கள் வெவ்வேறு செயல்பாட்டு நோக்குநிலைகளை பிரதிபலிக்கின்றன. இருப்பினும், இந்த கட்டளைகள் அதே கொடிகளுக்கு பதிலளிக்கின்றன என்பது நிரலில் அவற்றை முற்றிலும் சமமானதாகவும் சமமாகவும் ஆக்குகிறது. எனவே, அட்டவணை 17 இல் அவை பெயரால் அல்ல, ஆனால் அவை செயல்படும் கொடி மதிப்புகள் (நிபந்தனைகள்) மூலம் தொகுக்கப்பட்டுள்ளன.


நிபந்தனைக்குட்பட்ட கிளை அறிவுறுத்தல்கள் மற்றும் கொடிகள்

சில நிபந்தனை ஜம்ப் கட்டளைகளுக்கான நினைவூட்டல் குறியீடானது அவை செயல்படும் கொடியின் பெயரைப் பிரதிபலிக்கிறது, மேலும் பின்வரும் அமைப்பு உள்ளது: "j" எழுத்து முதலில் வருகிறது. (குதி,மாற்றம்), இரண்டாவது கொடி பதவி அல்லது மறுப்பு சின்னம் "n", அதைத் தொடர்ந்து கொடியின் பெயர். இந்த குழு அமைப்பு அதன் நோக்கத்தை பிரதிபலிக்கிறது. "n" எழுத்து இல்லை என்றால், கொடியின் நிலை 1 க்கு சமமாக இருந்தால், ஜம்ப் லேபிளுக்கு மாற்றம் செய்யப்படுகிறது. "n" எழுத்து இருந்தால், கொடியின் நிலை சமத்துவம் 0 க்கு சரிபார்க்கப்படும், மேலும் வெற்றி பெற்றால், ஜம்ப் லேபிளுக்கு ஒரு தாவல் செய்யப்படுகிறது.

கட்டளை நினைவூட்டல் குறியீடுகள், கொடி பெயர்கள் மற்றும் நிலைமாற்ற நிலைமைகள் அட்டவணை 18 இல் கொடுக்கப்பட்டுள்ளன. இந்த கட்டளைகள் குறிப்பிட்ட கொடிகளை மாற்றும் எந்த கட்டளைகளுக்கும் பிறகு பயன்படுத்தப்படலாம்.

அட்டவணை 18. நிபந்தனை ஜம்ப் கட்டளைகள் மற்றும் கொடிகள்

நீங்கள் அட்டவணைகள் 17 மற்றும் 18 ஐ உன்னிப்பாகப் பார்த்தால், அவற்றில் உள்ள பல நிபந்தனை ஜம்ப் கட்டளைகள் சமமானவை என்பதை நீங்கள் காணலாம், ஏனெனில் இரண்டும் ஒரே கொடிகளின் பகுப்பாய்வை அடிப்படையாகக் கொண்டவை.


நிபந்தனை ஜம்ப் வழிமுறைகள் மற்றும் ecx/cx பதிவு

நுண்செயலியின் கட்டமைப்பு பல பதிவேடுகளின் குறிப்பிட்ட பயன்பாட்டை உள்ளடக்கியது. எடுத்துக்காட்டாக, EAX/AX/AL பதிவேடு ஒரு குவிப்பானாகப் பயன்படுத்தப்படுகிறது, மேலும் BP மற்றும் SP பதிவேடுகள் அடுக்கில் வேலை செய்யப் பயன்படுத்தப்படுகின்றன. ESH/CX பதிவேட்டில் ஒரு குறிப்பிட்ட செயல்பாட்டு நோக்கமும் உள்ளது: இது பாத்திரத்தை செய்கிறது கவுண்டர்லூப் கட்டுப்பாட்டு கட்டளைகளில் மற்றும் எழுத்து சரங்களுடன் பணிபுரியும் போது. ecx/cx பதிவேட்டுடன் தொடர்புடைய நிபந்தனைக்குட்பட்ட ஜம்ப் கட்டளையானது இந்த கட்டளைகளின் குழுவாக மிகவும் சரியாக வகைப்படுத்தப்படும்.

இந்த நிபந்தனை கிளை கட்டளைக்கான தொடரியல்:

1) jcxz jump_label (முன்னாள் பூஜ்ஜியமாக இருந்தால் குதிக்கவும்) - cx பூஜ்ஜியமாக இருந்தால் குதிக்கவும்;

2) jecxz jump_label (Jump Equal exx Zero) - exx பூஜ்ஜியமாக இருந்தால் குதிக்கவும்.

இந்த கட்டளைகள் ஒரு வளையத்தை ஒழுங்கமைக்கும் போது மற்றும் எழுத்துக்களின் சரங்களுடன் பணிபுரியும் போது பயன்படுத்த மிகவும் வசதியானவை.

jcxz/jecxz கட்டளைக்கு உள்ளார்ந்த வரம்பு உள்ளது என்பதை கவனத்தில் கொள்ள வேண்டும். மற்ற நிபந்தனை கட்டுப்பாட்டு பரிமாற்ற வழிமுறைகளைப் போலல்லாமல், jcxz/jecxz அறிவுறுத்தல் குறுகிய தாவல்களை மட்டுமே தீர்க்க முடியும் - -128 பைட்டுகள் அல்லது அடுத்த அறிவுறுத்தலில் இருந்து +127 பைட்டுகள்.

சுழற்சிகளை ஒழுங்கமைத்தல்

சுழற்சி, உங்களுக்குத் தெரிந்தபடி, ஒரு முக்கியமான அல்காரிதம் கட்டமைப்பாகும், அதைப் பயன்படுத்தாமல், ஒரு நிரல் கூட செய்ய முடியாது. நிரலின் ஒரு குறிப்பிட்ட பிரிவின் சுழற்சி செயல்பாட்டை நீங்கள் ஒழுங்கமைக்கலாம், எடுத்துக்காட்டாக, நிபந்தனை பரிமாற்ற கட்டளைகள் அல்லது நிபந்தனையற்ற ஜம்ப் கட்டளை jmp ஐப் பயன்படுத்தி. இந்த வகை சுழற்சி அமைப்புடன், அதன் அமைப்பு தொடர்பான அனைத்து செயல்பாடுகளும் கைமுறையாக செய்யப்படுகின்றன. ஆனால், ஒரு சுழற்சி போன்ற அல்காரிதம் உறுப்புகளின் முக்கியத்துவத்தைப் பொறுத்தவரை, நுண்செயலி டெவலப்பர்கள் சுழற்சிகளின் நிரலாக்கத்தை எளிதாக்க கட்டளை அமைப்பில் மூன்று கட்டளைகளின் குழுவை அறிமுகப்படுத்தினர். இந்த கட்டளைகள் ecx/cx பதிவேட்டையும் பயன்படுத்துகின்றன சுழற்சி கவுண்டர்.

இந்த கட்டளைகளின் சுருக்கமான விளக்கத்தை வழங்குவோம்: 1) loop jump_label (Loop) – loop ஐ மீண்டும் செய்யவும். லூப் கவுண்டரின் தானியங்கி குறைப்புடன் உயர்-நிலை மொழிகளில் சுழல்களுக்கு ஒத்த சுழல்களை ஒழுங்கமைக்க கட்டளை உங்களை அனுமதிக்கிறது. குழுவின் பணி பின்வருவனவற்றைச் செய்வதாகும்:

b) ESX/CX பதிவேட்டை பூஜ்ஜியத்துடன் ஒப்பிடுதல்: (ECX/CX) = 0 எனில், வளையத்திற்குப் பிறகு அடுத்த கட்டளைக்கு கட்டுப்பாடு மாற்றப்படும்;

2) loop/loopz transition_label

லூப் மற்றும் லூப்ஸ் கட்டளைகள் முழுமையான ஒத்த சொற்கள். கட்டளைகளின் பணி பின்வரும் செயல்களைச் செய்வதாகும்:

a) ESH/CX பதிவேட்டின் குறைப்பு;

c) பூஜ்ஜியக் கொடியின் நிலையின் பகுப்பாய்வு ZF என்றால் (ECX/CX) = 0 அல்லது XF = 0, வளையத்திற்குப் பிறகு அடுத்த கட்டளைக்கு கட்டுப்பாடு மாற்றப்படும்.

3) loopne/loopnz transition_label

loopne மற்றும் loopnz கட்டளைகளும் முழுமையான ஒத்த சொற்கள். கட்டளைகளின் பணி பின்வரும் செயல்களைச் செய்வதாகும்:

a) ESH/CX பதிவேட்டின் குறைப்பு;

b) ESX/CX பதிவேட்டை பூஜ்ஜியத்துடன் ஒப்பிடுதல்;

c) ZF பூஜ்ஜியக் கொடியின் நிலையின் பகுப்பாய்வு: (ECX/CX) = 0 அல்லது ZF = 1 எனில், வளையத்திற்குப் பிறகு அடுத்த கட்டளைக்கு கட்டுப்பாடு மாற்றப்படும்.

loop/loopz மற்றும் loopne/loopnz கட்டளைகள் அவற்றின் இயக்கக் கொள்கையில் தலைகீழ். zf கொடியை கூடுதலாக பகுப்பாய்வு செய்வதன் மூலம் அவை லூப் கட்டளையின் செயல்பாட்டை நீட்டிக்கின்றன, இது இந்த கொடியை ஒரு குறிகாட்டியாகப் பயன்படுத்தி லூப்பில் இருந்து முன்கூட்டியே வெளியேறுவதை ஒழுங்கமைக்க உதவுகிறது.

loop, loope/loopz மற்றும் loopne/loopnz கட்டளைகளின் தீமை என்னவென்றால், அவை குறுகிய தாவல்களை மட்டுமே செயல்படுத்துகின்றன (-128 முதல் +127 பைட்டுகள் வரை). நீண்ட சுழல்களுடன் வேலை செய்ய, நீங்கள் நிபந்தனை கிளை கட்டளைகள் மற்றும் jmp கட்டளையைப் பயன்படுத்த வேண்டும், எனவே சுழல்களை ஒழுங்கமைக்கும் இரண்டு முறைகளிலும் தேர்ச்சி பெற முயற்சிக்கவும்.

MP சாதனங்களை நிரலாக்க அடிப்படைகள் (விரிவுரை)

விரிவுரைத் திட்டம்

1. நுண்செயலி கட்டளைகளின் வகைப்பாடு

2.முகவரியின் வகைகள்

3. MP KR580VM80 இன் கட்டமைப்பு மற்றும் கட்டளை வடிவங்கள்

1. நுண்செயலி கட்டளைகளின் வகைப்பாடு

ஏற்கனவே குறிப்பிட்டுள்ளபடி, MP இன் அடிப்படை நன்மை நிரலாக்கத்தன்மை ஆகும். இதன் பொருள் MP உள்ளீட்டிற்கு கட்டளைகளைப் பயன்படுத்துவதன் மூலம், தேவையான செயல்பாடுகளின் வரிசையை உறுதிப்படுத்த முடியும், அதாவது. ஒரு குறிப்பிட்ட வழிமுறையை செயல்படுத்துதல், சிக்கலைத் தீர்க்கும் வழிமுறையானது விரும்பியபடி சிக்கலானதாக இருக்கலாம், எனவே, இந்த வழிமுறையானது எம்பியின் கட்டளை அமைப்புக்கு ஏற்ப படிகளாக பிரிக்கப்பட வேண்டும் எம்.பி.யால் என்ன செய்ய முடியும் என்ற கண்ணோட்டத்தில் மட்டுமே, ஆனால் அல்காரிதம் எவ்வாறு செயல்படுத்தப்படுகிறது. எந்தவொரு கட்டளை அல்லது கட்டளைகளின் குழுவின் இருப்பு அல்லது இல்லாமை ஒரு குறிப்பிட்ட பயன்பாட்டிற்கான MP இன் தேர்வை கணிசமாக பாதிக்கலாம்.

MP கட்டளைகளின் வகைப்பாடு படம் 8 இல் வழங்கப்பட்டுள்ளது.

ஒரு கட்டளைக்கு இடமளிக்க தேவையான நினைவக கலங்களின் எண்ணிக்கையின் அடிப்படையில், ஒன்று, இரண்டு அல்லது மூன்று சொற்களின் நீளம் கொண்ட கட்டளைகள் வேறுபடுகின்றன. இரண்டு அல்லது மூன்று சொற்கள் நீளமான வழிமுறைகளைப் பெற, முறையே இரண்டு அல்லது மூன்று நினைவக அணுகல் சுழற்சிகள் தேவை.

பல சந்தர்ப்பங்களில், குறிப்பாக எம்.பி.க்களை ஒத்த கட்டமைப்புகளுடன் ஒப்பிடும் போது, ​​எம்.பி.யின் கட்டடக்கலை பண்புகளுக்கு ஏற்ப கட்டளைகளை வகைப்படுத்துவது பயனுள்ளதாக இருக்கும்.

செயல்பாட்டுக் கண்ணோட்டத்தில், குழுக்கள் மூன்று பெரிய குழுக்களாகப் பிரிக்கப்படுகின்றன: பரிமாற்றம், மேலாண்மை மற்றும் தரவு செயலாக்கம். செயல்பாட்டு பண்புகளின்படி வகைப்படுத்தலைப் பயன்படுத்தி, MP இல் பயன்படுத்தப்படும் முக்கிய கட்டளைகளை விரிவாகக் கருதுவோம். கட்டளைகளின் பெயர்கள் ரஷ்ய சொற்களால் குறிக்கப்படும், அவை நிகழ்த்தப்படும் செயல்பாடுகளின் பொருளைக் குறிக்கும்.

தரவு பரிமாற்ற கட்டளைகள் எந்தவொரு செயலாக்க செயல்பாடுகளையும் செய்யாமல் எளிமையான தகவல் பரிமாற்றத்தை வழங்குதல். இந்த குழுவில் உள்ள கட்டளைகள் நினைவக அணுகல், பதிவு அணுகல் கட்டளைகள் மற்றும் உள்ளீடு/வெளியீட்டு கட்டளைகள் தொடர்பான கட்டளைகளாக பிரிக்கப்பட்டுள்ளன.

நினைவக அணுகல் தொடர்பான கட்டளைகள் பின்வருமாறு:

நினைவில் கொள்ளுங்கள்(எழுது), இதன் மூலம் பதிவேட்டின் உள்ளடக்கங்கள் நினைவக கலத்திற்கு அனுப்பப்படும்.

பைட் அல்லது வார்த்தையை மாற்றுவது தொடர்பான கட்டளைகள் ஒரு குறிப்பிட்ட பதிவேட்டின் எண்ணிக்கை, நினைவக கலத்தின் முகவரி மற்றும் தேவைப்பட்டால், சேமிப்பக தொகுதியின் எண்ணிக்கையைக் குறிக்க வேண்டும்.

பதிவேடுகளை அணுகுவதோடு தொடர்புடைய கட்டளைகள் தகவலின் மூலத்தின் எண்ணிக்கையையும் முடிவுப் பதிவேட்டின் எண்ணிக்கையையும் குறிக்க வேண்டும்.

நேரடியாகப் பதிவிறக்கவும், இதில் கட்டளைக் குறியீட்டில் குறிப்பிடப்பட்ட மாறிலி பதிவேட்டில் எழுதப்பட்டது;

முன்னோக்கி, இதன் மூலம் ஒரு பதிவேட்டின் உள்ளடக்கங்கள் மற்றொன்றுக்கு அனுப்பப்படும்.

I/O கட்டளைகள் அடங்கும்:

உள்ளிடவும், உள்ளீட்டு சாதனத்தின் உள்ளடக்கங்கள் MP இன் உள் பதிவேட்டிற்கு அனுப்பப்படும்;

முடிவுரை, இதில் MP இன் உள் பதிவேட்டின் உள்ளடக்கங்கள் (பொதுவாக ஒரு குவிப்பான்) வெளியீட்டு சாதனத்திற்கு அனுப்பப்படும்.

கட்டுப்பாட்டு கட்டளைகள் , அடிக்கடி மாறுதல் கட்டளைகள் என அழைக்கப்படும், வெளிப்புற சமிக்ஞைகளின் மதிப்பு அல்லது கணினியில் உருவாக்கப்படும் நிபந்தனைகளுக்கு ஏற்ப பல்வேறு செயல்களைச் செய்ய உங்களை அனுமதிக்கிறது.

நிபந்தனையற்ற ஜம்ப் கட்டளைகள் பின்வருமாறு:

நிபந்தனையற்ற ஜம்ப்(BP), இதன்படி BP கட்டளையின் முகவரி புலத்தின் உள்ளடக்கங்கள் நிரல் கவுண்டருக்கு எழுதப்படுகின்றன, அதாவது. கட்டளையில் குறிப்பிடப்பட்டுள்ள முகவரிக்கு நிரலில் ஒரு மாற்றத்தை வழங்குகிறது;

ரீஃபண்ட் உடன் நிபந்தனையற்ற இடமாற்றம்(சப்ரூட்டினுக்கு மாற்றம்), அதன்படி புதிய உள்ளடக்கங்கள் நிரல் கவுண்டரில் எழுதப்படுகின்றன (சப்ரூட்டினின் முதல் கட்டளையின் முகவரி), ஆனால் பிபி கட்டளையைப் போலன்றி, நிரல் கவுண்டரின் நிலை மற்றும் வேறு சில பதிவேடுகள் நினைவகத்தில் சேமிக்கப்படும். சப்ரூட்டீன் அதன் கடைசி RETURN கட்டளையில் செயல்படுத்தப்படும் போது, ​​நிரல் கவுண்டரின் உள்ளடக்கங்கள் மற்றும் அனைத்து பதிவுகளும் மீட்டமைக்கப்படும்.

நிபந்தனை ஜம்ப் வழிமுறைகள் ஒரு பதிவு பிட், கொடி ஃபிளிப்-ஃப்ளாப் அல்லது பிற அளவுருவின் நிலையைச் சரிபார்க்கின்றன. காசோலையின் முடிவு மாற்றம் செய்யப்படுமா இல்லையா என்பதை தீர்மானிக்கிறது. பொதுவாக, காசோலையின் முடிவு கட்டளையில் குறிப்பிடப்பட்டுள்ள நிபந்தனையுடன் பொருந்தினால் மாற்றம் மேற்கொள்ளப்படுகிறது. கட்டுப்பாட்டு கட்டளைகளின் இந்த துணைக்குழுவில் பின்வருவன அடங்கும்:

நிபந்தனை ஜம்ப்(UP) முகவரியின் மூலம் UP கட்டளையின் குறியீடு சரிபார்க்கப்படும் நிலையைக் குறிக்க வேண்டும், இதற்கு MT ஆனது பூஜ்ஜியம் அல்லது பூஜ்ஜியம் அல்லாத முடிவைப் பயன்படுத்துகிறது. சிக்னல்கள், ஓவர்ஃப்ளோ, முதலியன நிபந்தனையை பூர்த்தி செய்யும் போது, ​​முகவரி கவுண்டரின் உள்ளடக்கங்கள் நிரல் கவுண்டரில் எழுதப்படும், அதாவது. கட்டளையில் குறிப்பிடப்பட்டுள்ள முகவரிக்கு நிரலில் மாற்றத்தை வழங்குகிறது. நிபந்தனை பூர்த்தி செய்யப்படாவிட்டால், கட்டுப்பாடு அடுத்த நிரல் கட்டளைக்கு மாற்றப்படும்;

திரும்புதலுடன் நிபந்தனை மாற்றம், நிபந்தனையற்ற ஜம்ப் வித் ரிட்டர்ன் கட்டளையிலிருந்து வேறுபடுகிறது, இதில் குறிப்பிட்ட நிபந்தனையை பூர்த்தி செய்யும் போது மட்டுமே சப்ரூட்டினுக்கான மாற்றம் ஏற்படும்.

பொதுவாக, MP கட்டளை அமைப்பில் இன்னும் பல துணை கட்டளைகள் உள்ளன, அவை நிபந்தனை மாற்றங்களைச் செயல்படுத்துவதைப் பாதிக்கும் பதிவேடுகள் அல்லது தூண்டுதல்களின் நிலையைக் கட்டுப்படுத்த உங்களை அனுமதிக்கின்றன, எடுத்துக்காட்டாக: கொடியை அமைக்கவும், கொடியை மீட்டமைக்கவும், பேட்டரி உயர் பிட்டை அமைக்கவும், பேட்டரி உயர் பிட்டை மீட்டமைக்கவும், முதலியன .

தரவு செயலாக்க கட்டளைகள் எண்கணிதம் மற்றும் தருக்கமாக பிரிக்கப்படுகின்றன. எண்கணிதத்தில் பின்வருவன அடங்கும்:

மடிப்புஇரண்டு பதிவேடுகள் அல்லது ஒரு பதிவு மற்றும் ஒரு நினைவக கலத்தின் உள்ளடக்கங்கள்;

கழித்தல்நினைவகக் கலத்தின் உள்ளடக்கங்கள் அல்லது பதிவேட்டின் உள்ளடக்கங்களிலிருந்து;

1 ஆல் அதிகரிக்கவும்(INCREMENT) நினைவக செல் அல்லது பதிவேட்டின் உள்ளடக்கங்கள் (ஸ்டாக் பாயிண்டர், இன்டெக்ஸ் ரிஜிஸ்டர், திரட்டி);

1 ஆல் குறைக்கவும்(DECREMENT) நினைவக செல் அல்லது பதிவின் உள்ளடக்கங்கள்;

கேரி அவுட் உடன் சேர், பரிமாற்ற தூண்டுதலின் நிலையை கணக்கில் எடுத்துக்கொண்டு கூட்டல் செய்யப்படுகிறது. இது நீண்ட எண்களின் செயலாக்கத்தை ஒழுங்கமைப்பதை எளிதாக்குகிறது;

கடனைக் கணக்கிடுவதைக் கழிக்கவும்;

SHIFTநினைவக செல் அல்லது பதிவின் உள்ளடக்கங்கள் (பொதுவாக ஒரு பிட்).

தருக்க கட்டளைகளின் துணைக்குழு கட்டளைகளை உள்ளடக்கியது:

மற்றும்(லாஜிக்கல் மல்டிபிளை), இதன் மூலம் இரண்டு பதிவேடுகள் அல்லது ஒரு நினைவக செல் மற்றும் ஒரு பதிவேட்டின் உள்ளடக்கங்களுக்கு இடையே இணைப்பு செயல்பாடு செய்யப்படுகிறது;

அல்லது(லாஜிக்கல் அடிஷன்), இதன் மூலம் இரண்டு பதிவேடுகள் அல்லது ஒரு நினைவக செல் மற்றும் ஒரு பதிவேட்டின் உள்ளடக்கங்களுக்கு இடையே ஒரு டிஸ்ஜங்க்ஷன் செயல்பாடு செய்யப்படுகிறது;

செல்லாத தன்மை, இது இரண்டு பதிவேடுகள் அல்லது ஒரு நினைவக செல் மற்றும் ஒரு பதிவேட்டின் உள்ளடக்கங்களை பிட்வைஸ் ஒப்பீடு செய்கிறது;

தலைகீழ்நினைவக செல் அல்லது பதிவின் உள்ளடக்கங்கள்.

2.முகவரியின் வகைகள்

MP இன் மிக முக்கியமான கட்டடக்கலை பண்புகளில் ஒன்று நினைவகத்தை அணுகுவதற்கான சாத்தியமான முறைகள் அல்லது முகவரி வகைகளின் பட்டியல் ஆகும். எம்.பி.யின் உரையாற்றும் திறன் இரண்டு கண்ணோட்டத்தில் குறிப்பிடத்தக்கது.

முதலாவதாக, ஒரு பெரிய அளவிலான நினைவகத்திற்கு ஒரு பெரிய முகவரி நீளம் தேவைப்படுகிறது, ஏனெனில் n-பிட் முகவரியானது 2n சொற்களின் திறன் கொண்ட நினைவகத்தை அணுக அனுமதிக்கிறது. வழக்கமான 8-பிட் MP வார்த்தைகள் 256 நினைவக செல்களை மட்டுமே நேரடியாக அணுகுவதை சாத்தியமாக்குகிறது, இது போதுமானதாக இல்லை. நினைவகத்தை அணுகுவது மிகவும் பொதுவான செயல்பாடு என்பதை நாம் கணக்கில் எடுத்துக் கொண்டால், MP ஐப் பயன்படுத்துவதன் செயல்திறன் பெரும்பாலும் MP இன் சிறிய பிட் திறன் கொண்ட ஒரு பெரிய அளவிலான நினைவகத்தை உரையாற்றும் முறைகளால் தீர்மானிக்கப்படுகிறது என்பது வெளிப்படையானது.

இரண்டாவதாக, நிரலாக்கத்தின் எளிமைக்காக, வரிசைகள், அட்டவணைகள் மற்றும் சுட்டிகளுடன் பணிபுரியும் போது தரவு முகவரிகளை உருவாக்குவதற்கான எளிய அமைப்பைக் கொண்டிருப்பது விரும்பத்தக்கது. இந்தப் பிரச்சனைகளைத் தீர்ப்பதற்கான வழிகளைப் பார்ப்போம்.

கட்டளையின் முகவரி புலம் வரையறுக்கப்பட்டு எந்த நினைவக கலத்தையும் நேரடியாக அணுக போதுமானதாக இல்லை என்றால், அத்தகைய சந்தர்ப்பங்களில் நினைவகம் பக்கங்களாக பிரிக்கப்படுகிறது, அங்கு 2n நினைவக செல்கள் ஒரு பக்கமாக கருதப்படுகின்றன.

பெரிய திறன் கொண்ட நினைவகத்துடன் சிறிய பிட் கட்டளையின் முகவரி புலத்தை பொருத்துவதற்கு ("பக்கம்" சிக்கலை தீர்க்க), MP இல் பல்வேறு வகையான முகவரிகள் பயன்படுத்தப்படுகின்றன:

தற்போதைய பக்கத்திற்கு நேரடி முகவரி . இந்த முகவரியுடன், நிரல் கவுண்டர் இரண்டு புலங்களாக பிரிக்கப்பட்டுள்ளது, உயர்-வரிசை பிட்கள் பக்க எண்ணைக் குறிக்கின்றன, மேலும் குறைந்த-வரிசை பிட்கள் பக்கத்தில் உள்ள கலத்தின் முகவரியைக் குறிக்கின்றன. கட்டளையின் முகவரி புலம் பக்கத்தில் உள்ள கலத்தின் முகவரியைக் கொண்டுள்ளது, மேலும் பக்க முகவரியை வேறு வழியில் அமைக்க வேண்டும், எடுத்துக்காட்டாக, ஒரு சிறப்பு கட்டளையைப் பயன்படுத்தி.

பக்கப் பதிவேட்டைப் பயன்படுத்தி நேரடி முகவரி. MP ஒரு சிறப்பு கட்டளையால் ஏற்றப்பட்ட நிரல்ரீதியாக அணுகக்கூடிய பக்கப் பதிவேட்டைக் கொண்டிருக்க வேண்டும். இந்த பதிவேடு அனைத்து நினைவகத்தையும் நிவர்த்தி செய்வதற்கு தேவையான அறிவுறுத்தலின் முகவரி புலத்தில் பல பிட்களை சேர்க்கிறது.

இரட்டை வார்த்தைகளைப் பயன்படுத்தி நேரடியாக உரையாற்றுதல். ஒரு கட்டளையின் முகவரி புலத்தின் நீளத்தை அதிகரிக்க, முகவரிக்கு ஒரு கூடுதல் சொல் ஒதுக்கப்படுகிறது (தேவைப்பட்டால், இரண்டு).

நிரல் கவுண்டருடன் தொடர்புடைய முகவரி. அறிவுறுத்தல் முகவரி புலம் கையொப்பமிடப்பட்ட முழு எண்ணாகக் கருதப்படுகிறது, இது செயல்படுத்தல் முகவரியை உருவாக்க நிரல் கவுண்டரின் உள்ளடக்கத்தில் சேர்க்கப்படுகிறது. இந்த தொடர்புடைய முகவரியிடல் முறை ஒரு மிதக்கும் பக்கத்தை உருவாக்குகிறது மற்றும் நினைவகத்தில் நிரல்களை நகர்த்துவதை எளிதாக்குகிறது.

குறியீட்டுப் பதிவேடு தொடர்பான முகவரி. கையொப்பமிடப்பட்ட முழு எண்ணாகக் கருதப்படும் குறியீட்டுப் பதிவேட்டின் உள்ளடக்கங்களையும் கட்டளையின் முகவரிப் புலத்தையும் தொகுத்து செயல்படுத்தும் முகவரி உருவாக்கப்படுகிறது. குறியீட்டு பதிவு சிறப்பு கட்டளைகளுடன் ஏற்றப்பட்டுள்ளது.

மறைமுக உரையாடல் . மறைமுக முகவரி பயன்படுத்தப்படும் போது, ​​கட்டளையின் முகவரி புலமானது, நிர்வாக முகவரி சேமிக்கப்பட்டுள்ள தற்போதைய பக்கத்தில் முகவரியைக் குறிப்பிடுகிறது. இந்த வழக்கில், கட்டளை புலத்தில் கூடுதல் பிட் தேவைப்படுகிறது - மறைமுக முகவரியின் அடையாளம். நிர்வாக முகவரியை ஒரு நினைவக கலத்தில் சேமிக்க முடியாது, ஆனால் பொது நோக்கத்திற்கான பதிவேட்டில் சேமிக்க முடியும். இந்த வழக்கில், மறைமுக முகவரி பதிவு முகவரி என்று அழைக்கப்படுகிறது.

3. MP KR580VM80 இன் கட்டமைப்பு மற்றும் கட்டளை வடிவங்கள்

KR580VM80 தொடரின் MP கட்டளை அமைப்பு மூன்று வடிவங்களில் கட்டளைகளைக் கொண்டுள்ளது: ஒற்றை-பைட், இரட்டை-பைட் மற்றும் மூன்று-பைட்.

முதல் பைட்டின் உள்ளடக்கங்கள் கட்டளை வடிவம், செயல்பாட்டுக் குறியீடு, முகவரி மற்றும் பதிவேடுகள் அல்லது பதிவு ஜோடிகளைக் குறிக்கின்றன, இருப்பினும், அவை செயல்பாட்டில் ஈடுபட்டிருந்தால், அவை முதல் மூன்றிற்கு ஒதுக்கப்பட்ட குறிப்பிட்ட பிட்களைக் குறிப்பிட முடியாது கட்டளையின் குறிப்பிட்ட கூறுகள், ஏனெனில் அவை கட்டளையின் எந்த பிட்களிலும் அமைந்திருக்கும். ஆனால் இது இருந்தபோதிலும், அவை ஒரு புலமாக குறியாக்கம் செய்யப்பட்டுள்ளன என்று கருதுவோம், இது செயல்பாட்டு குறியீடு புலம் என்று அழைக்கப்படுகிறது. கட்டளையின் முதல் பைட்டுக்கான வடிவங்களின் மாறுபாடுகள் படம் 9 இல் காட்டப்பட்டுள்ளன.

பதிவேடுகள் செயல்பாட்டில் ஈடுபட்டிருந்தால், அவற்றில் ஒன்று அல்லது இரண்டு கட்டளையின் முதல் பைட்டில் குறிப்பிடப்படலாம். இந்த வழக்கில், கட்டளை புலத்தில் உள்ள பதிவு எண்களுக்கு மிகவும் குறிப்பிட்ட பிட்கள் ஒதுக்கப்படுகின்றன: மூன்று குறைந்த-வரிசை பிட்கள் (b2 - b0) ஓபராண்ட் கொண்ட மூலப் பதிவேட்டின் எண்ணை குறியாக்குகின்றன, மேலும் மூன்று நடுத்தரவை (b5 - b3) - செயல்பாட்டின் முடிவு அனுப்பப்படும் இலக்கு பதிவேட்டின் எண்ணிக்கை, அந்த இரண்டு அல்லது இந்த பதிவேடுகளில் ஒன்று செயல்பாட்டின் செயல்பாட்டில் ஈடுபடாதபோது, ​​தொடர்புடைய பிட்கள் செயல்பாட்டுக் குறியீட்டிற்குப் பயன்படுத்தப்படுகின்றன.

பின்வரும் பதிவு குறியாக்கம் ஏற்றுக்கொள்ளப்படுகிறது:

000 – பதிவு B, 100 – பதிவு H,

001 – பதிவு C, 101 – பதிவு L,

010 – பதிவு D, 110 – நினைவக செல்,

011 – பதிவு E, 111 – பேட்டரி A.

குறியீடு 100 என்பது H மற்றும் L பதிவேடுகளில் உள்ள 16-பிட் முகவரியைப் பயன்படுத்தி மறைமுக நினைவக முகவரியின் அறிகுறியாகும், கட்டளையில் உள்ள இந்த குறியீட்டின் இருப்பிடத்தைப் பொறுத்து, தொடர்புடைய நினைவக செல் ஒரு செயலிக்காக அல்லது முடிவுகளை எழுதுவதற்காக அணுகப்படுகிறது. அறுவை சிகிச்சை.

பல MP கட்டளைகள் இரட்டை நீள எண்களின் செயலாக்கம் அல்லது பரிமாற்றத்திற்கு வழங்குகின்றன. இந்த நிகழ்வுகளில், ஜோடி பதிவேடுகள் B மற்றும் C, D மற்றும் E, அல்லது H மற்றும் L ஆகியவை முறையே 00, 01 மற்றும் 10 என எண்ணப்பட்ட 16-பிட் பதிவேடுகளாக இணைக்கப்படுகின்றன. கட்டளைகளில் உள்ள பதிவு ஜோடிகளின் எண்கள் பிட்கள் b2 மற்றும் b1 (மூலப் பதிவு), b5 மற்றும் b4 (இலக்கு பதிவு) ஆகியவற்றிற்கு ஒதுக்கப்படுகின்றன, மேலும் பிட்கள் b0 மற்றும் b3 செயல்பாட்டுக் குறியீட்டைக் குறிக்கப் பயன்படுத்தப்படுகின்றன.

MP இல் உள்ள இரட்டை-பைட் கட்டளைகள் நேரடி முகவரி மற்றும் உள்ளீடு/வெளியீட்டு கட்டளைகளை உள்ளடக்கியது, அதன்படி, இந்த குழுவின் கட்டளையின் இரண்டாவது பைட் ஒரு உள்ளீடு அல்லது வெளியீட்டு சாதனத்தின் 8-பிட் முகவரியைக் கொண்டுள்ளது.

மூன்று-பைட் அறிவுறுத்தல்களில், இரண்டாவது மற்றும் மூன்றாவது பைட்டுகள் 16-பிட் முகவரிகள் (நேரடி-முகவரி வழிமுறைகளில்) அல்லது 16-பிட் இயக்கங்கள் (பதிவு ஜோடிகள் மற்றும் ஸ்டாக் பாயிண்டரை ஏற்றுவதற்கான வழிமுறைகளில்) கொண்டிருக்கும்.

ஒவ்வொரு ALU செயல்பாட்டிற்கும் பிறகு, ஐந்து அறிகுறிகள் உருவாக்கப்படுகின்றன, அவற்றின் மதிப்புகள் அடுத்தடுத்த தகவல் செயலாக்கம் மற்றும் நிபந்தனை கட்டுப்பாட்டு பரிமாற்ற கட்டளைகளின் செயல்பாட்டை பாதிக்கலாம், இருப்பினும், வெவ்வேறு கட்டளைகள் தனிப்பட்ட அறிகுறிகளில் வெவ்வேறு விளைவுகளை ஏற்படுத்துகின்றன என்பதை நினைவில் கொள்ள வேண்டும்.

குறுக்கீடுகள் மற்றும் சப்ரூட்டின்களுக்கு மாற்றங்களின் போது எம்.பி.யின் நிலையைச் சேமிப்பதற்கும் மீட்டெடுப்பதற்கும் வசதியாக, குறிப்பிட்ட பண்புகள் அனைத்தும் ஒரு சிறப்பு பதிவேட்டில் சேமிக்கப்படும் - பண்புகள் பதிவேட்டில். பதிவு பிட்களில் உள்ள அடையாளங்களின் இடம் அட்டவணையில் காட்டப்பட்டுள்ளது.

இதில் S என்பது "அடையாளம்" பண்புக்கூறு (மிக முக்கியமான பிட்டின் மதிப்பை எடுக்கும்

விளைவாக);

Z - பூஜ்ஜிய முடிவின் அடையாளம்;

ஏசி என்பது துணை பரிமாற்றத்தின் அடையாளம் (பரிமாற்றம் இருந்தால்

பைட் டெட்ராட்களுக்கு இடையில், பின்னர் AC=1, இல்லையெனில் AC=0;

பி - முடிவின் சமநிலையின் அடையாளம் (பைட்டில் உள்ளவர்களின் எண்ணிக்கை என்றால்

முடிவு சமமானது, பின்னர் P=1, இல்லையெனில் P=0);

சி - பரிமாற்றம் அல்லது கடனின் அடையாளம் (கட்டளைகளை இயக்கும்போது,

மூத்த பதவியில் இருந்து இடமாற்றம் அல்லது மூத்தவருக்கு கடன் வழங்கும்போது-

மிக உயர்ந்த இலக்கமானது C=1, இல்லையெனில் C=0).

குறிப்பு: தருக்கப் பெருக்கல் கட்டளைகளுக்கு, துணைக் கேரி சைன் AC முடிவின் நான்காவது பிட்டின் மதிப்பை எடுக்கும்.

MP தொடர் KR580VM80 இன் முழுமையான கட்டளை அமைப்பு "நுண்செயலிகள் மற்றும் நுண்செயலி அமைப்புகள்" என்ற பாடப்புத்தகத்தின் பின்னிணைப்பில் கொடுக்கப்பட்டுள்ளது. அங்கு, ஒவ்வொரு கட்டளைக்கும், அதன் செயல்பாட்டிற்குப் பிறகு, ஒவ்வொரு பண்புக்கூறின் மதிப்பு எவ்வாறு மாறுகிறது என்பதைக் குறிக்கிறது: இது செயல்பாட்டின் (+) முடிவுக்கு ஏற்ப அமைக்கப்பட்டது, மாறாது (-), பூஜ்ஜியத்திற்கு (0) மீட்டமைக்கப்படுகிறது ) அல்லது ஒன்று (1) என அமைக்கவும்.

பொதுவாக, கட்டளை பின்வரும் தகவலைக் கொண்டிருக்க வேண்டும்:

- MP செய்ய வேண்டிய செயல்பாட்டைக் குறிக்கும் செயல்பாட்டுக் குறியீடு;

-இரண்டு செயல்களின் முகவரிகள் (சேர்த்தல், துணைப் பரிமாற்றங்கள் போன்றவை). செயல்பாட்டில் ஏதேனும் ஒரு மாறிலியாக இருந்தால், அதன் முகவரிக்கு பதிலாக, இயக்கத்தின் மதிப்பை கட்டளையில் குறிப்பிடலாம். இருப்பினும், இந்த சூழ்நிலையானது செயல்பாட்டுக் குறியீட்டில் பிரதிபலிக்கப்பட வேண்டும், இதனால் MP கட்டளையின் பொருத்தமான பகுதியை அதன் நோக்கத்திற்காக பயன்படுத்துகிறது;

செயல்பாட்டின் முடிவு வைக்கப்பட வேண்டிய நினைவக கலத்தின் முகவரி;

- அடுத்த கட்டளையின் முகவரி.

அந்த. கட்டளை பொதுவாக நான்கு முகவரிகளாகும், இருப்பினும், இந்த கட்டளை அமைப்பு ஒரு நீண்ட கட்டளை வடிவமைப்பிற்கு வழிவகுக்கிறது, இது மிகவும் சிக்கலான செயலாக்க செயல்முறை மற்றும் செயலி அமைப்புடன் தொடர்புடையது. எனவே, எம்பி தொழில்நுட்பத்தில், முகவரியற்ற மற்றும் யூனிகாஸ்ட் கட்டளைகள் மிகவும் பரவலாக உள்ளன, இருப்பினும், சிக்கலான செயல்பாடுகளைச் செய்யும்போது, ​​​​பல்வேறு கட்டளை வடிவங்கள் பயன்படுத்தப்படுகின்றன.

580 தொடர் எம்பி அறிவுறுத்தல் அமைப்பில் ஒற்றை-பைட், இரட்டை-பைட் மற்றும் மூன்று-பைட் வழிமுறைகள் உள்ளன.

கட்டளையின் முதல் பைட்டின் ஆப்கோடில் எவ்வாறு கட்டளையிடப்பட வேண்டும் என்பது பற்றிய தகவல்.

கணக்கீடுகளை விரைவுபடுத்த, சில செயல்கள் RON தொகுதியில் சேமிக்கப்படும். இந்த இயக்கங்களில் செயல்படும் வழிமுறைகள் சுருக்கப்பட்ட முகவரிக் குறியீடுகளைப் பயன்படுத்துகின்றன (பதிவு முகவரியிடல்).

இந்த கட்டளைகள் RAM ஐ அணுகுவதற்கான ஒப்பீட்டளவில் நீண்ட சுழற்சியை அகற்ற உங்களை அனுமதிக்கின்றன, இதன் மூலம் செயல்பாடுகளின் வேகத்தை கணிசமாக அதிகரிக்கின்றன. RON இன் மட்டுப்படுத்தப்பட்ட திறன் மற்றும் ஒரு பெரிய அளவிலான தரவுகளுடன் பணிபுரியும் போது, ​​மற்ற முகவரி முறைகள் பயன்படுத்தப்படுகின்றன, அவை MP க்கு வெளிப்புற நினைவகத்தில் அமைந்துள்ள இயக்கங்களை அணுக அனுமதிக்கின்றன. மிகவும் பொதுவானது பதிவு மறைமுக முகவரி ஆகும், இது HL பதிவு ஜோடியைப் பயன்படுத்துகிறது.

கட்டுப்பாட்டு பரிமாற்ற கட்டளைகளின் குழுவில், நான்கு வகையான கட்டளைகள் உள்ளன: நிபந்தனையற்ற கிளைகள், நிபந்தனை கிளைகள், சுழல்கள் மற்றும் குறுக்கீடுகள் .

நிபந்தனையற்ற ஜம்ப் கட்டளைகள். மூன்று நினைவூட்டல் குறியீடுகளை உள்ளடக்கியது: JMP (நிபந்தனையற்ற ஜம்ப்), அழைப்பு (சப்ரூட்டின் அழைப்பு) மற்றும் RET (சப்ரூட்டினிலிருந்து திரும்புதல்).

தற்போதைய நிரல் பிரிவு மற்றும் மற்றொரு பிரிவில் அமைந்துள்ள நிரலின் எந்தப் புள்ளிக்கும் செல்ல JMP கட்டளை உங்களை அனுமதிக்கிறது. தற்போதைய நிரல் பிரிவில் குதிக்கும்போது, ​​முதல் மூன்று JMP அறிவுறுத்தல் வடிவங்கள் பயன்படுத்தப்படுகின்றன.

முதல் வடிவம் தற்போதைய நிரல் பிரிவில் நிரலில் ஒரு தன்னிச்சையான புள்ளிக்கு மாற்றத்தை வழங்குகிறது, இதற்காக 16-பிட் ஆஃப்செட் ஐபி உள்ளடக்கத்தில் இரண்டு நிரப்பு குறியீட்டில் சேர்க்கப்படுகிறது, இதில் மிகவும் குறிப்பிடத்தக்க பிட் கையொப்பமிடப்பட்டுள்ளது. இரண்டாவது, சுருக்கப்பட்ட வடிவம், JMP அறிவுறுத்தலில் இருந்து -128-f-127 முகவரிகளை விட நிரலில் ஒரு புள்ளிக்கு செல்ல உங்களை அனுமதிக்கிறது. இறுதியாக, மூன்றாவது வடிவம் 16-பிட் எண்ணுடன் அறிவுறுத்தல் சுட்டிக்காட்டி ஏற்றுகிறது, இது நிர்வாக முகவரி EA இல் அமைந்துள்ளது, இது போஸ்ட்பைட்டால் தீர்மானிக்கப்படுகிறது. இந்த மாற்றம் மறைமுகம் என்று அழைக்கப்படுகிறது, ஏனெனில் மறைமுக முகவரி பயன்படுத்தப்படுகிறது.

CS பிரிவு பதிவேட்டின் மறுஏற்றம் தேவைப்படும்போது, ​​தற்போதைய நிரல் பிரிவுக்கு வெளியே அமைந்துள்ள நிரல் புள்ளிக்கு நிபந்தனையற்ற தாவலை செயல்படுத்த, நான்காவது மற்றும் ஐந்தாவது JMP அறிவுறுத்தல் வடிவங்கள் பயன்படுத்தப்படுகின்றன.

நான்காவது வடிவம் ஒரு நேரடி குறுக்குவெட்டு மாற்றத்தை வரையறுக்கிறது, இதில் வடிவமைப்பின் இரண்டாவது மற்றும் மூன்றாவது பைட்டுகள் மாற்றம் புள்ளியின் தொடர்புடைய முகவரியைக் குறிக்கின்றன, மேலும் நான்காவது மற்றும் ஐந்தாவது பைட்டுகள் புதிய CS மதிப்பைக் குறிக்கின்றன. ஐந்தாவது வடிவம், ஒரு போஸ்ட்பைட்டைப் பயன்படுத்தி, எக்ஸிகியூட்டிவ் முகவரி EA ஐத் தீர்மானிக்க உங்களை அனுமதிக்கிறது, இதில் மாற்றம் புள்ளியின் தொடர்புடைய முகவரி (இஏ, ஈஏ+1 முகவரிகளுடன் நினைவக பைட்டுகளில்) மற்றும் புதிய சிஎஸ் மதிப்பு (மெமரி பைட்டுகளில்) EA+2, EA+3).

CALL கட்டளையானது தற்போதைய நிரல் பிரிவில் அல்லது மற்றொரு நினைவகப் பகுதியில் உள்ள சப்ரூட்டினை அழைக்க உங்களை அனுமதிக்கிறது. இது JMP கட்டளையின் அதே வடிவங்களைக் கொண்டுள்ளது, தவிர இது குறுகியதாக உள்ளது. இதேபோன்ற வடிவமைப்பின் JMP கட்டளையைப் போலல்லாமல், IP அல்லது IP மற்றும் CS மதிப்புகளை மாற்றுவதற்கு முன், CALL கட்டளையானது, தானாக இந்த பதிவேடுகளின் தற்போதைய மதிப்புகளை அடுக்கில் எழுதுகிறது, இது சப்ரூட்டினிலிருந்து திரும்பும் புள்ளி நினைவில் இருப்பதை உறுதி செய்கிறது.

சப்ரூட்டினிலிருந்து திரும்ப, RET கட்டளையைப் பயன்படுத்தவும், இது முந்தைய CALL கட்டளையை இயக்கும் போது ஸ்டேக்கில் தள்ளப்பட்ட திரும்பும் முகவரிக்கு கட்டுப்பாட்டை மாற்றும். தற்போதைய நிரல் பிரிவில் உள்ள சப்ரூட்டீன்களிலிருந்து திரும்பும் போது, ​​RET அறிவுறுத்தலின் முதல் இரண்டு வடிவங்கள் பயன்படுத்தப்படுகின்றன, மேலும் இரண்டாவது வடிவமானது முதல் வடிவத்திலிருந்து வேறுபடுகிறது, அதில் 2வது மற்றும் 3வது பைட்டுகளில் எழுதப்பட்ட நிலையானது உள்ளடக்கத்தில் சேர்க்கப்படுகிறது. ஸ்டாக் சுட்டிக்காட்டி. சப்ரூட்டினிலிருந்து திரும்பும் அதே நேரத்தில், இந்த சப்ரூட்டினைச் செயல்படுத்தும் போது அடுக்கில் எழுதப்பட்ட மற்றும் எதிர்காலத்தில் பயன்படுத்தப்படாத அளவுருக்களை மீட்டமைக்க இது அனுமதிக்கிறது.

இன்டர்செக்மென்ட் ரிட்டர்னுக்கு, மூன்றாவது மற்றும் நான்காவது RET வடிவங்கள் பயன்படுத்தப்படுகின்றன, இது அறிவுறுத்தல் சுட்டிக்காட்டி மற்றும் நிரல் பிரிவு இரண்டின் உள்ளடக்கங்களை மீட்டெடுக்கும்.

நிபந்தனை ஜம்ப் கட்டளைகள்.முந்தைய செயல்பாடுகளின் முடிவுகளைப் பொறுத்து கட்டுப்பாட்டை மாற்றவும். கையொப்பமிடப்பட்ட எண்கள், கையொப்பமிடப்படாத எண்கள் மற்றும் தன்னிச்சையான எண்களுக்கு இடையே உறவுகளை ஏற்படுத்துவதற்கு மூன்று வகையான நிபந்தனை தாவல்கள் பயன்படுத்தப்படுகின்றன. முதல் இரண்டு வகைகளில், எண்களுக்கு இடையிலான ஒரே உறவுகளுக்கு வெவ்வேறு கட்டளை நினைவூட்டல் குறியீடுகள் தேர்ந்தெடுக்கப்படுகின்றன, ஏனெனில் வெவ்வேறு கொடி மதிப்புகள் கையொப்பமிடப்பட்ட மற்றும் கையொப்பமிடப்படாத எண்களுக்கு இடையிலான ஒரே உறவுகளுடன் ஒத்துப்போகின்றன.

நிபந்தனைக்குட்பட்ட ஜம்ப் கட்டளைகளின் நினைவூட்டல் குறியீடுகளில், கையொப்பமிடப்பட்ட எண்களை ஒப்பிடும்போது, ​​"அதிகமான" நிலையைக் குறிக்க கடிதம் பயன்படுத்தப்படுகிறது. ஜி (பெரிய- மேலும்), மற்றும் நியமிக்க - "குறைவான" கடிதம் எல் (குறைவு- குறைவாக). இதே போன்ற நிபந்தனைகளுக்கு, கையொப்பமிடாத எண்களை ஒப்பிடும்போது, ​​முறையே எழுத்துக்கள் பயன்படுத்தப்படுகின்றன ஏ (மேலே- மேலே) மற்றும் கீழே- கீழ்). சமத்துவ நிலை கடிதத்தால் குறிக்கப்படுகிறது இ (சமம்- சமம்), மற்றும் சில நிபந்தனைகளை நிறைவேற்றுவதில் தோல்வி - கடிதம் N(இல்லை- இல்லை). ஒவ்வொரு கட்டளைக்கும் இரண்டு வெவ்வேறு நினைவூட்டல் குறியீடுகளைப் பயன்படுத்த அனுமதிக்கப்படுகிறது என்பதைக் கவனத்தில் கொள்ள வேண்டும்; எடுத்துக்காட்டாக, நினைவூட்டல் குறியீடுகளான JL மற்றும் JNGF ஆகியவை சமமானவை, ஏனெனில் நிபந்தனைகள் "குறைவானவை" மற்றும் "அதிகமாகவோ அல்லது சமமாகவோ இல்லை".

கட்டளை நினைவூட்டல் குறியீடுகளின் முழுமையான பட்டியல், சரிபார்க்கப்படும் நிபந்தனைகள், அத்துடன் கொடிகளின் தொடர்புடைய பூலியன் சேர்க்கைகள் மற்றும் அவற்றின் மதிப்புகள் அட்டவணையில் கொடுக்கப்பட்டுள்ளன. 1.4

அட்டவணை 1.4

கட்டளை நினைவூட்டல் குறியீடு நிலை கொடிகளின் பொருள்
கையொப்பமிட்ட எண்களுக்கு
JL/JNGE குறைவாக/அதிகமாக இல்லை அல்லது சமமாக SF + OF = l
JNL/JGE குறைவாக/அதிகமாகவோ அல்லது சமமாகவோ இல்லை SF + OF = 0
JG/JNLE அதிகமாகவோ/குறைவாகவோ அல்லது சமமாகவோ இல்லை (SF + OF) V ZF = 0
JNG/JLE கையொப்பமிடாத எண்களுக்கு அதிகமாகவோ/குறைவாகவோ அல்லது சமமாகவோ இல்லை (SF + OF) V ZF = l
JB/JNAE குறைவாக/அதிகமாக இல்லை அல்லது சமமாக CF=1
JNB/JAE குறைவாக/அதிகமாகவோ அல்லது சமமாகவோ இல்லை CF=0
JA/JNBE மேலும் CF V ZF = 0
JNA/JBE மற்ற தரவுகளுக்கு இனி இல்லை CF V ZF = 1
JE/JZ சமம்/பூஜ்யம் ZF = 1
JNE/JNZ சமம்/பூஜ்ஜியம் இல்லை ZF = 0
ஜே.எஸ் கழித்தல் மூலம் SF = 1
ஜே.என்.எஸ் பிளஸ் பக்கத்தில் SF = 0
JO நிரம்பி வழிகிறது OF = l
JNO வழிதல் இல்லாததால் OF = 0
ஜேபி/ஜேபிஇ சம சமநிலையால் PF = 1
ஜேஎன்பி/ஜேபிஓ ஒற்றைப்படை சமநிலை மூலம் PF = 0

அனைத்து நிபந்தனை ஜம்ப் வழிமுறைகளும் ஒரே மாதிரியான இரண்டு-பைட் வடிவமைப்பைக் கொண்டுள்ளன, இதில் முதல் பைட் செயல்பாட்டுக் குறியீடு (OPC) மற்றும் இரண்டாவது 8-பிட் ஆஃப்செட் ஆகும், இது கையொப்பமிடப்பட்ட எண்ணாகக் கருதப்படுகிறது, எனவே வரம்பில் முகவரி மாற்றங்களை அனுமதிக்கிறது -128 முதல் + 127 வரை. நிபந்தனை பூர்த்தி செய்யப்படும்போது அதிக தொலைதூர ("தொலைவு") மாற்றம் தேவைப்பட்டால், கூடுதல் நிபந்தனையற்ற மாற்றம் கட்டளை பயன்படுத்தப்படுகிறது.

நிபந்தனைக்குட்பட்ட ஜம்ப் அறிவுறுத்தல்கள் ஒவ்வொன்றையும் செயல்படுத்தும் நேரம் இரண்டு நிகழ்வுகளுக்குக் குறிக்கப்படுகிறது: 1) நிபந்தனை திருப்திகரமாக உள்ளது மற்றும் கட்டுப்பாடு உண்மையில் ஆஃப்செட்டிற்கு ஏற்ப மாற்றப்படுகிறது, 2) நிபந்தனை திருப்திகரமாக இல்லை, எனவே கட்டுப்பாடு அடுத்த அறிவுறுத்தலுக்கு மாற்றப்படுகிறது.

சுழற்சிகளை ஒழுங்கமைப்பதற்கான குழுக்கள்.கணக்கீட்டு சுழற்சிகளைச் செய்வதற்கான வசதிக்காக CPU இல் அறிமுகப்படுத்தப்பட்டது. இவை பின்வரும் நினைவூட்டல் குறியீடுகளை உள்ளடக்கியது: LOOP (லூப் வரை (CX) 0 க்கு சமம் இல்லை), LOOPNZ/LOOPNE (பூஜ்யம் வரை லூப்/சமமாக இல்லை), LOOPZ/LOOPE (பூஜ்ஜியம் வரை லூப்/சமமான வரை) மற்றும் JCXZ (ஜம்ப் ஆன் SH இல் பூஜ்யம்). இந்த கட்டளைகள் ஒவ்வொன்றும் இரண்டு-பைட் வடிவமைப்பைக் கொண்டுள்ளன, இதில் இரண்டாவது பைட் ஜம்ப்பை ஏற்பாடு செய்யப் பயன்படுத்தப்படும் 8-பிட் ஆஃப்செட்டைக் குறிப்பிடுகிறது. இந்த ஆஃப்செட் கையொப்பமிடப்பட்ட எண்ணாகக் கருதப்படுகிறது மற்றும் ஜம்ப் முகவரியைக் கணக்கிடுவதற்கு முன் 16 பிட்களுக்கு கையொப்பமிடப்பட்டது.

சரம் கூறுகளைக் கையாளுவதற்கான கட்டளைகளுடன் லூப் கட்டளைகளைப் பயன்படுத்தி, நீங்கள் மிகவும் சிக்கலான சரம் மாற்ற நிரல்களை உருவாக்கலாம். ஹெக்ஸாடெசிமல் எண் அமைப்பில் எழுதப்பட்ட தரவின் சரத்தை சில குறியீடாக மாற்றுவதற்கு ஒரு நிரலை உருவாக்குவதற்கான உதாரணத்தைக் கருத்தில் கொள்வோம், இதற்காக XLAT க்கு அட்டவணை மாற்ற கட்டளையைப் பயன்படுத்துவதற்குத் தேவையான BX இல் குறிப்பிடப்பட்ட தொடக்க முகவரியிலிருந்து நினைவகத்தில் மாற்றப்பட்ட அட்டவணை அமைந்துள்ளது. குறியீடுகள். மூலச் சரமானது 80 கூறுகளைக் கொண்டுள்ளது மற்றும் தொடர்புடைய தொடக்க முகவரி 100 இலிருந்து நினைவகத்தில் அமைந்துள்ளது என்றும், முடிவு சரம் தொடர்புடைய முகவரி 200 இலிருந்து வைக்கப்பட வேண்டும் என்றும் வைத்துக்கொள்வோம். திசைக் கொடியின் மதிப்பு DF=0, படிவத்தைக் கொண்டிருக்கும்:

MOVSI ,100
MOV DI,200
MOV CX, 80

1.2 இல் விவரிக்கப்பட்டுள்ள XLAT அட்டவணை மாற்ற கட்டளை இங்கே பயன்படுத்தப்படுகிறது.

குறுக்கீடு கட்டளைகள்.மூன்று நினைவூட்டல்களை உள்ளடக்கியது: INT (குறுக்கீடு), INTO (ஓவர்ஃப்ளோவில் குறுக்கீடு), மற்றும் IRET (குறுக்கீடு திரும்புதல்).

INT இல் குறுக்கீடு கட்டளை v=1இரண்டு-பைட் வடிவமைப்பைக் கொண்டுள்ளது, இரண்டாவது பைட்டில் வகையை வரையறுக்கும் 8-பிட் எண் உள்ளது (வகை)அல்லது குறுக்கீடு நிலை. INT கட்டளை மூலம் வகைசெயலி குறிப்பிட்ட அளவிலான குறுக்கீடு சேவைத் திட்டத்தை இயக்கத் தொடர்கிறது, மேலும் குறுக்கீடு புள்ளிக்குத் திரும்புவதை உறுதிப்படுத்த தேவையான செயல்கள் தானாகவே செய்யப்படுகின்றன. இந்த செயல்கள் பின்வருமாறு: F கொடிகள் பதிவேட்டின் உள்ளடக்கங்கள் அடுக்கில் (PUSHF), IF மற்றும் TF கொடிகள் மீட்டமைக்கப்படுகின்றன, CS பதிவேட்டின் தற்போதைய மதிப்புகள் மற்றும் IP அறிவுறுத்தல் சுட்டிக்காட்டி அடுக்கில் எழுதப்படுகின்றன.

மதிப்புக்கு ஏற்ப சேவைத் திட்டத்தின் தொடக்க முகவரியைத் தீர்மானிக்க வகைகுறுக்கீடு நிலை அட்டவணை பயன்படுத்தப்படுகிறது. இந்த அட்டவணையில் உள்ள 256 குறுக்கீடு நிலைகளில் ஒவ்வொன்றிற்கும், நான்கு பைட்டுகள் ஒதுக்கப்பட்டுள்ளன: முதல் இரண்டு பைட்டுகள் ஐபி அறிவுறுத்தல் சுட்டிக்காட்டியின் மதிப்பை தீர்மானிக்கின்றன, இரண்டாவது - சிஎஸ் பிரிவு பதிவேட்டின் மதிப்பு. இந்த நான்கு பைட்டுகள் சேவை நிரல்களின் தொடக்க முகவரிகளை வரையறுக்கிறது (சோடிகள் CS, IP மதிப்புகள்), இது முதலில் 0-3FFH என்ற முழுமையான முகவரிகளில் நினைவக கலங்களில் எழுதப்பட வேண்டும். INT கட்டளையில் குறிப்பிடப்பட்டுள்ள அட்டவணை முகவரி வகைகுறுக்கீடு நிலை CPU இல் பின்வருமாறு தீர்மானிக்கப்படுகிறது. CS மற்றும் GR இன் தற்போதைய மதிப்புகளை அடுக்கில் சேமித்த பிறகு, ஏற்றுதல் மேற்கொள்ளப்படுகிறது: CS = வகைஎக்ஸ் 4 + 2 மற்றும் ஐபி = வகைஎக்ஸ் 4. புதிய CS மற்றும் IP மதிப்புகள் முறையே முகவரி கலங்களிலிருந்து எடுக்கப்பட்டது வகைஎக்ஸ் 4 + 2 மற்றும் வகைஎக்ஸ் 4, தேவையான பராமரிப்பு திட்டத்தின் தொடக்க முகவரியைத் தீர்மானிக்கவும்.

புல மதிப்பு இருக்கும் போது INT குறுக்கீடு கட்டளை மேலே விவாதிக்கப்பட்டது v = 0இது ஒற்றை-பைட் வடிவமைப்பைக் கொண்டுள்ளது, அதாவது குறுக்கீடு நிலையின் சிறப்புக் குறிப்பு தேவையில்லை. இந்த கட்டளையானது செயலியால் நிலை 3 குறுக்கீடு என தானாகவே உணரப்படும். (வகை=3)மற்றும் பொதுவாக நிரல்களில் சோதனைச் சாவடியாகப் பயன்படுத்தப்படுகிறது.

INTO ஓவர்ஃப்ளோ இன்டர்ரப்ட் கட்டளையானது நான்காவது நிலை குறுக்கீட்டிற்கு சேவை செய்வதற்கு மாற்றத்தை ஏற்படுத்துகிறது (வகை = 4)நிரம்பி வழியும் கொடியின் மதிப்பு OF = 1. INTO கட்டளை பொதுவாக கையொப்பமிடப்பட்ட எண்கணித கட்டளைகளுக்குப் பிறகு பயன்படுத்தப்படுகிறது. பொதுவாக, முதல் சில குறுக்கீடு நிலைகள் (32 வரை) பூஜ்ஜியத்தால் வகுக்கும் முயற்சி, வழிதல் போன்ற பல குறிப்பிட்ட சூழ்நிலைகளைச் செயலாக்குவதற்கு ஒதுக்கப்பட்டுள்ளன.

ஒதுக்கப்பட்ட நிலைகளின் குறுக்கீடுகளைச் செயலாக்குவதன் ஒரு தனித்தன்மை என்னவென்றால், செயலியானது இடையூறு செயல்படுத்தும் கொடியின் மதிப்பைப் பொருட்படுத்தாமல் IF ஐச் செயல்படுத்துகிறது.

ஒரு பைட் IRET அறிவுறுத்தல் ஒவ்வொரு குறுக்கீடு சேவை வழக்கத்தின் முடிவிலும் வைக்கப்பட்டு, குறுக்கீடு வருவாயை வழங்குகிறது. இந்தக் கட்டளையின் மூலம், செயலி ஐபி அறிவுறுத்தல் சுட்டிக்காட்டி மற்றும் CS நிரல் பிரிவின் மதிப்பை அடுக்கிலிருந்து மீட்டெடுக்கிறது, மேலும் F கொடி பதிவேட்டின் முந்தைய உள்ளடக்கங்களையும் (POPF கட்டளையைப் போல) மீட்டெடுக்கிறது. தேவைப்பட்டால், குறுக்கீடு செய்யப்பட்ட நிரலுடன் தொடர்புடைய மீதமுள்ள CPU பதிவேடுகளின் உள்ளடக்கங்கள் சேவை நிரலுக்குச் செல்லும்போது அடுக்கில் சேமிக்கப்படும், பின்னர் ஸ்டாக் அணுகல் வழிமுறைகளைப் பயன்படுத்தி அதிலிருந்து திரும்பும் போது மீட்டமைக்கப்படும்.

மறைமுக முகவரி மூலம்

PCHL - ஜம்ப் முகவரி HL பதிவு ஜோடியில் சேமிக்கப்படுகிறது. அது செயல்படுத்தப்படும் போது (HL) → PC.

நிபந்தனை ஜம்ப் கட்டளைகள்

Jcon @, கான் என்பது ஆங்கில வார்த்தையின் கண்டிஷன் நினைவூட்டல்.

RgP (F) இன் பிட்களின் (கொடிகள்) நிலை மாறுதல் நிபந்தனையாகப் பயன்படுத்தப்படுகிறது என்று முன்னர் குறிப்பிடப்பட்டது. இந்த நிலைகளுடன் தொடர்புடைய நினைவூட்டல்கள் படத்தில் வழங்கப்பட்டுள்ளன. 6.18

எடுத்துக்காட்டாக: JC 8BFE – C=1 முகவரி 8BFE க்கு செல்லும் போது, ​​C=0 முகவரியில் அடுத்த கட்டளை செயல்படுத்தப்படும்.

பிபியை அழைத்து திரும்புவதற்கான கட்டளைகள்

திரும்பும் முகவரி தானாகவே அடுக்கில் சேமிக்கப்படும் என்று முன்னர் குறிப்பிடப்பட்டது, அதாவது. (பிசி) ® ஸ்டாக்.

நிபந்தனையற்ற கட்டளைகள்

அழைப்பு @ - சப்ரூட்டின் அழைப்பு;

RET - சப்ரூட்டினிலிருந்து திரும்புதல்.

நிபந்தனை கட்டளைகள்

Ccon @ - subroutine அழைப்பு;

Rcon - சப்ரூட்டினிலிருந்து திரும்புதல்.

கட்டளைகளின் செயல் நிபந்தனை ஜம்ப் கட்டளைகளின் செயலுக்கு ஒத்ததாகும், அதாவது. நிபந்தனை உண்மையாக இருந்தால், அழைக்கவும் அல்லது திரும்பவும். இல்லையெனில், பின்வரும் கட்டளைகள் செயல்படுத்தப்படும்.

பிற கட்டுப்பாட்டு கட்டளைகள்

RST n, எங்கே n = 0,1,...,7 – குறுக்கீடு திசையன் n படி மறுதொடக்கம்.

இந்த கட்டளை செயல்படுத்தப்படும் போது, ​​இந்த குறுக்கீடு சேவை செய்யும் சப்ரூட்டினுக்கு கட்டுப்பாடு மாற்றப்படும். RST அறிவுறுத்தலின் போது, ​​PC நிரல் கவுண்டரின் உள்ளடக்கங்கள் அடுக்கில் சேமிக்கப்படும், மேலும் தொடர்புடைய குறுக்கீடு திசையன் முகவரி PC க்கு எழுதப்படும்.

இந்த முகவரி பின்வருமாறு அமைக்கப்பட்டுள்ளது. RST கட்டளை 11NN N111 அமைப்பைக் கொண்டுள்ளது, அதாவது. ஒரு பைட். மூன்று-பிட் NNN சேர்க்கை மதிப்பு n (n = 0...7) மூலம் குறிப்பிடப்படுகிறது. மதிப்பு 0000 0000 00NN N000 பிசி கட்டளை கவுண்டரில் உள்ளிடப்பட்டுள்ளது, இது தொடர்புடைய குறுக்கீடு திசையனின் முகவரியாக செயல்படுகிறது.

எனவே, n இன் குறிப்பிட்ட மதிப்பை அமைப்பதன் மூலம், 8 குறுக்கீடு திசையன்களில் ஒன்றின் முகவரியை நீங்கள் உருவாக்கலாம். இந்த முகவரிகள் முகவரி இடத்தின் 0000H முதல் 0038H வரையிலான மண்டலத்தில் அமைந்துள்ளன மற்றும் 8 பைட்டுகள் வழியாக செல்கின்றன, அதாவது. முதல் 64 நினைவக செல்கள் அவர்களுக்கு ஒதுக்கப்பட்டுள்ளன (ஒவ்வொரு 8 திசையன்களுக்கும் 8 பைட்டுகள் ஒதுக்கப்பட்டுள்ளன). இந்த மண்டலங்களில் (ஒவ்வொன்றும் 8 பைட்டுகள்) மற்ற நினைவக பகுதிகளில் அமைந்துள்ள தொடர்புடைய துணை நிரல்களுக்கு (ஹேண்ட்லர்கள்) தாவுவதற்கான கட்டளைகள் மட்டுமே எழுதப்பட்டுள்ளன.

குறுக்கீடு சப்ரூட்டின்கள் (சாதாரண சப்ரூட்டின்கள் போன்றவை) RET கட்டளையுடன் முடிவடைய வேண்டும். இந்த கட்டளையை செயல்படுத்தும் போது, ​​குறுக்கீடு ஏற்பட்ட முக்கிய நிரல் கட்டளையின் முகவரி அடுக்கிலிருந்து தேர்ந்தெடுக்கப்பட்டு முகவரி பதிவேடு PA க்கு மாற்றப்படும், மேலும் 1 ஆல் அதிகரிக்கப்பட்ட மதிப்பு நிரல் கவுண்டரில் உள்ளிடப்படும்.

EI - குறுக்கீடு இயக்கு. குறுக்கீடு இயக்கப்பட்ட நிரல் பிரிவின் தொடக்கத்தில் இந்த கட்டளை வைக்கப்படுகிறது. இந்த கட்டளையுடன், MP கட்டுப்பாட்டு அலகு உள்ள குறுக்கீடு செயல்படுத்தும் தூண்டுதல் நிலை 1 க்கு அமைக்கப்பட்டுள்ளது.

DI - குறுக்கீடு முடக்கு. குறுக்கீடு இயக்கப்பட்ட நிரல் பிரிவின் முடிவில் இந்தக் கட்டளை வைக்கப்பட்டு, தூண்டுதலை 0 நிலைக்கு மீட்டமைக்கிறது.

NOP என்பது ஒரு "வெற்று" கட்டளை. 4 நடவடிக்கைகளைத் தவிர்க்கிறது. பிசி மட்டுமே மாறுகிறது.

HLT - நிறுத்து. நிரல் செயலாக்கத்தை நிறுத்துவதற்கும் நிறுத்தப்பட்ட நிலைக்கு நுழைவதற்கும் காரணமாகிறது. வெளிப்புற முகவரி மற்றும் தரவு பேருந்துகளில் இருந்து MP துண்டிக்கப்பட்டது (அதாவது, அவற்றின் இடையகங்கள் மாநில Z க்கு செல்கின்றன). காத்திருப்பு (காத்திருப்பு) வெளியீடு நிலை 1 ஆக அமைக்கப்பட்டுள்ளது. MP தொடக்க சமிக்ஞைகள் அல்லது குறுக்கீடு நிலையில் வைப்பதன் மூலம் இந்த நிலை குறுக்கிடப்படலாம்.

சுய-தேர்வு கேள்விகள்

1. எளிய மைக்ரோகம்ப்யூட்டரை உருவாக்க என்ன சாதனங்கள் தேவை?

2. மைக்ரோகம்ப்யூட்டர் கட்டமைப்புகளுக்கான 5 விருப்பங்களை பட்டியலிடுங்கள்.

3. இடைநிலை இடைமுகத்தைப் பயன்படுத்துதல்.

4. "PU கட்டுப்படுத்தி" என்ற கருத்து என்ன உள்ளடக்கியது?

5. I8080 செயலியின் பண்புகளை பட்டியலிடுங்கள்.

6. தரவு பதிவுகள். அவர்களின் நோக்கம்.

7. கையொப்ப பதிவுகள். இந்த பதிவேடுகளில் என்ன பண்புக்கூறுகள் சேமிக்கப்பட்டுள்ளன?

8. உள் மற்றும் வெளிப்புற SD க்கு இடையில் இருதரப்பு தரவு பரிமாற்றத்தின் கொள்கையை விவரிக்கவும்.

9. ஒரு புரோகிராமர் என்ன பதிவேடுகளைப் பயன்படுத்தலாம்?

10. MP KR580VM80 அடிப்படையிலான மைக்ரோகம்ப்யூட்டரின் தொகுதி வரைபடத்தைக் கொடுங்கள்.

11. இயந்திர சுழற்சி என்ன சுழற்சிகளைக் கொண்டுள்ளது?

12. MP KR580VM80 இன் தரவு வடிவங்களை பட்டியலிடுங்கள்.

13. MP KR580VM80 இன் கட்டளை வடிவங்களை பட்டியலிடுங்கள்.

14. MP KR580VM80 இல் என்ன முகவரி முறைகள் பயன்படுத்தப்படுகின்றன?

15. MP KR580VM80 அணிகளை எந்தக் குழுக்களாகப் பிரிக்கலாம்?

16. ஒற்றை பைட் இடமாற்றங்கள். இந்தக் குழுவிலிருந்து கட்டளைகளின் உதாரணங்களைக் கொடுங்கள்.

17. இரட்டை பைட் இடமாற்றங்கள். இந்தக் குழுவிலிருந்து கட்டளைகளின் உதாரணங்களைக் கொடுங்கள்.

18. உங்களுக்கு என்ன பேட்டரி செயல்பாடுகள் தெரியும்?

19. RON மற்றும் நினைவகத்தில் செயல்பாடுகள். அவை என்ன செயல்பாடுகளை உள்ளடக்கியது?

20. கட்டுப்பாட்டு கட்டளைகளை பட்டியலிடுங்கள்.

கட்டுப்பாட்டு பணிகள்

1. விடைத்தாள்கள் குழு எண், மாணவரின் கடைசி பெயர் மற்றும் அவரது விருப்பத்தின் எண்ணிக்கை ஆகியவற்றைக் குறிக்க வேண்டும்.

2. கிரேடு புத்தகத்தில் உள்ள கடைசி இரண்டு இலக்கங்களுக்கு ஏற்ப மாணவரால் கேள்வி எண்கள் தேர்ந்தெடுக்கப்படுகின்றன. அட்டவணை 6.1 இல், n-1 என்பது எண்ணின் இறுதி இலக்கமாகும், மேலும் n என்பது கடைசி இலக்கமாகும். அட்டவணையின் கலங்களில் எழுத்துப்பூர்வ பதில் அளிக்கப்பட வேண்டிய கேள்விகளின் எண்ணிக்கை உள்ளது.

கேள்வி எண்கள் அட்டவணை 6.1

a n a n-1
1,5,9, 13,16 2,6,10,14,17 3,7,11,15,18 4,8,12,13,19 1,9,11,14,20 2,10,12,15,18 3,5,8, 13,17 4,6,7, 14,19 1,8,10,13,17 2,5,7, 14,18
3,6,8, 15,19 4,7,9, 13,16 1,5,12,14,20 2,6,11,15,16 3,7,10,13,17 4,8,9, 14,18 1,7,12,13,18 2,8,10,14,19 3,5,11,15,20 4,6,9, 13,17
2,7,9, 13,20 1,8,11,15,19 4,5,10,15,17 3,6,12,14,16 1,5,9, 13,16 2,6,10,14,17 3,7,11,15,18 4,8,12,13,19 1,9,11,14,20 2,10,12,15,18
3,5,8, 13,17 4,6,7, 14,19 1,8,10,13,17 2,5,7, 14,18 3,6,8, 15,19 4,7,9, 13,16 1,5,12,14,20 2,6,11,15,16 3,7,10,13,17 4,8,9, 14,18
1,7,12,13,18 2,8,10,14,19 3,5,11,15,20 4,6,9, 13,17 2,7,9, 13,20 1,8,11,15,19 4,5,10,15,17 3,6,12,14,16 1,5,9, 13,16 2,6,10,14,17
3,7,11,15,18 4,8,12,13,19 1,9,11,14,20 2,10,12,15,18 3,5,8, 13,17 4,6,7, 14,19 1,8,10,13,17 2,5,7, 14,18 3,6,8, 15,19 4,7,9, 13,16
1,5,12,14,20 2,6,11,15,16 3,7,10,13,17 4,8,9, 14,18 1,7,12,13,18 2,8,10,14,19 3,5,11,15,20 4,6,9, 13,17 2,7,9, 13,20 1,8,11,15,19
4,5,10,15,17 3,6,12,14,16 1,5,9, 13,16 2,6,10,14,17 3,7,11,15,18 4,8,12,13,19 1,9,11,14,20 2,10,12,15,18 3,5,8, 13,17 4,6,7, 14,19
1,8,10,13,17 2,5,7, 14,18 3,6,8, 15,19 4,7,9, 13,16 1,5,12,14,20 2,6,11,15,16 3,7,10,13,17 4,8,9, 14,18 1,7,12,13,18 2,8,10,14,19
3,5,11,15,20 4,6,9, 13,17 2,7,9, 13,20 1,8,11,15,19 4,5,10,15,17 3,6,12,14,16 1,5,9, 13,16 2,6,10,14,17 3,7,11,15,18 4,8,12,13,19

நிபந்தனையற்ற மாற்றம் செயல்பாடு (BP) என்பது நிபந்தனையற்ற கட்டுப்பாட்டு பரிமாற்றத்தின் செயல்பாடுகளைக் குறிக்கிறது மற்றும் பின்வருவனவற்றைக் கொண்டுள்ளது. செயல்பாட்டின் தொடக்கத்தில், CC இன் உள்ளடக்கங்கள், BP (திரும்ப முகவரி) ஐப் பின்பற்றும் கட்டளையைக் குறிக்கும், நிரல் திரும்புவதற்கு வழங்கினால், P1 AU க்கு அனுப்பப்படும்; இது P1 இன் உள்ளடக்கங்களை (எடுத்துக்காட்டாக, 3G செயல்பாட்டின் மூலம்) நினைவகத்திற்கு மாற்றுவதன் மூலம் திரும்பும் முகவரியைச் சேமிக்க உங்களை அனுமதிக்கிறது. இதைச் செய்ய, மாற்றம் செய்யப்படும் நிரல் பிரிவின் முதல் கட்டளைகள் தொடர்புடைய செயல்பாட்டைக் கொண்டிருக்க வேண்டும். செயல்பாட்டின் அடுத்த கட்டத்தில், மாற்றம் முகவரியான 1-14 பிட்களின் உள்ளடக்கங்கள் SchK இல் உள்ள BP கட்டளையில் குறிப்பிடப்பட்ட முகவரியுடன் RAM அல்லது ROM கலத்திலிருந்து படிக்கப்படும். இந்த முகவரியில், மாற்றம் செய்யப்பட்ட கட்டளைக்கு ROM க்கு ஒரு கோரிக்கை செய்யப்படுகிறது.

ஷிப்ட் ஆபரேஷன்

ஷிப்ட் வடிவத்தில் (FSD), "அரித்மெடிக் ஷிப்ட் வலது (இடது)" மற்றும் "லாஜிக்கல் ஷிப்ட் வலது (இடது)" செயல்பாடுகள் குறியாக்கம் செய்யப்பட்டுள்ளன. அவை செயல்படுத்தப்படும் போது, ​​ஏசியில் அமைந்துள்ள எண்ணில் செயல்கள் செய்யப்படுகின்றன. கட்டளையில் உள்ள பண்புக்கூறுகள் குறிப்பிடப்பட்டுள்ளன: மாற்றத்தின் திசை (5 r), மாற்றங்களின் வகைகள் (8.9 r) மற்றும் அவற்றின் எண் (1-4 r). செயல்பாட்டின் போது, ​​​​பதிவு P2 இன் பிட்கள் மாற்றப்படுகின்றன, இதன் விளைவாக P2 மற்றும் РСм பதிவேடுகளில் பதிவு செய்யப்படுகின்றன, மேலும் வலதுபுறம் மாற்றம் ஒரே நேரத்தில் 3 பிட்களால் மேற்கொள்ளப்படுகிறது, இடதுபுறம் 1 பிட் ஆகும். "1" க்கு சமமான 5 வது பிட்டின் மதிப்பு இடதுபுறம் மாற்றத்தை தீர்மானிக்கிறது, "0" க்கு சமமாக - வலதுபுறம்.

செயல்பாடுகள் சுழற்சியானவை. ஷிப்ட் சுழற்சிகளின் எண்ணிக்கை சுழற்சி கவுண்டரால் (CC) கணக்கிடப்படுகிறது. செயல்பாட்டின் சுழற்சிப் பகுதியைச் செயல்படுத்துவதற்கு முன், ஒரு மாறிலி மற்றும் ஷிப்ட் அடையாளத்தைக் கொண்ட கட்டளையின் 1-5 பிட்களின் உள்ளடக்கங்கள் மையத்திற்கு அனுப்பப்படும். அடுத்து, P2 இன் உள்ளடக்கங்கள் RSM க்கு அனுப்பப்படும். P2 மற்றும் Pcm பதிவேடுகளின் உள்ளடக்கங்களை முறையே P2' மற்றும் Pcm' ஆக "சாய்ந்த" நகலெடுப்பதன் காரணமாக இந்த மாற்றம் மேற்கொள்ளப்படுகிறது. பின்னர் PCm' மற்றும் P2' இலிருந்து SM1 மற்றும் SM2 வழியாக மாற்றப்பட்டதன் விளைவு P2 மற்றும் PSM ஆக மீண்டும் எழுதப்படும். செயல்பாட்டின் நிறைவு SchT =0 இன் மதிப்பால் குறிக்கப்படுகிறது.

மாற்றத்தின் வகையைப் பொறுத்து (L அல்லது A), அனைத்து 16 பிட்களும் (L) அல்லது 15 பிட்கள் (Mantissa) மட்டும் (A) இல்லாமல் மாற்றப்படும். A வலப்புறமாக மாறும்போது, ​​காலியான உயர்-வரிசை பிட்கள் ஒரு அடையாளத்தால் நிரப்பப்படும், மேலும் இடதுபுறம் மாறும்போது, ​​காலியாக உள்ள குறைந்த-வரிசை பிட்கள் பூஜ்ஜியங்களால் நிரப்பப்படும். வலது அல்லது இடது பக்கம் ஒரு தருக்க மாற்றத்தின் போது, ​​காலியான பிட்கள் பூஜ்ஜியங்களால் நிரப்பப்படும்.

நீங்கள் ஷிப்ட் மாறிலியை நிரல் ரீதியாக மாற்றலாம்.

32 நிபந்தனை ஜம்ப் செயல்பாடுகளைச் செய்யும்போது CB செயலியின் தொகுதி வரைபடத்தின் முனைகள் மற்றும் கூறுகளின் தொடர்பு.

நிபந்தனை ஜம்ப் செயல்பாடுகள்



கட்டளையில் உள்ள "முகமூடி" குறியீட்டுடன் முந்தைய செயல்பாட்டின் முடிவு பண்புக்கூறின் மதிப்பை ஒப்பிடுவதன் மூலம் மாற்றத்தின் நிலையின் சாத்தியத்தை சரிபார்ப்பதன் மூலம் செயல்பாட்டின் செயல்படுத்தல் தொடங்குகிறது. நிபந்தனை பூர்த்தி செய்யப்பட்டால், கட்டளையை செயல்படுத்துவதற்கான மாற்றம் ஏற்படுகிறது, அதன் முகவரி PFU வடிவமைப்பின் முகவரி-செயல்பாட்டு பகுதியில் உள்ளது. மாற்றம் நிபந்தனை பூர்த்தி செய்யப்படாவிட்டால், நிரலில் உள்ள "நிபந்தனை ஜம்ப்" கட்டளையைப் பின்பற்றும் கட்டளை செயல்படுத்தப்படும்.

"நிபந்தனை ஜம்ப்" (JJ) கட்டளை இரண்டு அருகில் உள்ள ROM செல்களை ஆக்கிரமித்துள்ளது. முதல் கலத்தில் கட்டளை உள்ளது, இரண்டாவது கலத்தில் ஜம்ப் முகவரி உள்ளது. கட்டளையின் 7-9 பிட்களின் கலவையால் நிபந்தனை ஜம்ப் தீர்மானிக்கப்படுகிறது, திரும்பும் முகவரியை வைப்பதற்கான நிபந்தனை 6 வது பிட்டால் தீர்மானிக்கப்படுகிறது.

நிபந்தனை பூர்த்தி செய்யப்படும்போது, ​​​​மாற்ற முகவரி நிரல் கவுண்டரில் உள்ளிடப்படுகிறது, எனவே அடுத்த கட்டளையின் குறியீடு இந்த முகவரியுடன் கலத்திலிருந்து படிக்கப்படும். 6 வது பிட் 0 க்கு சமமாக இருந்தால் P1 இல் திரும்பும் முகவரி மற்றும் இந்த பிட்டின் மதிப்பு ஒன்றுக்கு சமமாக இருந்தால் Pcm இல் உள்ளிடப்படும்.

நிலைமாற்ற நிபந்தனை பூர்த்தி செய்யப்படாவிட்டால், முகவரிக் குறியீடு i+2 உள்ள கலத்திலிருந்து அடுத்த வழிமுறை தேர்ந்தெடுக்கப்படும். இந்த வழக்கில், கட்டளையின் 6 வது பிட்டின் மதிப்பைப் பொருட்படுத்தாமல் குறிப்பிட்ட குறியீடு (திரும்ப முகவரி) P1 இல் உள்ளிடப்படுகிறது. பிந்தையது UE செயல்பாட்டுக் குறியீட்டைப் புரிந்துகொள்ளும் போது SV செயலியின் இயக்க அல்காரிதம் மூலம் தீர்மானிக்கப்படுகிறது.

பிசிஎம்மில் திரும்பும் முகவரியை உள்ளிடுவது, ஏசியில் இருந்து கோட் பஸ்ஸிற்கான அவுட்புட் குறிப்பிட்ட பதிவேட்டை மட்டுமே கொண்டிருப்பதன் காரணமாகும்.

NC செயல்பாட்டின் ஒரு தனித்தன்மை என்னவென்றால், கட்டளையின் "மாஸ்க்" பிட்களில் குறியீடு 111 அல்லது 000 ​​இருந்தால், நிபந்தனை மாற்றம் முறையே நிபந்தனையற்ற ஒன்றாக அல்லது அடிப்படை பதிவேடுகளுக்கு அனுப்பும் செயல்பாடாக சிதைகிறது. இந்த சந்தர்ப்பங்களில், ஜம்ப் முகவரிகள் அல்லது அடிப்படைப் பதிவேடுகளுக்கு அனுப்பும் முகவரி ஆகியவை அறிவுறுத்தலின் (AOC) முகவரி-செயல்பாட்டுப் பகுதியின் உள்ளடக்கங்களாகும்.

BRக்கு அனுப்பும் செயல்பாட்டைச் செய்யும்போது, ​​கட்டளையின் 15-17 பிட்களின் உள்ளடக்கத்தைப் பொறுத்து, AOC இன் உள்ளடக்கங்கள் ஒன்று அல்லது பல BRகளுக்கு ஒரே நேரத்தில் அனுப்பப்படும். இந்த வழக்கில் திரும்பும் முகவரி P1 மற்றும் RSM க்கு அனுப்பப்படவில்லை.



ஒரு TCU செயல்பாடாக NC செயல்பாட்டைச் செயல்படுத்துவது குறுக்கீடுகளில் குறுக்கிடும் நிரல்களுக்குச் செல்ல பயன்படுத்தப்படலாம். இதைச் செய்ய, கட்டளையின் 5 வது பிட்டில், திட்டமிடப்பட்ட மாற்றத்தின் (PNT) பண்புக்கூறு அமைக்கப்பட்டுள்ளது. இந்த வழக்கில், கட்டளை ஒரு குறுக்கீடு சமிக்ஞை (ISR) வழியாக ROM இலிருந்து செயலியில் படிக்கப்படுகிறது. இந்த வழக்கில், ROM அணுகல் முகவரி (குறுக்கீடு முகவரி) செயலி குறுக்கீடு சுற்று மூலம் உருவாக்கப்படுகிறது.

இந்த வழக்கில் செயல்பாட்டின் ஒரு தனித்தன்மை என்னவென்றால், குறுக்கீடுகளுக்கான திரும்பும் முகவரியானது FUP வடிவத்தில் கட்டளையைப் பின்பற்றும் கட்டளையின் முகவரி அல்ல, ஆனால் குறுக்கீடு ஏற்பட்ட கட்டளையின் முகவரி. NPP சமிக்ஞை பின்வருமாறு செயலாக்கப்படுகிறது. இந்த சமிக்ஞையின் அடிப்படையில், செயலியின் குறுக்கீடு சுற்று FUP(i) வடிவமைப்பில் உள்ள ஜம்ப் அறிவுறுத்தலின் முதல் கலத்தின் முகவரிக்கு சமமான குறுக்கீடு முகவரியை (APr) உருவாக்குகிறது. இந்த முகவரி சுவிட்ச் மற்றும் ROM முகவரி பதிவு மூலம் நினைவகத்திற்கு மாற்றப்படுகிறது. கட்டளையின் (i) முதல் கலத்தின் முகவரி சமமாகவும், இரண்டாவது கலத்தின் (i+1) முகவரி ஒற்றைப்படையாகவும் இருக்கும் வகையில் குறுக்கீடு முகவரிகள் தேர்ந்தெடுக்கப்படுகின்றன. இரண்டாவது முகவரியானது (வன்பொருளில்) CC இன் பங்கேற்பு இல்லாமல் பூஜ்ஜியத்தில் இருந்து ஒன்றுக்கு குறைவான குறிப்பிடத்தக்க இலக்கத்தை மாற்றுவதன் மூலம் பெறப்படுகிறது. ROM இலிருந்து ஒரு கட்டளையைப் படித்து அதைச் செயல்படுத்தும் செயல்பாட்டில், SchK (K+1) இன் உள்ளடக்கங்கள் AC இன் பதிவு P1 இல் சேமிக்கப்படும், மற்றும் கட்டளையின் இரண்டாவது கலத்தின் உள்ளடக்கங்கள் (i+1), முகவரி j உடன் கட்டளைக்கு மாற்றத்தின் முகவரி இது SchK இல் உள்ளிடப்பட்டுள்ளது. CC இன் புதிய உள்ளடக்கங்கள் குறித்து ROM க்கு கோரிக்கை விடுக்கப்பட்டுள்ளது. இவ்வாறு, குறுக்கீடு நேரத்தில் அடுத்த அறிவுறுத்தலின் முகவரி (K+1) பதிவு P1 இல் சேமிக்கப்படும். குறுக்கீடு செயலாக்கப்பட்ட பிறகு, குறுக்கீடு செய்யப்பட்ட நிரலுக்குத் திரும்புவதற்கு இந்த முகவரி பயன்படுத்தப்படுகிறது.

33 செயலி மற்றும் கணினி கட்டுப்பாட்டு செயல்பாடுகளைச் செய்யும்போது SV செயலியின் தொகுதி வரைபடத்தின் முனைகள் மற்றும் கூறுகளின் தொடர்பு.