அத்தியாயம் 4: 6502 நுண்செயலி சட்டசபை மொழி பயிற்சி

Attiyayam 4 6502 Nunceyali Cattacapai Moli Payirci



அத்தியாயம் 4: 6502 நுண்செயலி சட்டசபை மொழி பயிற்சி

4.1 அறிமுகம்

6502 நுண்செயலி 1975 இல் வெளியிடப்பட்டது. இது ஆப்பிள் II, கொமடோர் 64 மற்றும் பிபிசி மைக்ரோ போன்ற சில தனிப்பட்ட கணினிகளுக்கு நுண்செயலியாகப் பயன்படுத்தப்பட்டது.







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



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



கடந்த காலத்தில் ஒரு பிரபலமான கணினி commodore_64 என்று அழைக்கப்பட்டது. 6502 என்பது 6500 குடும்பத்தைச் சேர்ந்த ஒரு நுண்செயலி ஆகும். Commodore_64 கணினி 6510 நுண்செயலியைப் பயன்படுத்துகிறது. 6510 நுண்செயலி 6500 μP ஆகும். 6502 µP இன் அறிவுறுத்தல் தொகுப்பு 6510 µP இன் அனைத்து அறிவுறுத்தல்களும் ஆகும். இந்த அத்தியாயம் மற்றும் அடுத்த அத்தியாயத்தின் அறிவு commodore_64 கணினியை அடிப்படையாகக் கொண்டது. ஆன்லைன் தொழில் படிப்பின் இந்த பகுதியில் நவீன கணினி கட்டமைப்புகள் மற்றும் நவீன இயக்க முறைமைகளை விளக்க இந்த அறிவு அடிப்படையாக பயன்படுத்தப்படுகிறது.





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

Commodore_64 கணினி 8-பிட் கணினி வார்த்தையின் கணினி என்று கூறப்படுகிறது. இதன் பொருள் எட்டு பிட் பைனரி குறியீடுகளின் வடிவத்தில் தகவல் சேமிக்கப்படுகிறது, மாற்றப்படுகிறது மற்றும் கையாளப்படுகிறது.



கொமடோர் 64 மதர்போர்டின் தொகுதி வரைபடம்
கொமடோர் 64 மதர்போர்டின் தொகுதி வரைபடம்:


படம் 4.1 Commodore_64 சிஸ்டம் யூனிட்டின் தொகுதி வரைபடம்

6510 நுண்செயலியை 6502 நுண்செயலியாக கற்பனை செய்து பாருங்கள். மொத்த நினைவகம் பைட்டுகளின் தொடர் (ஒரு பைட்டுக்கு 8-பிட்கள்). பைட்டுகளை எழுத அல்லது அழிக்கக்கூடிய சீரற்ற அணுகல் (படிக்க/எழுத) நினைவகம் உள்ளது. கணினியின் சக்தி அணைக்கப்படும் போது, ​​சீரற்ற அணுகல் நினைவகத்தில் (RAM) உள்ள அனைத்து தகவல்களும் அழிக்கப்படும். படிக்க மட்டும் நினைவகம் (ROM) உள்ளது. கணினியின் சக்தி அணைக்கப்படும் போது, ​​ROM இல் உள்ள தகவல்கள் அப்படியே இருக்கும் (அழிக்கப்படவில்லை).

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

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

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

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

கணினி நினைவகம்
ரேம் மற்றும் ரோம் ஒரு நினைவக அசெம்பிளியாக கருதப்படுகிறது. ஹெக்ஸாடெசிமல் எண்கள் '$' முன்னொட்டைக் கொண்டிருக்கும் இடத்தில் இந்த அசெம்பிளி பின்வருமாறு வரைபடமாக குறிப்பிடப்படுகிறது:


படம் 4.11 கொமடோர் 64 கணினிக்கான நினைவக தளவமைப்பு

ரேம் 0000 இலிருந்து 16 DFFFக்கு 16 இது $0000 முதல் $DFFF வரை எழுதப்பட்டுள்ளது. 6502 µP அசெம்பிளி மொழியுடன், ஒரு ஹெக்ஸாடெசிமல் எண் '$' உடன் முன்னொட்டப்பட்டது மற்றும் 16 அல்லது H அல்லது ஹெக்ஸுடன் பின்னொட்டு (சந்தா) இல்லை. கணினி அணைக்கப்படும் போது RAM இல் உள்ள எந்த தகவலும் அணைக்கப்படும். ரோம் $E000 முதல் $FFFF வரை தொடங்குகிறது. இதில் சப்ரூட்டீன்கள் உள்ளன, அவை கணினியை அணைக்கும்போது அணைக்கப்படாது. இந்த சப்ரூட்டின்கள் பொதுவாகப் பயன்படுத்தப்படும் நடைமுறைகளாகும், அவை நிரலாக்கத்தில் உதவுகின்றன. பயனர் நிரல் அவர்களை அழைக்கிறது (அடுத்த அத்தியாயத்தைப் பார்க்கவும்).

$0200 முதல் $D000 வரையிலான இடம் (பைட்டுகள்) பயனர் நிரல்களுக்கானது. $D000 முதல் $DFFF வரையிலான இடம், சாதனங்களுடன் (உள்ளீடு/வெளியீட்டு சாதனங்கள்) நேரடியாகத் தொடர்புடைய தகவலுக்கானது. இது இயக்க முறைமையின் ஒரு பகுதியாகும். எனவே, commodore-64 கணினியின் இயக்க முறைமை இரண்டு முக்கிய பகுதிகளாக உள்ளது: ROM இல் உள்ள பகுதி ஒருபோதும் அணைக்கப்படாது மற்றும் $D000 முதல் $DFFF வரையிலான பகுதி மின்சாரம் துண்டிக்கப்படும் போது அணைக்கப்படும். ஒவ்வொரு முறை கணினியை இயக்கும்போதும் இந்த IO (உள்ளீடு/வெளியீடு) தரவு ஒரு வட்டில் இருந்து ஏற்றப்பட வேண்டும். இன்று, அத்தகைய தரவு புற இயக்கிகள் என்று அழைக்கப்படுகிறது. சாதனங்கள் உள்ளீடு/வெளியீட்டு சாதன போர்ட்டிலிருந்து மதர்போர்டில் உள்ள இணைப்புகள் மூலம் கணினியின் செங்குத்து பரப்புகளில் உள்ள அடையாளம் காணக்கூடிய போர்ட்களுக்குத் தொடங்குகின்றன. .).

நினைவகம் 2 ஐக் கொண்டுள்ளது 16 = 65,536 பைட் இடங்கள். ஹெக்ஸாடெசிமல் வடிவத்தில், இவை 10000 ஆகும் 16 = 10000 எச் = 10000 ஹெக்ஸ் = $10000 இடங்கள். கம்ப்யூட்டிங்கில், அடிப்படை இரண்டு, அடிப்படை பத்து, அடிப்படை பதினாறு போன்றவற்றில் எண்ணுவது 0 இலிருந்து தொடங்குகிறது மற்றும் 1 இலிருந்து அல்ல. எனவே, முதல் இடம் உண்மையில் இருப்பிட எண் 000000000000000 ஆகும். 2 = 0 10 = 0000 16 = $0000. 6502 µP அசெம்பிளி மொழியில், முகவரி இருப்பிடத்தின் அடையாளம் $ உடன் முன்னொட்டாக உள்ளது மற்றும் பின்னொட்டு அல்லது சப்ஸ்கிரிப்ட் இல்லை. கடைசி இடம் 1111111111111111 என்ற இருப்பிட எண் ஆகும் 2 = 65,535 10 = FFFF 16 = $FFFF மற்றும் 10000000000000000 அல்ல 2 , அல்லது 65,536 10 , அல்லது 10000 16 , அல்லது $10000. 1000000000000000 2 , 65,536 10 , 10000 16 , அல்லது $10000 பைட் இருப்பிடங்களின் மொத்த எண்ணிக்கையை வழங்குகிறது.

இங்கே, 2 16 = 65,536 = 64 x 1024 = 64 x 2 10 = 64 Kbytes (கிலோபைட்டுகள்). Commodore-64 என்ற பெயரில் உள்ள 64 இன் பின்னொட்டு மொத்த நினைவகத்தின் 64KB (RAM மற்றும் ROM) என்று பொருள். ஒரு பைட் என்பது 8 பிட்கள், மேலும் 8 பிட்கள் நினைவகத்தில் ஒரு பைட் இடத்திற்குச் செல்லும்.

64 Kbytes நினைவகம் பக்கங்களாக பிரிக்கப்பட்டுள்ளது. ஒவ்வொரு பக்கமும் 0100 உள்ளது 16 = 256 10 பைட் இடங்கள். முதல் 256 10 = முதல் 0100 16 இருப்பிடங்கள் பக்கம் 0. இரண்டாவது பக்கம் 1, மூன்றாவது பக்கம் 2, மற்றும் பல.

65,536 இடங்களை நிவர்த்தி செய்ய, ஒவ்வொரு இடத்திற்கும் (முகவரி) 16 பிட்கள் அவசியம். எனவே, நுண்செயலியிலிருந்து நினைவகத்திற்கான முகவரி பஸ் 16 வரிகளைக் கொண்டுள்ளது; ஒரு பிட்டுக்கு ஒரு வரி. ஒரு பிட் 1 அல்லது 0 ஆகும்.

6502 µP பதிவுகள்
ஒரு பதிவு என்பது பைட் நினைவக இருப்பிடத்திற்கான பைட் செல்கள் போன்றது. 6502 µP ஆனது ஆறு பதிவேடுகளைக் கொண்டுள்ளது: ஐந்து 8-பிட் பதிவேடுகள் மற்றும் ஒரு 16-பிட் பதிவேடுகள். 16-பிட் பதிவு நிரல் கவுண்டர் என்று அழைக்கப்படுகிறது, இது பிசி என சுருக்கமாக அழைக்கப்படுகிறது. இது அடுத்த அறிவுறுத்தலுக்கான நினைவக முகவரியைக் கொண்டுள்ளது. ஒரு சட்டசபை மொழி நிரல் நினைவகத்தில் வைக்கப்படும் வழிமுறைகளைக் கொண்டுள்ளது. நினைவகத்தில் ஒரு குறிப்பிட்ட பைட் இருப்பிடத்தைக் குறிப்பிட பதினாறு (16) வெவ்வேறு பிட்கள் தேவை. ஒரு குறிப்பிட்ட கடிகாரத் துடிப்பில், இந்த பிட்கள் ஒரு அறிவுறுத்தலைப் படிக்க முகவரி பஸ்ஸின் 16-பிட் முகவரி வரிகளுக்கு அனுப்பப்படும். 6502 µPக்கான அனைத்து பதிவுகளும் பின்வருமாறு சித்தரிக்கப்பட்டுள்ளன:


படம் 4.12 6502 µP பதிவுகள்

நிரல் கவுண்டர் அல்லது பிசியை வரைபடத்தில் 16-பிட் பதிவாகக் காணலாம். குறைந்த குறிப்பிடத்தக்க எட்டு பிட்கள் நிரல் கவுண்டர் லோவிற்கு PCL என பெயரிடப்பட்டுள்ளது. அதிக முக்கியத்துவம் வாய்ந்த எட்டு பிட்கள், புரோகிராம் கவுண்டர் ஹைக்கு PCH என பெயரிடப்பட்டுள்ளது. கொமடோர்-64க்கான நினைவகத்தில் ஒரு அறிவுறுத்தல் ஒன்று, இரண்டு அல்லது மூன்று பைட்டுகளைக் கொண்டிருக்கலாம். கணினியில் உள்ள 16 பிட்கள் நினைவகத்தில் செயல்படுத்தப்பட வேண்டிய அடுத்த வழிமுறையை சுட்டிக்காட்டுகின்றன. நுண்செயலியில் உள்ள சுற்றுகளில், அவற்றில் இரண்டு எண்கணித லாஜிக் யூனிட் மற்றும் இன்ஸ்ட்ரக்ஷன் டிகோடர் என்று அழைக்கப்படுகின்றன. µP (நுண்செயலி) இல் செயலாக்கப்படும் தற்போதைய அறிவுறுத்தல் ஒரு பைட் நீளமாக இருந்தால், இந்த இரண்டு சுற்றுகளும் பிசியை அடுத்த அறிவுறுத்தலுக்கான 1 யூனிட்டால் அதிகரிக்கின்றன. µP இல் செயலாக்கப்படும் தற்போதைய அறிவுறுத்தல் இரண்டு பைட்டுகள் நீளமாக இருந்தால், அது இரண்டு தொடர்ச்சியான பைட்டுகளை நினைவகத்தில் ஆக்கிரமித்திருந்தால், இந்த இரண்டு சுற்றுகளும் பிசியை அடுத்த அறிவுறுத்தலுக்கான 2 அலகுகளால் அதிகரிக்கின்றன. µP இல் செயலாக்கப்படும் தற்போதைய அறிவுறுத்தல் மூன்று பைட்டுகள் நீளமாக இருந்தால், அதாவது அது மூன்று தொடர்ச்சியான பைட்டுகளை நினைவகத்தில் ஆக்கிரமித்திருந்தால், இந்த இரண்டு சுற்றுகளும் பிசியை அடுத்த அறிவுறுத்தலுக்கான 3 அலகுகளால் அதிகரிக்கின்றன.

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

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

ஸ்டாக் பாயிண்டர் பதிவேட்டில் இருந்தாலும், 'S' 9 பிட்களைக் கொண்டுள்ளது, இது எட்டு பிட் பதிவாகக் கருதப்படுகிறது. அதன் உள்ளடக்கம் ரேண்டம் அக்சஸ் மெமரியின் (ரேம்) பக்கம் 1 இல் உள்ள பைட் இருப்பிடத்தை சுட்டிக்காட்டுகிறது. பக்கம் 1 பைட் $0100 இலிருந்து தொடங்குகிறது (256 10 ) பைட் $01FF (511 10 ) ஒரு நிரல் இயங்கும் போது, ​​அது நினைவகத்தில் ஒரு அறிவுறுத்தலில் இருந்து அடுத்த தொடர்ச்சியான அறிவுறுத்தலுக்கு நகரும். இருப்பினும், இது எப்போதும் வழக்கு அல்ல. ஒரு நினைவகப் பகுதியிலிருந்து மற்றொரு நினைவகப் பகுதிக்குத் தாவி, அங்குள்ள வழிமுறைகளைத் தொடர்ந்து இயக்கும் நேரங்கள் உள்ளன. RAM இல் பக்கம் 1 அடுக்காகப் பயன்படுத்தப்படுகிறது. ஸ்டேக் என்பது ஒரு பெரிய ரேம் மெமரி ஏரியா ஆகும், இது ஒரு ஜம்ப் இருக்கும் இடத்தில் இருந்து குறியீட்டின் தொடர்ச்சிக்கான அடுத்த முகவரிகளைக் கொண்டுள்ளது. ஜம்பிங் வழிமுறைகளைக் கொண்ட குறியீடுகள் அடுக்கில் இல்லை; அவை நினைவகத்தில் வேறு இடத்தில் உள்ளன. இருப்பினும், ஜம்ப்-டு வழிமுறைகள் செயல்படுத்தப்பட்ட பிறகு, தொடர் முகவரிகள் (குறியீடு பிரிவுகள் அல்ல) அடுக்கில் இருக்கும். ஜம்ப் அல்லது கிளை அறிவுறுத்தல்களின் விளைவாக அவர்கள் அங்கு தள்ளப்பட்டனர்.

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

ஒவ்வொரு பதிவிற்கான முதல் மற்றும் கடைசி பிட் குறியீடானது முந்தைய வரைபடத்தில் ஒவ்வொரு பதிவிற்கும் மேலே குறிப்பிடப்பட்டுள்ளது. ஒரு பதிவேட்டில் பிட் இண்டெக்ஸ் (நிலை) எண்ணிக்கை வலதுபுறத்தில் 0 இலிருந்து தொடங்குகிறது.

பைனரி, ஹெக்ஸாடெசிமல் மற்றும் தசமத்தில் நினைவகப் பக்கங்கள்
பின்வரும் அட்டவணை பைனரி, ஹெக்ஸாடெசிமல் மற்றும் தசமத்தில் நினைவகப் பக்கங்களின் தொடக்கத்தைக் காட்டுகிறது:

ஒவ்வொரு பக்கமும் 1,0000,0000 உள்ளது 2 100க்கு சமமான பைட்டுகளின் எண்ணிக்கை எச் பைட்டுகளின் எண்ணிக்கை 256க்கு சமம் 10 பைட்டுகளின் எண்ணிக்கை. முந்தைய நினைவக வரைபடத்தில், பக்கங்கள் பக்கம் 0 இலிருந்து மேலே செல்லும் மற்றும் அட்டவணையில் சுட்டிக்காட்டப்பட்டபடி கீழே செல்லாமல் குறிக்கப்படுகின்றன.

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

இந்த அத்தியாயத்தின் எஞ்சிய பகுதி 6502 µP சட்டசபை மொழியை முந்தைய அனைத்து தகவல்களையும் பயன்படுத்தி விளக்குகிறது. மொழியை விரைவாகப் புரிந்துகொள்வதற்கு, வாசகன் பத்தாம் அடிப்படைக்குப் பதிலாக பதினாறில் சேர்க்க வேண்டும். இது உண்மையில் அடிப்படை இரண்டாக இருக்க வேண்டும், ஆனால் அடிப்படை இரண்டில் கணக்கிடுவது சிக்கலானது. அடிப்படை இரண்டில் இரண்டு எண்களைச் சேர்க்கும்போது, ​​அடிப்படை பத்தில் உள்ளதைப் போலவே ஒரு கேரி 1 ஆக இருக்கும் என்பதை நினைவில் கொள்ளுங்கள். ஆனால் அடிப்படை இரண்டில் இரண்டு எண்களைக் கழிக்கும்போது, ​​ஒரு கடன் பெறுவது இரண்டு மற்றும் பத்து அல்ல. பதினாறில் இரண்டு எண்களைச் சேர்க்கும் போது, ​​அடிப்படை பத்தில் உள்ளதைப் போலவே ஒரு கேரி 1 ஆக இருக்கும். ஆனால் அடிப் பதினாறில் இரண்டு எண்களைக் கழித்தால், கடன் பெறுவது பதினாறுதான், பத்தாம் அடியில் இருப்பது போல் பத்து அல்ல.

4.2 தரவு பரிமாற்ற வழிமுறைகள்

6502 µP க்கான சட்டசபை மொழி தரவு பரிமாற்ற வழிமுறைகளின் பின்வரும் அட்டவணையைக் கவனியுங்கள்:

ஒரு பைட் (8-பிட்கள்) நினைவக பைட் இடத்திலிருந்து திரட்டி பதிவு, X பதிவு அல்லது Y பதிவுக்கு நகலெடுக்கப்படும் போது, ​​அது ஏற்றப்படுகிறது. இந்த பதிவேடுகளில் ஏதேனும் ஒரு பைட் ஒரு நினைவக பைட் இடத்திற்கு நகலெடுக்கப்பட்டால், அது மாற்றப்படுகிறது. ஒரு பைட் ஒரு பதிவேட்டில் இருந்து மற்றொன்றுக்கு நகலெடுக்கப்பட்டால், அது இன்னும் மாற்றப்படுகிறது. அட்டவணையின் இரண்டாவது நெடுவரிசையில், அம்புக்குறி ஒரு பைட்டுக்கான நகலின் திசையைக் காட்டுகிறது. மீதமுள்ள நான்கு நெடுவரிசைகளும் வெவ்வேறு முகவரி முறைகளைக் காட்டுகின்றன.

முகவரி முறை நெடுவரிசையில் உள்ளீடு என்பது ஹெக்ஸாடெசிமலில் உள்ள அறிவுறுத்தலின் தொடர்புடைய நினைவூட்டல் பகுதிக்கான உண்மையான பைட் குறியீடாகும். எடுத்துக்காட்டாக, AE என்பது LDXக்கான உண்மையான பைட் குறியீடாகும், இது AE போன்ற முழுமையான முகவரி முறையில் நினைவகத்திலிருந்து X பதிவேட்டில் ஒரு பைட்டை ஏற்றுவதாகும். 16 = 10101110 2 . எனவே, ஒரு நினைவக பைட் இடத்தில் LDX க்கான பிட்கள் 10101110 ஆகும்.

அறிவுறுத்தலின் LDX நினைவூட்டல் பகுதிக்கு, A2, AE மற்றும் A6 ஆகிய மூன்று சாத்தியமான பைட்டுகள் உள்ளன, மேலும் ஒவ்வொன்றும் ஒரு குறிப்பிட்ட முகவரி முறைக்கு. X பதிவேட்டில் ஏற்றப்படும் பைட் நினைவக பைட் இடத்திலிருந்து நகலெடுக்கப்படக்கூடாது எனில், ஹெக்ஸாடெசிமல் அல்லது தசமத்தில் உள்ள அறிவுறுத்தலில் உள்ள LDX நினைவாற்றலுடன் மதிப்பை தட்டச்சு செய்ய வேண்டும். இந்த அத்தியாயத்தில், அத்தகைய மதிப்புகள் ஹெக்ஸாடெசிமலில் தட்டச்சு செய்யப்பட்டுள்ளன. இது உடனடி முகவரியாகும், எனவே LDX ஐக் குறிக்க நினைவகத்தில் உள்ள உண்மையான பைட் A2 ஆகும் 16 = 10100010 2 மற்றும் AE அல்ல 16 இது 10101110 க்கு சமம் 2 .

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

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

6502 µPக்கு அட்டவணையில் உள்ள நான்கை விட அதிகமான முகவரி முறைகள் உள்ளன.

வேறுவிதமாகக் கூறப்படாவிட்டால், இந்த அத்தியாயத்தில் உள்ள அனைத்து பயனர் நிரலாக்கக் குறியீடுகளும் முகவரி 0200 இலிருந்து தொடங்குகிறது 16 இது நினைவகத்தில் பயனர் பகுதியின் தொடக்கமாகும்.

நினைவகம் எம் மற்றும் குவிப்பான் ஏ

நினைவகம் குவிப்பான்

உடனடி முகவரி
பின்வரும் அறிவுறுத்தல் FF எண்ணை சேமிக்கிறது 16 = 255 10 திரட்டிக்குள்:

LDA #$FF

'$' என்பது நினைவக முகவரியைக் கண்டறிய மட்டும் பயன்படுத்தப்படுவதில்லை. பொதுவாக, அடுத்து வரும் எண் ஹெக்ஸாடெசிமல் என்பதைக் குறிக்கப் பயன்படுகிறது. இந்த வழக்கில், $FF என்பது எந்த நினைவக பைட் இருப்பிடத்தின் முகவரியும் அல்ல. இது 255 என்ற எண் 10 ஹெக்ஸாடெசிமலில். அடிப்படை 16 அல்லது அதற்கு இணையான வேறு ஏதேனும் சந்தாக்கள் சட்டசபை மொழி அறிவுறுத்தலில் எழுதப்படக்கூடாது. '#' என்பது, அடுத்து வரும் அனைத்தும் குவிப்பான் பதிவேட்டில் வைக்கப்பட வேண்டிய மதிப்பு என்பதைக் குறிக்கிறது. மதிப்பை அடிப்படை பத்தில் எழுதலாம், ஆனால் அது இந்த அத்தியாயத்தில் செய்யப்படவில்லை. '#' என்றால் உடனடி முகவரி என்று பொருள்.

ஒரு நினைவூட்டல் அதன் தொடர்புடைய ஆங்கில சொற்றொடருடன் சில ஒற்றுமைகளைக் கொண்டுள்ளது. “LDA #$FF” என்பது 255 எண்ணை ஏற்றுவதாகும் 10 திரட்டி A. இது முந்தைய அட்டவணையில் இருந்து உடனடி முகவரி என்பதால், LDA என்பது A9 மற்றும் AD அல்லது A5 அல்ல. பைனரியில் A9 என்பது 101010001. எனவே, LDAக்கான A9 என்பது நினைவகத்தில் $0200 முகவரியில் இருந்தால், $FF என்பது $0301 = 0300 + 1 முகவரியில் இருக்கும். #$FF என்பது LDA நினைவூட்டலின் செயல்பாடாகும்.

முழுமையான முகவரி
$FF இன் மதிப்பு நினைவகத்தில் $0333 இடத்தில் இருந்தால், முந்தைய வழிமுறை:

LDA $0333

# இல்லாததைக் கவனியுங்கள். இந்த நிலையில், # இல்லாமை என்றால், பின்வருபவை ஒரு நினைவக முகவரி மற்றும் ஆர்வத்தின் மதிப்பு அல்ல (அக்முலேட்டரில் வைக்க வேண்டிய மதிப்பு அல்ல). எனவே, LDAக்கான ஆப்கோட், இந்த முறை, AD ஆகும், A9 அல்லது A5 அல்ல. இங்கே LDAக்கான செயல்பாடு $0333 முகவரி மற்றும் $FF மதிப்பு அல்ல. $FF தொலைவில் உள்ள $0333 இடத்தில் உள்ளது. 'LDA $0333' அறிவுறுத்தல் நினைவகத்தில் மூன்று தொடர்ச்சியான இடங்களை ஆக்கிரமித்துள்ளது, முந்தைய விளக்கப்படத்தைப் போல இரண்டல்ல. LDAக்கான 'AD' $0200 இடத்தில் உள்ளது. 0333 இன் கீழ் பைட் 33 $0301 இடத்தில் உள்ளது. அதிக பைட் $0333, அதாவது 03 $0302 இடத்தில் உள்ளது. இது 6502 அசெம்பிளி மொழியால் பயன்படுத்தப்படும் சிறிய முடிவாகும். வெவ்வேறு நுண்செயலிகளின் சட்டசபை மொழிகள் வேறுபட்டவை.

முழுமையான முகவரிக்கு இது ஒரு எடுத்துக்காட்டு. $0333 என்பது $FF உள்ள இடத்தின் முகவரி. அறிவுறுத்தல் மூன்று தொடர்ச்சியான பைட்டுகளைக் கொண்டுள்ளது மற்றும் $FF அல்லது அதன் உண்மையான பைட் இருப்பிடத்தை உள்ளடக்காது.

பூஜ்ஜிய பக்க முகவரி

$FF மதிப்பு பக்கம் பூஜ்ஜியத்தில் $0050 நினைவக இடத்தில் உள்ளது என்று வைத்துக்கொள்வோம். பூஜ்ஜிய பக்கத்திற்கான பைட் இருப்பிடங்கள் $0000 இலிருந்து தொடங்கி $00FF இல் முடிவடையும். இவை 256 10 மொத்த இடங்கள். கொமடோர்-64 நினைவகத்தின் ஒவ்வொரு பக்கமும் 256 ஆகும் 10 நீளமானது. நினைவகத்தில் பூஜ்ஜிய பக்க இடைவெளியில் சாத்தியமான எல்லா இடங்களுக்கும் அதிக பைட் பூஜ்ஜியமாக இருப்பதைக் கவனியுங்கள். பூஜ்ஜிய-பக்க முகவரியிடல் பயன்முறையானது முழுமையான முகவரிப் பயன்முறையைப் போன்றது, ஆனால் அதிக பைட் 00 ஆனது அறிவுறுத்தலில் தட்டச்சு செய்யப்படவில்லை. எனவே, $0050 இடத்திலிருந்து $FF ஐ அக்யூமுலேட்டரில் ஏற்ற, பூஜ்ஜிய-பக்க முகவரி முறை வழிமுறை:

LDA $50

LDA ஆனது A5 மற்றும் A9 அல்லது AD, A5 அல்ல 16 = 10100101 2 . நினைவகத்தில் உள்ள ஒவ்வொரு பைட்டிலும் 8 செல்கள் உள்ளன, மேலும் ஒவ்வொரு கலமும் கொஞ்சம் இருக்கும். இங்குள்ள அறிவுறுத்தல் இரண்டு தொடர்ச்சியான பைட்டுகளைக் கொண்டுள்ளது. LDAக்கான A5 ஆனது $0200 நினைவக இடத்தில் உள்ளது மற்றும் $50 முகவரி, 00 இன் உயர் பைட் இல்லாமல் $0301 இடத்தில் உள்ளது. 00 இல்லாமை, மொத்த 64K நினைவகத்தில் ஒரு பைட்டை உட்கொண்டிருக்கும், நினைவக இடத்தை சிக்கனமாக்குகிறது.

நினைவாற்றலுக்கான குவிப்பான்

முழுமையான முகவரி
பின்வரும் அறிவுறுத்தல் பைட் மதிப்பை நகலெடுக்கிறது, அது எதுவாக இருந்தாலும், குவிப்பானிலிருந்து $1444 இன் நினைவக இருப்பிடம் வரை:

அவை $1444

இது திரட்டியில் இருந்து நினைவகத்திற்கு மாற்றப்படுவதாக கூறப்படுகிறது. இது ஏற்றப்படவில்லை. ஏற்றுதல் இதற்கு நேர்மாறானது. STAக்கான ஆப்கோட் பைட் 8D ஆகும் 16 = 10001101 2 . இந்த அறிவுறுத்தல் நினைவகத்தில் மூன்று தொடர்ச்சியான பைட்டுகளைக் கொண்டுள்ளது. 8D 16 $0200 இடத்தில் உள்ளது. 44 16 $1444 முகவரி $0201 இடத்தில் உள்ளது. மற்றும் 14 16 $0202 இடத்தில் உள்ளது - சிறிய எண்ணம். நகலெடுக்கப்பட்ட உண்மையான பைட் அறிவுறுத்தலின் பகுதியாக இல்லை. 8D மற்றும் பூஜ்ஜியப் பக்க முகவரிக்கு 85 அல்ல (அட்டவணையில்) STA க்கு இங்கு பயன்படுத்தப்படுகிறது.

பூஜ்ஜிய பக்க முகவரி
பின்வரும் அறிவுறுத்தல் பைட் மதிப்பை நகலெடுக்கிறது, அது எதுவாக இருந்தாலும், குவிப்பானிலிருந்து பக்கம் பூஜ்ஜியத்தில் $0050 நினைவக இருப்பிடம் வரை:

STA $0050

இங்கே STAக்கான ஆப்கோட் பைட் 85 ஆகும் 16 = 10000101 2 . இந்த அறிவுறுத்தல் நினைவகத்தில் இரண்டு தொடர்ச்சியான பைட்டுகளைக் கொண்டுள்ளது. 85 16 $0200 இடத்தில் உள்ளது. 50 16 $0050 முகவரி $0201 இல் உள்ளது. முகவரியில் ஒரே ஒரு பைட் மட்டுமே உள்ளது, அதாவது குறைந்த பைட் மட்டுமே இருப்பதால், எண்டியன்னெஸ் என்ற பிரச்சினை இங்கு எழவில்லை. நகலெடுக்கப்பட்ட உண்மையான பைட் அறிவுறுத்தலின் பகுதியாக இல்லை. 85 மற்றும் பூஜ்ஜிய பக்க முகவரிக்கான 8D அல்ல STA க்கு இங்கு பயன்படுத்தப்படுகிறது.

குவிப்பானிலிருந்து ஒரு பைட்டை நினைவகத்தில் உள்ள இடத்திற்கு மாற்ற உடனடி முகவரியைப் பயன்படுத்துவதில் அர்த்தமில்லை. ஏனெனில் $FF போன்ற உண்மையான மதிப்பை உடனடி முகவரியில் உள்ள அறிவுறுத்தலில் மேற்கோள் காட்ட வேண்டும். எனவே, µP இல் உள்ள பதிவேட்டில் இருந்து எந்த நினைவக இடத்திற்கும் பைட் மதிப்பை மாற்றுவதற்கு உடனடியாக முகவரியிடுவது சாத்தியமில்லை.

LDX, STX, LDY, மற்றும் STY நினைவாற்றல்
LDX மற்றும் STX முறையே LDA மற்றும் STA போன்றவை. ஆனால் இங்கே, X பதிவேடு பயன்படுத்தப்படுகிறது மற்றும் A (குவிப்பு) பதிவேடு அல்ல. LDY மற்றும் STY முறையே LDA மற்றும் STA போன்றவை. ஆனால் இங்கே, Y பதிவேடு பயன்படுத்தப்படுகிறது மற்றும் A பதிவேடு அல்ல. ஒரு குறிப்பிட்ட நினைவாற்றல் மற்றும் குறிப்பிட்ட முகவரி முறைக்கு ஒத்திருக்கும் ஹெக்ஸாடெசிமலில் உள்ள ஒவ்வொரு ஆப்கோடுக்கும் அட்டவணை 4.21 ஐப் பார்க்கவும்.

பதிவு முதல் பதிவு இடமாற்றங்கள்
அட்டவணை 4.21 இல் உள்ள முந்தைய இரண்டு செட் வழிமுறைகள் நினைவகம்/நுண்செயலி-பதிவு நகலெடுப்பு (பரிமாற்றம்) மற்றும் பதிவு/பதிவு நகலெடுப்பு (பரிமாற்றம்) ஆகியவற்றைக் கையாளுகின்றன. TAX, TXA, TAY, TYA, TSX மற்றும் TXS வழிமுறைகள் நுண்செயலியில் உள்ள பதிவேட்டில் இருந்து அதே நுண்செயலியின் மற்றொரு பதிவேட்டிற்கு நகலெடுப்பதை (பரிமாற்றம்) செய்கிறது.

A இலிருந்து X க்கு பைட்டை நகலெடுக்க, வழிமுறை:

வரி

பைட்டை X இலிருந்து A க்கு நகலெடுக்க, வழிமுறை:

TX

A இலிருந்து Yக்கு பைட்டை நகலெடுக்க, வழிமுறை:

கை

Y இலிருந்து A க்கு பைட்டை நகலெடுக்க, வழிமுறை:

TYA

கொமடோர் 64 கணினிக்கு, நினைவகத்தில் பக்கம் 0க்குப் பிறகு பக்கம் 1 ஸ்டாக் ஆகும். மற்ற எல்லா பக்கங்களையும் போலவே, இது 25610 ஐக் கொண்டுள்ளது 10 பைட் இருப்பிடங்கள், $0100 முதல் $01FF வரை. பொதுவாக, ஒரு நிரல் நினைவகத்தில் ஒரு அறிவுறுத்தலில் இருந்து அடுத்த தொடர்ச்சியான அறிவுறுத்தலுக்கு இயங்கும். அவ்வப்போது, ​​மற்றொரு நினைவக குறியீடு (அறிவுரைகளின் தொகுப்பு) பிரிவுக்கு ஒரு தாவல் உள்ளது. ஸ்டேக் ஏரியா in memory (RAM) நிரல் தொடர்ச்சிக்கு தாவல்கள் (அல்லது கிளைகள்) விட்டுச் சென்ற இடத்திலிருந்து அடுத்த அறிவுறுத்தல் முகவரிகள் உள்ளன.

ஸ்டாக் பாயிண்டர் 'S' என்பது 6502 µP இல் உள்ள 9-பிட் பதிவு ஆகும். முதல் பிட் (இடதுபுறம்) எப்போதும் 1. பக்கம் ஒன்றில் உள்ள அனைத்து பைட் இருப்பிட முகவரிகளும் 1 உடன் தொடங்குகின்றன, அதைத் தொடர்ந்து 256 க்கு 8 வெவ்வேறு பிட்கள் 10 இடங்கள். ஸ்டாக் பாயிண்டரில் இருப்பிடத்தின் முகவரி பக்கம் 1 இல் உள்ளது, அதில் நிரல் திரும்பவும் தற்போதைய (குதித்த) குறியீட்டுப் பிரிவைச் செயல்படுத்திய பின் தொடர வேண்டிய அடுத்த அறிவுறுத்தலின் முகவரியைக் கொண்டுள்ளது. அடுக்கின் அனைத்து முகவரிகளின் முதல் பிட் (பக்கம் ஒன்று) 1 இல் தொடங்குவதால், ஸ்டாக் பாயிண்டர் பதிவு மீதமுள்ள எட்டு பிட்களை மட்டுமே வைத்திருக்க வேண்டும். எல்லாவற்றிற்கும் மேலாக, அதன் முதல் பிட், இது இடதுபுற பிட் (வலதுபுறத்தில் இருந்து எண்ணும் ஒன்பதாவது பிட்), எப்போதும் 1 ஆகும்.

S இலிருந்து X க்கு பைட்டை நகலெடுக்க, வழிமுறை:

TSX

பைட்டை X இலிருந்து Sக்கு நகலெடுக்க, வழிமுறை:

TXT

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

குறிப்பு: X to Y அல்லது Y to X பரிமாற்றம் (நகல்) இல்லை.

4.3 எண்கணித செயல்பாடுகள்

சர்க்யூட், 6502 µP இல் உள்ள எண்கணித லாஜிக் யூனிட், ஒரு நேரத்தில் இரண்டு எட்டு பிட் எண்களை மட்டுமே சேர்க்க முடியும். அது கழிக்காது, பெருக்காது, வகுபடாது. பின்வரும் அட்டவணையானது எண்கணித செயல்பாடுகளுக்கான ஆப்கோட்கள் மற்றும் முகவரி முறைகளைக் காட்டுகிறது:

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

கையொப்பமிடாத எண்களைச் சேர்த்தல்
6502 µP உடன், கையொப்பமிடப்பட்ட எண்கள் இரண்டின் நிரப்பு எண்களாகும். கையொப்பமிடப்படாத எண்கள் பூஜ்ஜியத்திலிருந்து தொடங்கும் சாதாரண நேர்மறை எண்கள். எனவே, எட்டு பிட்களின் பைட்டுக்கு, சிறிய கையொப்பமிடப்படாத எண் 00000000 ஆகும். 2 = 0 10 = 00 16 மேலும் கையொப்பமிடப்படாத மிகப்பெரிய எண் 11111111 ஆகும் 2 = 255 10 = FF 16 . கையொப்பமிடாத இரண்டு எண்களுக்கு, சேர்த்தல்:

A+M+C→A

அதாவது, திரட்டியின் 8-பிட் உள்ளடக்கம், நினைவகத்திலிருந்து ஒரு பைட்டில் (8-பிட்கள்) எண்கணித லாஜிக் யூனிட் மூலம் சேர்க்கப்படுகிறது. A மற்றும் M ஐச் சேர்த்த பிறகு, ஒன்பதாவது பிட்டிற்கான கேரி நிலைப் பதிவேட்டில் உள்ள கேரி ஃபிளாக் கலத்திற்குச் செல்கிறது. நிலைப் பதிவேட்டில் உள்ள கேரி ஃபிளாக் கலத்தில் இருக்கும் முந்தைய சேர்த்தலில் இருந்து முந்தைய கேரி பிட், A+M+C→Aஐ உருவாக்கும் A மற்றும் M இன் கூட்டுத்தொகையில் சேர்க்கப்படும். இதன் விளைவாக மீண்டும் குவிப்பானில் வைக்கப்படுகிறது.

வட்டி கூடுதலாக இருந்தால்:

ஏ + எம்

முந்தைய கேரி எதையும் சேர்க்க வேண்டிய அவசியமில்லை, கேரி ஃபிளாக் அழிக்கப்பட வேண்டும், இது 0 ஆக உள்ளது, அதனால் கூடுதலாக:

A+M+0→A போலவே A+M→A

குறிப்பு: M ஐ A உடன் சேர்த்தால், 1 இன் கேரி ஏற்படுகிறது, ஏனெனில் இதன் விளைவாக 255 ஐ விட அதிகமாக உள்ளது 10 = 11111111 2 = FF 16 , இது ஒரு புதிய கேரி. 1-ன் இந்த புதிய கேரி, அடுத்த ஜோடி எட்டு-பிட்களுக்கு (மற்றொரு A + M) தேவைப்படும் பட்சத்தில், கேரி ஃபிளாக் கலத்திற்கு தானாகவே அனுப்பப்படும்.

இரண்டு கையொப்பமிடாத எட்டு-பிட்களைச் சேர்ப்பதற்கான குறியீடு
00111111 2 +00010101 2 3F போலவே உள்ளது 16 + 15 16 இது 63 க்கு சமம் 10 +21 10 . முடிவு 010101002 2 இது 54 க்கு சமம் 16 மற்றும் 84 10 . 255 என்ற எட்டு பிட்களுக்கான அதிகபட்ச எண்ணைத் தாண்டி முடிவு இல்லை 10 = 11111111 2 = FF 16 . எனவே, 1 இன் விளைவாக கேரி இல்லை. அதை வேறு விதமாகக் கூறினால், இதன் விளைவாக வரும் கேரி 0. கூட்டலுக்கு முன், 1 இன் முந்தைய கேரி இல்லை. வேறுவிதமாகக் கூறினால், முந்தைய கேரி 0. இதைச் சேர்ப்பதற்கான குறியீடு. இருக்கமுடியும்:

CLC
LDA #$3F
ADC #$15

குறிப்பு: சட்டசபை மொழியை தட்டச்சு செய்யும் போது, ​​ஒவ்வொரு அறிவுறுத்தலின் முடிவிலும் விசைப்பலகையின் 'Enter' விசையை அழுத்தவும். இந்த குறியீட்டில் மூன்று வழிமுறைகள் உள்ளன. முந்தைய கூடுதலாக 1 இருந்தால், முதல் அறிவுறுத்தல் (CLC) எடுத்துச் செல்லும் கொடியை அழிக்கிறது. CLC ஐ மறைமுகமான முகவரி முறையில் மட்டுமே செய்ய முடியும். மறைமுகமான முகவரி பயன்முறைக்கான நினைவூட்டல் எந்த இயக்கத்தையும் எடுக்காது. இது P இன் நிலைப் பதிவேட்டின் கேரி செல்லை அழிக்கிறது. கிளியரிங் என்பது கேரி ஃபிளாக் கலத்திற்கு 0 இன் பிட்டைக் கொடுப்பதாகும். குறியீட்டில் உள்ள அடுத்த இரண்டு வழிமுறைகள் உடனடி முகவரி பயன்முறையைப் பயன்படுத்துகின்றன. உடனடி முகவரியுடன், நினைவூட்டலுக்கு ஒரே ஒரு எண்ணாக இருக்கும் (மேலும் நினைவகமோ அல்லது பதிவு முகவரியோ இல்லை). எனவே, எண்ணுக்கு முன் '#' இருக்க வேண்டும். '$' என்பது பின் வரும் எண் ஹெக்ஸாடெசிமல் என்று அர்த்தம்.

இரண்டாவது அறிவுறுத்தல் 3F எண்ணை ஏற்றுகிறது 16 திரட்டிக்குள். மூன்றாவது அறிவுறுத்தலுக்கு, µP இன் எண்கணித லாஜிக் யூனிட் சர்க்யூட், கேரி ஃபிளாக் கலத்தின், நிலைப் பதிவேட்டின் முந்தைய (அழிக்கப்பட்ட) கேரி 0 (0க்கு கட்டாயப்படுத்தப்பட்டது) எடுத்து அதை 15 இல் சேர்க்கிறது. 16 அத்துடன் ஏற்கனவே 3F இல் இருக்கும் மதிப்புக்கு 16 திரட்டி மற்றும் முழுமையான முடிவை மீண்டும் குவிப்பானில் வைக்கிறது. இந்த வழக்கில், 0 இன் விளைவாக கேரி உள்ளது. ALU (எண்கணித லாஜிக் யூனிட்) நிலைப் பதிவேட்டின் கேரி ஃபிளாக் கலத்திற்கு 0 ஐ அனுப்புகிறது. செயலி நிலைப் பதிவேடும் நிலைப் பதிவேடும் ஒரே பொருளைக் குறிக்கின்றன. 1ஐ எடுத்துச் சென்றால், நிலைப் பதிவேட்டின் கேரிக் கொடிக்கு ALU 1ஐ அனுப்புகிறது.

முந்தைய குறியீட்டின் மூன்று வரிகள் செயல்படுத்தப்படுவதற்கு முன்பு நினைவகத்தில் இருக்க வேண்டும். CLCக்கான opcode 1816 (மறைமுகமான முகவரி) $0200 பைட் இடத்தில் உள்ளது. ஆப்கோட் A9 16 LDAக்கு (உடனடி முகவரி) $0201 பைட் இடத்தில் உள்ளது. எண் 3F 10 $0202 பைட் இடத்தில் உள்ளது. ஆப்கோட் 69 16 LDAக்கு (உடனடி முகவரி) $0203 பைட் இடத்தில் உள்ளது. எண் 15 10 $0204 பைட் இடத்தில் உள்ளது.

குறிப்பு: LDA என்பது ஒரு பரிமாற்ற (சுமை) அறிவுறுத்தலாகும் மற்றும் ஒரு எண்கணித அறிவுறுத்தல் (நினைவூட்டல்) அல்ல.

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

எண்கள் 0010101010111111 ஆக இருக்கட்டும் 2 = 2ABF16 16 = 10,943 10 மற்றும் 0010101010010101 2 = 2A95 16 = 10,901 10 . கூட்டுத்தொகை 0101010101010100 2 = 5554 16 = 21,844 10 .

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

வலமிருந்து தொடங்கி எட்டாவது பிட்டிலிருந்து ஒன்பதாவது பிட் நிலைக்கு 1ஐ எடுத்துச் செல்வதை பின்வரும் அட்டவணை காட்டுகிறது:

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

இரண்டு ஜோடி பைட்டுகளின் முழுமையான சேர்க்கைக்கு, முதல் கூட்டல்:

A + M + 0 -> A

இரண்டாவது சேர்த்தல்:

A + M + 1 -> A

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

CLC
LDA $0213
ADC $0215
; கேரி ஃபிளாக் மதிப்பு தேவை என்பதால் க்ளியரிங் இல்லை
STA $0217
LDA $0214
ஏடிசி $0216
STA $0218

6502 சட்டசபை மொழியுடன், அரைப்புள்ளி ஒரு கருத்தைத் தொடங்குகிறது என்பதை நினைவில் கொள்க. இதன் பொருள் நிரலின் செயல்பாட்டில், அரைப்புள்ளி மற்றும் அதன் வலதுபுறத்தில் உள்ள அனைத்தும் புறக்கணிக்கப்படுகின்றன. முன்னர் எழுதப்பட்ட நிரல் ஒரு உரைக் கோப்பில் புரோகிராமரின் விருப்பத்தின் பெயரிலும் “.asm” நீட்டிப்பிலும் சேமிக்கப்படும். முந்தைய நிரல் செயல்பாட்டிற்கு நினைவகத்திற்கு செல்லும் சரியான நிரல் அல்ல. நினைவகத்தில் உள்ள தொடர்புடைய நிரல் மொழிபெயர்க்கப்பட்ட நிரல் என்று அழைக்கப்படுகிறது, அங்கு நினைவூட்டல்கள் ஆப்கோட்களால் (பைட்டுகள்) மாற்றப்படுகின்றன. எந்தவொரு கருத்தும் சட்டசபை மொழி உரை கோப்பில் இருக்கும், மேலும் மொழிபெயர்க்கப்பட்ட நிரல் நினைவகத்தை அடைவதற்கு முன்பு அகற்றப்படும். உண்மையில், இன்று வட்டில் இரண்டு கோப்புகள் சேமிக்கப்பட்டுள்ளன: '.asm' கோப்பு மற்றும் '.exe' கோப்பு. '.asm' கோப்பு முந்தைய விளக்கப்படத்தில் உள்ளது. '.exe' கோப்பானது '.asm' கோப்பாகும், அதில் அனைத்து கருத்துகளும் அகற்றப்பட்டு, அனைத்து நினைவூட்டல்களும் அவற்றின் ஆப்கோடுகளால் மாற்றப்படுகின்றன. டெக்ஸ்ட் எடிட்டரில் திறக்கும் போது, ​​“.exe” கோப்பை அடையாளம் காண முடியாது. வேறுவிதமாகக் கூறப்படாவிட்டால், இந்த அத்தியாயத்தின் நோக்கத்திற்காக, “.exe” கோப்பு $0200 இடத்திலிருந்து தொடங்கி நினைவகத்திற்கு நகலெடுக்கப்படும். ஏற்றுதல் என்பதன் மற்றொரு பொருள் இது.

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

நிரல் செயல்படுத்தப்படுவதற்கு முன், மொழிபெயர்க்கப்பட்ட பதிப்பு முதலில் நினைவகத்தில் இருக்க வேண்டும். முந்தைய நிரல் குறியீட்டைப் பார்க்கும்போது, ​​​​கருத்து இல்லாத வழிமுறைகள் 19 ஐ உருவாக்குவதைக் காணலாம் 10 = 13 16 பைட்டுகள். எனவே, நிரல் நினைவகத்தில் $0200 பைட் இடத்திலிருந்து $0200 + $13 - $1 = $0212 பைட் இடங்களுக்கு எடுக்கும் ($0200 முதல் $0201 அல்ல, அதாவது - $1). உள்ளீடு மற்றும் வெளியீட்டு எண்களுக்கு 6 பைட்டுகளைச் சேர்த்தால், எல்லா நிரலும் $0212 + $6 = $0218 இல் முடிவடையும். திட்டத்தின் மொத்த நீளம் 19 ஆகும் 16 = 25 10 .

ஆஜெண்டின் குறைந்த பைட் $0213 முகவரியிலும், அதே ஆஜெண்டின் அதிக பைட் $0214 முகவரியிலும் இருக்க வேண்டும் - சிறிய எண்டியன்னெஸ். இதேபோல், சேர்க்கையின் குறைந்த பைட் $0215 முகவரியிலும், அதே சேர்க்கையின் அதிக பைட் $0216 முகவரியிலும் இருக்க வேண்டும் - சிறிய எண்டியன்னெஸ். முடிவின் குறைந்த பைட் (தொகை) $0217 முகவரியிலும், அதே முடிவின் அதிக பைட் $0218 முகவரியிலும் இருக்க வேண்டும் - சிறிய முடிவு.

ஆப்கோட் 18 16 CLC க்கான (மறைமுகமான முகவரி) $0200 பைட் இடத்தில் உள்ளது. 'LDA $0213'க்கான ஆப்கோட், அதாவது AD 16 LDAக்கு (முழுமையான முகவரி), $0201 பைட் இடத்தில் உள்ளது. ஆஜெண்டின் கீழ் பைட் 10111111 $0213 என்ற நினைவக பைட் இடத்தில் உள்ளது. ஒவ்வொரு ஆப்கோடும் ஒரு பைட்டை ஆக்கிரமித்துள்ளது என்பதை நினைவில் கொள்ளுங்கள். 'LDA $0213' இன் '$0213' முகவரி $0202 மற்றும் $0203 பைட் இடங்களில் உள்ளது. 'LDA $0213' அறிவுறுத்தல் augend இன் கீழ் பைட்டை திரட்டிக்கு ஏற்றுகிறது.

'ADC $0215'க்கான ஆப்கோட், அதாவது 6D 16 ADC க்கு (முழுமையான முகவரி), $0204 பைட் இடத்தில் உள்ளது. 10010101 சேர்க்கையின் கீழ் பைட் $0215 பைட் இடத்தில் உள்ளது. 'ADC $0215' இன் '$0215' முகவரி $0205 மற்றும் $0206 பைட் இடங்களில் உள்ளது. 'ADC $0215' அறிவுறுத்தலானது, ஏற்கனவே குவிப்பானில் உள்ள ஆஜெண்டின் கீழ் பைட்டுடன் சேர்க்கையின் கீழ் பைட்டைச் சேர்க்கிறது. இதன் விளைவாக மீண்டும் குவிப்பானில் வைக்கப்படுகிறது. எட்டாவது பிட்டிற்குப் பிறகு எந்த கேரியும் நிலைப் பதிவேட்டின் கேரிக் கொடிக்கு அனுப்பப்படும். அதிக பைட்டுகளின் இரண்டாவது சேர்க்கைக்கு முன் கேரி ஃபிளாக் செல் அழிக்கப்படக்கூடாது. இந்த கேரி தானாகவே அதிக பைட்டுகளின் கூட்டுத்தொகையில் சேர்க்கப்படும். உண்மையில், CLC காரணமாக, தொடக்கத்தில் தானாகவே குறைந்த பைட்டுகளின் கூட்டுத்தொகையில் 0 சேர்க்கப்படுகிறது (சேர்க்கப்படவில்லை என்பதற்கு சமம்).

கருத்து அடுத்த 48 ஐ எடுக்கும் 10 = 30 16 பைட்டுகள். இருப்பினும், இது '.asm' உரை கோப்பில் மட்டுமே உள்ளது. அது நினைவுக்கு எட்டவில்லை. இது அசெம்பிளர் (ஒரு நிரல்) மூலம் செய்யப்படும் மொழிபெயர்ப்பால் அகற்றப்படுகிறது.

அடுத்த அறிவுறுத்தலுக்கு “STA $0217”, STA இன் ஆப்கோடு 8D 16 (முழுமையான முகவரி) $0207 பைட் இடத்தில் உள்ளது. 'STA $0217' இன் '$0217' முகவரி $0208 மற்றும் $0209 நினைவக இடங்களில் உள்ளது. 'STA $0217' அறிவுறுத்தல், திரட்டியின் எட்டு-பிட் உள்ளடக்கத்தை $0217 நினைவக இடத்திற்கு நகலெடுக்கிறது.

00101010 ஆக இருக்கும் ஆஜெண்டின் அதிக பைட் $0214 இன் நினைவக இடத்தில் உள்ளது, மேலும் 00101010 இன் கூடுதல் பைட் $02 இல் உள்ளது. 16 . 'LDA $0214'க்கான ஆப்கோடு, LDAக்கான AD16 (முழுமையான முகவரி) $020A பைட் இடத்தில் உள்ளது. 'LDA $0214' இன் '$0214' முகவரி $020B மற்றும் $020C ஆகிய இடங்களில் உள்ளது. 'LDA $0214' அறிவுறுத்தல், augend இன் உயர் பைட்டை அக்யூமுலேட்டருக்கு ஏற்றி, திரட்டியில் உள்ள அனைத்தையும் அழித்துவிடும்.

'ADC $0216'க்கான ஆப்கோடு 6D ஆகும் 16 ADCக்கு (முழுமையான முகவரி) $020D பைட் இடத்தில் உள்ளது. 'ADC 0216' இன் '$0216' முகவரி $020E மற்றும் $020F பைட் இடங்களில் உள்ளது. 'ADC $0216' அறிவுறுத்தலானது, ஏற்கனவே குவிப்பானில் உள்ள ஆஜெண்டின் உயர் பைட்டுடன் சேர்ப்பின் அதிக பைட்டைச் சேர்க்கிறது. இதன் விளைவாக மீண்டும் குவிப்பானில் வைக்கப்படுகிறது. 1 கேரி இருந்தால், இந்த இரண்டாவது கூடுதலாக, அது தானாகவே நிலைப் பதிவேட்டின் கேரி கலத்தில் வைக்கப்படும். பதினாறாவது பிட்டுக்கு (இடது) அப்பால் உள்ள கேரி இந்தச் சிக்கலுக்குத் தேவையில்லை என்றாலும், கேரி ஃபிளாக் 1 ஆனதா எனச் சரிபார்த்து 1 கேரி ஏற்பட்டதா என்பதைச் சரிபார்ப்பது நல்லது.

'STA $0218' என்ற அடுத்த மற்றும் கடைசி அறிவுறுத்தலுக்கு, STA இன் ஆப்கோடு 8D16 (முழுமையான முகவரி) $0210 பைட் இடத்தில் உள்ளது. 'STA $0218' இன் '$0218' முகவரி $0211 மற்றும் $0212 நினைவக இடங்களில் உள்ளது. 'STA $0218' அறிவுறுத்தல், திரட்டியின் எட்டு-பிட் உள்ளடக்கத்தை $0218 நினைவக இடத்திற்கு நகலெடுக்கிறது. இரண்டு பதினாறு-பிட் எண்களின் சேர்க்கையின் முடிவு 010101010101010100 ஆகும், இதில் 01010100 இன் குறைந்த பைட் $0217 மற்றும் அதிக பைட் 01010101 $0218 இன் நினைவக இடத்தில் - சிறிய முடிவு.

கழித்தல்
6502 µP உடன், கையொப்பமிடப்பட்ட எண்கள் இரண்டின் நிரப்பு எண்களாகும். இரண்டின் நிரப்பு எண் எட்டு பிட்கள், பதினாறு பிட்கள் அல்லது எட்டு பிட்களின் பல மடங்குகளாக இருக்கலாம். இரண்டின் நிரப்புதலுடன், இடமிருந்து வரும் முதல் பிட் சைன் பிட் ஆகும். நேர்மறை எண்ணுக்கு, இந்த முதல் பிட் 0 என்பது அடையாளத்தைக் குறிக்கும். மீதமுள்ள பிட்கள் சாதாரண வழியில் எண்ணை உருவாக்குகின்றன. எதிர்மறை எண்ணின் இரண்டின் நிரப்புதலைப் பெற, தொடர்புடைய நேர்மறை எண்ணுக்கான அனைத்து பிட்களையும் தலைகீழாக மாற்றவும், பின்னர் வலது முனையிலிருந்து முடிவில் 1 ஐ சேர்க்கவும்.

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

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

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

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

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

இந்தக் கழித்தல் இரண்டின் நிரப்புதலை உள்ளடக்காது. 6502 µP இல் கழித்தல் இரண்டு நிரப்புதலில் செய்யப்படுவதால், அடிப்படை இரண்டில் கழித்தல் பின்வருமாறு செய்யப்படுகிறது:

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

மினுவெண்டின் 16-பிட்கள் ஏற்கனவே இரண்டு நிரப்புதலில் உள்ளன, இது இடமிருந்து 0 இல் தொடங்குகிறது. எனவே, இதற்கு பிட்களில் சரிசெய்தல் தேவையில்லை. 6502 µP உடன், எந்த மாற்றமும் இன்றி மினுஎண்டின் கீழ் பைட், சப்ட்ராஹெண்டின் இரண்டின் நிரப்புதலின் கீழ் பைட்டில் சேர்க்கப்படுகிறது. மினுவெண்டின் கீழ் பைட் இரண்டின் நிரப்பியாக மாற்றப்படவில்லை, ஏனெனில் முழு மினுவெண்டின் பதினாறு பிட்கள் ஏற்கனவே இரண்டு நிரப்புதலில் இருக்க வேண்டும் (இடதுபுறத்தில் முதல் பிட்டாக 0 உடன்). இந்த முதல் கூட்டலில், 1=0 SEC அறிவுறுத்தலின் காரணமாக 1 இன் கட்டாயக் கேரி சேர்க்கப்பட்டது.

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

அடுத்த விஷயம், அந்த திட்டத்தை பின்வருமாறு குறியிடுவதுதான்:

SEC
LDA $0213
SBC $0215
; தலைகீழான கேரி ஃபிளாக் மதிப்பு தேவைப்படுவதால், அழிக்க முடியாது
STA $0217
LDA $0214
SBC $0216
STA $0218

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

ஒரு நிரலை இயக்குவதற்கு முன், அது முதலில் நினைவகத்தில் இருக்க வேண்டும். நிரல் குறியீட்டைப் பார்க்கும்போது, ​​​​கருத்து இல்லாத வழிமுறைகள் 19 ஐ உருவாக்குவதைக் காணலாம் 10 = 13 16 பைட்டுகள். இந்த அத்தியாயத்தில் உள்ள அனைத்து நிரல்களும் $0200 நினைவக இடத்திலிருந்து தொடங்குவதால், நிரல் நினைவகத்தில் $0200 பைட் இடத்திலிருந்து $0200 + $13 - $1 = $0212 பைட் இருப்பிடத்திற்கு ($0200 தொடங்கி $0201 அல்ல) செல்கிறது. இந்த வரம்பில் உள்ளீடு மற்றும் வெளியீடு பைட்டுகளுக்கான மண்டலம் இல்லை. இரண்டு உள்ளீட்டு எண்கள் 4 பைட்டுகள் மற்றும் ஒரு வெளியீடு எண் 2 பைட்டுகள் எடுக்கும். உள்ளீடு மற்றும் வெளியீட்டு எண்களுக்கான 6 பைட்டுகளைச் சேர்ப்பது நிரலுக்கான வரம்பை உருவாக்குகிறது, இது $0212 + $6 = $0218 இல் முடிவடைகிறது. திட்டத்தின் மொத்த நீளம் 19 ஆகும் 16 = 25 10 .

மினுவெண்டின் குறைந்த பைட் $0213 முகவரியிலும், அதே மினுவெண்டின் அதிக பைட் $0214 முகவரியிலும் இருக்க வேண்டும் - சிறிய எண்டியன்னெஸ். இதேபோல், சப்ட்ராஹெண்டின் கீழ் பைட் $0215 முகவரியிலும், அதே சப்ட்ராஹெண்டின் அதிக பைட் $0216 முகவரியிலும் இருக்க வேண்டும் - சிறிய எண்டியன்னெஸ். முடிவின் குறைந்த பைட் (வேறுபாடு) $0217 முகவரியிலும், அதே முடிவின் அதிக பைட் $0218 முகவரியிலும் இருக்க வேண்டும் - சிறிய முடிவு.

38 இன் ஆப்கோட் 16 SEC க்கான (மறைமுகமான முகவரி) $0200 முகவரியில் உள்ளது. இந்த அத்தியாயத்தில் உள்ள அனைத்து நிரல்களும் $0200 நினைவக இருப்பிடத்தில் தொடங்கும் என்று கருதப்படுகிறது, அது அங்கு இருந்த எந்த நிரலையும் ரத்து செய்கிறது; வேறுவிதமாகக் கூறப்பட்டதைத் தவிர. 'LDA $0213'க்கான ஆப்கோட், அதாவது AD 16 , LDAக்கான (முழுமையான முகவரி) $0201 பைட் இடத்தில் உள்ளது. மினுஎண்டின் கீழ் பைட் 10111111 $0213 என்ற நினைவக பைட் இடத்தில் உள்ளது. ஒவ்வொரு ஆப்கோடும் ஒரு பைட்டை ஆக்கிரமித்துள்ளது என்பதை நினைவில் கொள்ளுங்கள். 'LDA $0213' இன் '$0213' முகவரி $0202 மற்றும் $0203 பைட் இடங்களில் உள்ளது. 'LDA $0213' அறிவுறுத்தலானது, மைனுவெண்டின் குறைந்த பைட்டை அக்யூமுலேட்டருக்கு ஏற்றுகிறது.

'SBC $0215'க்கான ஆப்கோட், அதாவது ED 16 , SBCக்கான (முழுமையான முகவரி) $0204 பைட் இடத்தில் உள்ளது. சப்ட்ராஹெண்டின் கீழ் பைட் 01101010 $0215 பைட் இடத்தில் உள்ளது. 'ADC $0215' இன் '$0215' முகவரி $0205 மற்றும் $0206 பைட் இடங்களில் உள்ளது. 'SBC $0215' அறிவுறுத்தல், ஏற்கனவே குவிப்பானில் உள்ள மைனுஎண்டின் கீழ் பைட்டிலிருந்து சப்ட்ராஹெண்டின் கீழ் பைட்டைக் கழிக்கிறது. இது இரண்டின் நிரப்பு கழித்தல் ஆகும். இதன் விளைவாக மீண்டும் குவிப்பானில் வைக்கப்படுகிறது. எட்டாவது பிட்டுக்குப் பிறகு எந்தவொரு கேரியின் நிரப்பு (தலைகீழ்) நிலைப் பதிவேட்டின் கேரி ஃபிளாடிற்கு அனுப்பப்படும். அதிக பைட்டுகளுடன் இரண்டாவது கழிப்பிற்கு முன் இந்த கேரி ஃபிளாக் அழிக்கப்படக்கூடாது. இந்த கேரி தானாகவே அதிக பைட்டுகளின் கழித்தலில் சேர்க்கப்படுகிறது.

கருத்து அடுத்த 57 ஐ எடுக்கும் 10 = 3916 16 பைட்டுகள். இருப்பினும், இது “.asm” உரை கோப்பில் மட்டுமே உள்ளது. அது நினைவுக்கு எட்டவில்லை. அசெம்பிளர் (ஒரு நிரல்) மூலம் செய்யப்படும் மொழிபெயர்ப்பால் இது அகற்றப்படுகிறது.

அடுத்த அறிவுறுத்தலுக்கு “STA $0217”, STA இன் ஆப்கோட், அதாவது 8D 16 (முழுமையான முகவரி), $0207 பைட் இடத்தில் உள்ளது. 'STA $0217' இன் '$0217' முகவரி $0208 மற்றும் $0209 நினைவக இடங்களில் உள்ளது. 'STA $0217' அறிவுறுத்தல், திரட்டியின் எட்டு-பிட் உள்ளடக்கத்தை $0217 நினைவக இடத்திற்கு நகலெடுக்கிறது.

00101010 என்ற minuend இன் அதிக பைட் $0214 இன் நினைவக இடத்தில் உள்ளது, மேலும் 00010101 என்ற சப்ட்ராஹெண்டின் அதிக பைட் $0216 பைட் இடத்தில் உள்ளது. 'LDA $0214'க்கான ஆப்கோட், அதாவது AD 16 LDAக்கு (முழுமையான முகவரி), $020A பைட் இடத்தில் உள்ளது. 'LDA $0214' இன் '$0214' முகவரி $020B மற்றும் $020C ஆகிய இடங்களில் உள்ளது. 'LDA $0214' அறிவுறுத்தலானது, மைன்எண்டின் அதிக பைட்டை அக்யூமுலேட்டருக்கு ஏற்றி, திரட்டியில் உள்ள அனைத்தையும் அழித்துவிடும்.

'SBC $0216'க்கான ஆப்கோட், அதாவது ED 16 SBCக்கு (முழுமையான முகவரி), $020D பைட் இடத்தில் உள்ளது. 'SBC $0216' இன் '$0216' முகவரி $020E மற்றும் $020F பைட் இடங்களில் உள்ளது. 'SBC $0216' அறிவுறுத்தல், ஏற்கனவே குவிப்பானில் உள்ள மைன்எண்டின் (இரண்டின் நிரப்பு) உயர் பைட்டிலிருந்து சப்ட்ராஹெண்டின் அதிக பைட்டைக் கழிக்கிறது. இதன் விளைவாக மீண்டும் குவிப்பானில் வைக்கப்படுகிறது. இந்த இரண்டாவது கழிப்பிற்கு 1 கேரி இருந்தால், அதன் நிரப்பு தானாகவே நிலைப் பதிவேட்டின் கேரி கலத்தில் வைக்கப்படும். பதினாறாவது பிட் (இடது)க்கு அப்பால் உள்ள கேரி இந்தச் சிக்கலுக்குத் தேவையில்லை என்றாலும், கேரிக் கொடியைச் சரிபார்ப்பதன் மூலம் நிரப்பு கேரி ஏற்படுகிறதா என்பதைச் சரிபார்ப்பது நல்லது.

'STA $0218' என்ற அடுத்த மற்றும் கடைசி அறிவுறுத்தலுக்கு, STA இன் ஆப்கோட், அதாவது 8D 16 (முழுமையான முகவரி), $0210 பைட் இடத்தில் உள்ளது. 'STA $0218' இன் '$0218' முகவரி $0211 மற்றும் $0212 நினைவக இடங்களில் உள்ளது. 'STA $0218' அறிவுறுத்தல், திரட்டியின் எட்டு-பிட் உள்ளடக்கத்தை $0218 நினைவக இடத்திற்கு நகலெடுக்கிறது. இரண்டு பதினாறு-பிட் எண்களுடன் கழித்தலின் விளைவாக $0217 இன் நினைவக இடத்தில் 01010101 இன் குறைந்த பைட் 0001010101010101 மற்றும் அதிக பைட் 00010101 $0218 - சிறிய எண்டியன்ஸ்.

6502 µP ஆனது கூட்டலுக்காக மட்டுமே சுற்று உள்ளது, மற்றும் மறைமுகமாக இரண்டின் நிரப்பு கழித்தல். இது பெருக்கல் மற்றும் வகுத்தல் ஆகியவற்றுக்கான சுற்று இல்லை. பெருக்கல் மற்றும் வகுத்தல் செய்ய, பகுதி தயாரிப்புகளின் மாற்றம் மற்றும் பகுதி ஈவுத்தொகை உள்ளிட்ட விவரங்களுடன் கூடிய சட்டசபை மொழி நிரல் எழுதப்பட வேண்டும்.

4.4 தருக்க செயல்பாடுகள்

6502 µP இல், OR க்கான நினைவகம் ORA மற்றும் பிரத்தியேக OR க்கான நினைவகம் EOR ஆகும். தர்க்கரீதியான செயல்பாடுகளுக்கு மறைமுகமான முகவரி இல்லை என்பதைக் கவனியுங்கள். மறைமுகமான முகவரி எந்த செயலையும் எடுக்காது. லாஜிக்கல் ஆபரேட்டர்கள் ஒவ்வொன்றும் இரண்டு செயல்பாடுகளை எடுக்க வேண்டும். முதலாவது திரட்டியில் உள்ளது, இரண்டாவது நினைவகத்தில் அல்லது அறிவுறுத்தலில் உள்ளது. முடிவு (8-பிட்கள்) மீண்டும் திரட்டியில் உள்ளது. திரட்டியில் முதலாவது உடனடி அறிவுறுத்தலின் மூலம் அங்கு வைக்கப்படுகிறது அல்லது முழுமையான முகவரியுடன் நினைவகத்திலிருந்து நகலெடுக்கப்படுகிறது. இந்த பிரிவில், பூஜ்ஜிய பக்க முகவரி மட்டுமே விளக்கத்திற்கு பயன்படுத்தப்படுகிறது. இந்த லாஜிக்கல் ஆபரேட்டர்கள் அனைத்தும் பிட்வைஸ் ஆபரேட்டர்கள்.

மற்றும்
பின்வரும் அட்டவணை Bitwise AND ஐ பைனரி, ஹெக்ஸாடெசிமல் மற்றும் தசமத்தில் விளக்குகிறது:

இந்த அத்தியாயத்தில் உள்ள அனைத்து நிரல்களும் $0200 என்ற நினைவக பைட் இடத்தில் தொடங்க வேண்டும். இருப்பினும், இந்தப் பிரிவில் உள்ள நிரல்கள் பக்கம் பூஜ்ஜியத்தில் உள்ளன, 00000000 அதிக பைட் இல்லாமல் பக்க பூஜ்ஜியத்தைப் பயன்படுத்துவதை விளக்கும் நோக்கத்துடன் 2 . முந்தைய ANDing பின்வருமாறு குறியிடப்படலாம்:

LDA #$9A ; நினைவிலிருந்து அல்ல - உடனடி முகவரி
மற்றும் #$CD ; நினைவிலிருந்து அல்ல - உடனடி முகவரி
STA $30 ; பூஜ்ஜிய அடிப்படையிலான $0030 இல் $88 சேமிக்கிறது

அல்லது
பின்வரும் அட்டவணை Bitwise OR ஐ பைனரி, ஹெக்ஸாடெசிமல் மற்றும் தசமத்தில் விளக்குகிறது:

LDA #$9A ; நினைவிலிருந்து அல்ல - உடனடி முகவரி
ORA #$CD ; நினைவிலிருந்து அல்ல - உடனடி முகவரி
STA $30 ; $CF ஐ பூஜ்ஜிய அடிப்படையிலான $0030 இல் சேமிக்கிறது

இலவசம்
பின்வரும் அட்டவணை Bitwise XOR ஐ பைனரி, ஹெக்ஸாடெசிமல் மற்றும் தசமத்தில் விளக்குகிறது:

LDA #$9A ; நினைவிலிருந்து அல்ல - உடனடி முகவரி
EOR #$CD ; நினைவிலிருந்து அல்ல - உடனடி முகவரி
STA $30 ; பூஜ்ஜிய அடிப்படையிலான $0030 இல் $57 சேமிக்கிறது

4.5 ஷிப்ட் மற்றும் சுழற்று செயல்பாடுகள்

ஷிப்ட் மற்றும் ரொடேட் ஆபரேட்டர்களுக்கான நினைவூட்டல்கள் மற்றும் ஆப்கோடுகள்:

ASL: ஒரு பிட் திரட்டி அல்லது நினைவக இருப்பிடத்தை விட்டு, காலியாக உள்ள வலதுபுறக் கலத்தில் 0 ஐச் செருகவும்.

LSR: ஒரு பிட் திரட்டி அல்லது நினைவக இருப்பிடத்தை வலதுபுறமாக மாற்றவும், காலியாக உள்ள இடதுபுறக் கலத்தில் 0 ஐ செருகவும்.
ROL: குவிப்பான் அல்லது நினைவக இருப்பிடத்தின் இடதுபுறத்தில் ஒரு பிட் சுழற்று, இடதுபுறத்தில் கைவிடப்பட்ட பிட்டை காலியாக உள்ள வலதுபுறக் கலத்தில் செருகவும்.
ROR: குவிப்பான் அல்லது நினைவக இருப்பிடத்தின் ஒரு பிட் வலதுபுறம் சுழற்று, வலதுபுறத்தில் கைவிடப்பட்ட பிட்டை காலியான இடதுபுறக் கலத்தில் செருகவும்.

குவிப்பான் மூலம் ஷிப்ட் அல்லது சுழற்சி செய்ய, அறிவுறுத்தல் இது போன்றது:

எல்எஸ்ஆர் ஏ

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

பைட் நினைவக இருப்பிடத்துடன் ஷிப்ட் அல்லது சுழற்சியைச் செய்ய, அறிவுறுத்தல் இது போன்றது:

ROR $2BCD

2BCD என்பது நினைவக இருப்பிடம்.

மாற்றுவதற்கு அல்லது சுழற்றுவதற்கு உடனடி அல்லது மறைமுகமான முகவரி முறை இல்லை என்பதை நினைவில் கொள்ளவும். உடனடி முகவரி முறை இல்லை, ஏனெனில் அறிவுறுத்தலில் மட்டுமே இருக்கும் எண்ணை மாற்றவோ அல்லது சுழற்றவோ எந்த அர்த்தமும் இல்லை. 6502 µP இன் வடிவமைப்பாளர்கள் குவிப்பானின் உள்ளடக்கம் (ஒரு பதிவு) அல்லது நினைவக பைட் இருப்பிடத்தை மாற்ற அல்லது சுழற்ற வேண்டும் என்பதால் மறைமுகமான முகவரி முறை எதுவும் இல்லை.

4.6 உறவினர் முகவரி முறை

நுண்செயலி எப்பொழுதும் (1, 2, அல்லது 3 அலகுகளால்) நிரல் கவுண்டரை (PC) அடுத்த அறிவுறுத்தலைச் செயல்படுத்துகிறது. 6502 µP ஆனது BVS என்ற நினைவூட்டலைக் கொண்டுள்ளது, அதாவது ஓவர்ஃப்ளோ செட்டில் உள்ள கிளை. பிசி இரண்டு பைட்டுகளைக் கொண்டுள்ளது. இந்த அறிவுறுத்தலானது, பிசிக்கு வேறொரு நினைவக முகவரியைக் கொண்டிருப்பதால், அடுத்த அறிவுறுத்தலுக்குச் சாதாரண அதிகரிப்பு ஏற்படாது. பிசியின் உள்ளடக்கத்தில் ஆஃப்செட் எனப்படும் மதிப்பைச் சேர்ப்பதன் மூலம் அல்லது கழிப்பதன் மூலம் இதைச் செய்கிறது. எனவே, கணினி அங்கிருந்து இயங்குவதைத் தொடர கணினி வேறு (கிளையிடப்பட்ட) நினைவக இருப்பிடத்தை சுட்டிக்காட்டுகிறது. ஆஃப்செட் -128 இலிருந்து ஒரு முழு எண் 10 +127க்கு 10 (இரண்டின் நிரப்பு). எனவே, ஆஃப்செட் நினைவகத்தில் முன்னேறும். அது நேர்மறையாக அல்லது நினைவகத்தில் பின்தங்கியிருந்தால் அல்லது எதிர்மறையாக இருந்தால்.

BVS அறிவுறுத்தல் ஆஃப்செட் என்ற ஒரே ஒரு செயலியை மட்டுமே எடுக்கும். BVS உறவினர் முகவரியைப் பயன்படுத்துகிறது. பின்வரும் அறிவுறுத்தலைக் கவனியுங்கள்:

BVS $7F

அடிப்படை இரண்டில், 7F எச் 01111111 ஆகும் 2 = 127 10 . அடுத்த அறிவுறுத்தலுக்கான கணினியில் உள்ள உள்ளடக்கம் $0300 என்று வைத்துக்கொள்வோம். BVS அறிவுறுத்தல் $037F ஐ வழங்க $7F (இரண்டு நிரப்புதலில் ஏற்கனவே உள்ள நேர்மறை எண்) $0300 ஐ சேர்க்கிறது. எனவே, $0300 நினைவக இடத்தில் செயல்படுத்தப்பட வேண்டிய அடுத்த அறிவுறுத்தலுக்குப் பதிலாக, இது $037F இன் நினைவக இடத்தில் உள்ளது (தோராயமாக அரை பக்க வித்தியாசம்).

பிற கிளை அறிவுறுத்தல்கள் உள்ளன, ஆனால் BVS என்பது உறவினர் முகவரிகளை விளக்குவதற்குப் பயன்படுத்துவது மிகவும் நல்லது. உறவினர் முகவரியிடல் கிளை வழிமுறைகளை கையாள்கிறது.

4.7 குறியிடப்பட்ட முகவரி மற்றும் மறைமுக முகவரி தனித்தனியாக

இந்த முகவரி முறைகள் 6502 µP ஆனது குறைந்த எண்ணிக்கையிலான அறிவுறுத்தல்களுடன் குறுகிய காலத்தில் மகத்தான அளவிலான தரவைக் கையாள உதவுகிறது. முழு கொமடோர்-64 நினைவகத்திற்கும் 64KB இடங்கள் உள்ளன. எனவே, எந்த பைட் இருப்பிடத்தையும் அணுக, 16 பிட்கள், இரண்டு பைட்டுகள் தேவை. இரண்டு பைட்டுகள் தேவைப்படுவதற்கு ஒரே விதிவிலக்கு பக்கம் பூஜ்ஜியம் ஆகும், அங்கு அதிக பைட் $00 தவிர்க்கப்பட்டது, நினைவகத்தில் உள்ள அறிவுறுத்தல் மூலம் எடுக்கப்படும் இடத்தை சிக்கனமாக்குகிறது. பக்கம்-பூஜ்ஜியம் அல்லாத முகவரி முறையில், 16-பிட் நினைவக முகவரியின் உயர் மற்றும் கீழ் பைட்டுகள் இரண்டும் பெரும்பாலும் எப்படியோ குறிக்கப்படுகின்றன.

அடிப்படை குறியீட்டு முகவரி

முழுமையான குறியீட்டு முகவரி
X அல்லது Y பதிவேடு குறியீட்டு பதிவு என்று அழைக்கப்படுகிறது என்பதை நினைவில் கொள்ளுங்கள். பின்வரும் அறிவுறுத்தலைக் கவனியுங்கள்:

LDA $C453,X

6 இன் மதிப்பு என்று வைத்துக் கொள்வோம் எச் X பதிவேட்டில் உள்ளது. அறிவுறுத்தலில் எங்கும் 6 தட்டச்சு செய்யப்படவில்லை என்பதை நினைவில் கொள்க. இந்த அறிவுறுத்தல் 6H இன் மதிப்பை C453க்கு சேர்க்கிறது எச் உரை கோப்பில் தட்டச்சு செய்யப்பட்ட அறிவுறுத்தலின் ஒரு பகுதியாக இது இன்னும் இணைக்கப்பட உள்ளது - C453 எச் + 6 எச் = C459 எச் . எல்டிஏ என்பது பைட்டைக் குவிப்பானில் ஏற்றுகிறது. திரட்டியில் ஏற்றப்பட வேண்டிய பைட் $C459 முகவரியில் இருந்து வருகிறது. $C459 என்பது $C453 இன் கூட்டுத்தொகை ஆகும், இது அறிவுறுத்தல் மற்றும் 6 உடன் தட்டச்சு செய்யப்படுகிறது எச் X பதிவேட்டில் காணப்படுவது, பைட் திரட்டியில் ஏற்றப்படும் பயனுள்ள முகவரியாகும். என்றால் 6 எச் Y பதிவேட்டில் இருந்தது, அறிவுறுத்தலில் X க்கு பதிலாக Y தட்டச்சு செய்யப்படுகிறது.

தட்டச்சு செய்யப்பட்ட அறிவுறுத்தல் அறிக்கையில், $C453 அடிப்படை முகவரி மற்றும் 6 என அறியப்படுகிறது எச் X அல்லது Y பதிவேட்டில் பயனுள்ள முகவரிக்கான எண்ணிக்கை அல்லது குறியீட்டு பகுதி என அறியப்படுகிறது. அடிப்படை முகவரி நினைவகத்தில் உள்ள எந்த பைட் முகவரியையும், அடுத்த 256ஐயும் குறிக்கலாம் 10 X அல்லது Y பதிவேட்டில் தொடங்கப்பட்ட குறியீட்டு எண் (அல்லது எண்ணிக்கை) 0 என்று கருதி முகவரிகளை அணுகலாம். ஒரு பைட் 256 வரை தொடர்ச்சியான வரம்பைக் கொடுக்க முடியும் என்பதை நினைவில் கொள்ளுங்கள் 10 எண்கள் (அதாவது 00000000 2 11111111க்கு 2 )

எனவே, முழுமையான முகவரியானது, X அல்லது Y பதிவேட்டில் ஏற்கனவே போடப்பட்டுள்ள (மற்றொரு அறிவுறுத்தலால் போடப்பட்டவை) பயனுள்ள முகவரியைப் பெற அறிவுறுத்தலுடன் தட்டச்சு செய்யப்பட்ட 16 முகவரிகளுடன் சேர்க்கிறது. தட்டச்சு செய்யப்பட்ட அறிவுறுத்தலில், இரண்டு குறியீட்டுப் பதிவேடுகள் X அல்லது Y ஆல் வேறுபடுகின்றன, அவை கமாவிற்குப் பிறகு தட்டச்சு செய்யப்படுகின்றன. X அல்லது Y என தட்டச்சு செய்யப்படும்; இரண்டும் இல்லை.

அனைத்து நிரல்களும் உரை எடிட்டரில் தட்டச்சு செய்து, “.asm” நீட்டிப்பு கோப்பு பெயரில் சேமிக்கப்பட்ட பிறகு, மற்றொரு நிரலான அசெம்பிளர், தட்டச்சு செய்த நிரலை நினைவகத்தில் (ஏற்றப்பட்ட) மொழிபெயர்க்க வேண்டும். முந்தைய அறிவுறுத்தலானது 'LDA $C453,X', நினைவகத்தில் மூன்று பைட் இடங்களை ஆக்கிரமித்துள்ளது, ஐந்து அல்ல.

எல்டிஏ போன்ற நினைவூட்டல் ஒன்றுக்கு மேற்பட்ட ஆப்கோடுகளைக் கொண்டிருக்கலாம் (வெவ்வேறு பைட்டுகள்). X பதிவேட்டைப் பயன்படுத்தும் அறிவுறுத்தலுக்கான ஆப்கோடு Y பதிவேட்டைப் பயன்படுத்தும் ஆப்கோடில் இருந்து வேறுபட்டது. தட்டச்சு செய்த அறிவுறுத்தலின் அடிப்படையில் என்ன ஆப்கோடு பயன்படுத்த வேண்டும் என்பதை அசெம்ப்லருக்குத் தெரியும். 'LDA $C453,X'க்கான ஒரு பைட் ஆப்கோடு 'LDA $C453,Y'க்கான ஒரு பைட் ஆப்கோடில் இருந்து வேறுபட்டது. உண்மையில், 'LDA $C453,X' இல் உள்ள LDAக்கான ஆப்கோடு BD ஆகும், மேலும் LDAக்கான ஆப்கோடு 'LDA $C453,9' BD ஆகும்.

LDAக்கான ஆப்கோடு $0200 பைட் இடத்தில் இருந்தால். பின்னர், $C453 இன் 16-பிட் முகவரியானது நினைவகத்தில் $0201 மற்றும் $0202 ஆகிய பைட் இருப்பிடங்களுக்கு அடுத்ததாக இருக்கும். குறிப்பிட்ட ஆப்கோட் பைட் என்பது X பதிவேடா அல்லது Y பதிவேடு சம்பந்தப்பட்டதா என்பதைக் குறிக்கிறது. எனவே, 'LDA $C453,X' அல்லது 'LDA $C453,Y' மொழி அறிவுறுத்தல் நினைவகத்தில் மூன்று தொடர்ச்சியான பைட்டுகளை ஆக்கிரமிக்கிறது, நான்கு அல்லது ஐந்து அல்ல.

பூஜ்ஜியப் பக்க அட்டவணையிடப்பட்ட முகவரி
பூஜ்ஜிய-பக்க குறியீட்டு முகவரியானது முன்பு விவரிக்கப்பட்ட முழுமையான குறியீட்டு முகவரி போன்றது, ஆனால் இலக்கு பைட் பக்கம் பூஜ்ஜியத்தில் மட்டுமே இருக்க வேண்டும் ($0000 முதல் $00FF வரை). இப்போது, ​​பூஜ்ஜியப் பக்கத்தைக் கையாளும் போது, ​​அதிக பைட் எப்போதும் 00 ஆக இருக்கும் எச் நினைவக இருப்பிடங்கள் பொதுவாக தவிர்க்கப்படும். எனவே, பக்கம் பூஜ்ஜியம் $00 முதல் FF வரை தொடங்குகிறது என்று பொதுவாகக் குறிப்பிடப்படுகிறது. எனவே, 'LDA $C453,X' இன் முந்தைய அறிவுறுத்தல்:

LDA $53.X

$C4, பக்கம் பூஜ்ஜியத்திற்கு மேலே உள்ள பக்கத்தைக் குறிக்கும் உயர் பைட், இந்த அறிவுறுத்தலில் பயன்படுத்த முடியாது, ஏனெனில் இது எதிர்பார்க்கப்படும் இலக்கு பைட்டை பக்கம் பூஜ்ஜியத்திற்கு வெளியேயும் மேலேயும் திரட்டப்பட்ட பைட்டில் ஏற்றுகிறது.

அறிவுறுத்தலில் தட்டச்சு செய்யப்பட்ட மதிப்பு குறியீட்டுப் பதிவேட்டில் உள்ள மதிப்புடன் சேர்க்கப்படும் போது, ​​தொகையானது பக்க பூஜ்ஜியத்திற்கு (FF) மேல் முடிவைக் கொடுக்கக்கூடாது. எச் ) எனவே, 'LDA $FF, X' போன்ற ஒரு அறிவுறுத்தலும் FF போன்ற மதிப்பையும் வைத்திருப்பது கேள்விக்குறியே எச் குறியீட்டுப் பதிவேட்டில் FF எச் + FF எச் = 200 எச் நினைவகத்தில் பக்கம் 2 (மூன்றாவது பக்கம்) முதல் பைட் ($0200) இடம், பக்கம் 0 இலிருந்து வெகு தொலைவில் உள்ளது. எனவே, பூஜ்ஜியப் பக்க அட்டவணையிடப்பட்ட முகவரியுடன், பயனுள்ள முகவரி பக்கம் பூஜ்ஜியத்தில் இருக்க வேண்டும்.

மறைமுக முகவரி

குதிக்க முழுமையான முகவரி
முழுமையான மறைமுக முகவரி பற்றி விவாதிப்பதற்கு முன், முதலில் JMP முழுமையான முகவரியைப் பார்ப்பது நல்லது. வட்டி மதிப்பு (இலக்கு பைட்) இருக்கும் முகவரி $8765 என்று வைத்துக்கொள்வோம். இது இரண்டு பைட்டுகளைக் கொண்ட 16-பிட்கள்: அதிக பைட், இது 87 ஆகும் எச் மற்றும் குறைந்த பைட் 65 ஆகும் எச் . எனவே, $8765க்கான இரண்டு பைட்டுகள் அடுத்த அறிவுறுத்தலுக்காக பிசியில் (நிரல் கவுண்டர்) வைக்கப்படுகின்றன. சட்டசபை மொழி நிரலில் (கோப்பு) தட்டச்சு செய்யப்படுவது:

JMP $8765

நினைவகத்தில் செயல்படுத்தும் நிரல் எந்த முகவரியில் இருந்து $8765 ஆக உயர்கிறது. JMP நினைவகத்தில் 4C, 6C மற்றும் 7C ஆகிய மூன்று ஆப்கோட்கள் உள்ளன. இந்த முழுமையான முகவரிக்கான ஆப்கோட் 4C ஆகும். JMP முழுமையான மறைமுக முகவரிக்கான ஆப்கோட் 6C ஆகும் (பின்வரும் விளக்கப்படங்களைப் பார்க்கவும்).

முழுமையான மறைமுக முகவரி
இது ஜம்ப் (JMP) அறிவுறுத்தலுடன் மட்டுமே பயன்படுத்தப்படுகிறது. வட்டி பைட் (இலக்கு பைட்) உள்ள முகவரி $8765 என்று வைத்துக்கொள்வோம். இது இரண்டு பைட்டுகளைக் கொண்ட 16-பிட்கள்: அதிக பைட், இது 87 ஆகும் எச் மற்றும் குறைந்த பைட் 65 ஆகும் எச் . முழுமையான மறைமுக முகவரியுடன், இந்த இரண்டு பைட்டுகளும் உண்மையில் நினைவகத்தில் மற்ற இடங்களில் இரண்டு தொடர்ச்சியான பைட் இடங்களில் அமைந்துள்ளன.

அவை $0210 மற்றும் $0211 நினைவக இடங்களில் அமைந்துள்ளன என்று வைத்துக்கொள்வோம். பின்னர், ஆர்வமுள்ள முகவரியின் கீழ் பைட் 65 ஆகும் எச் $0210 முகவரியில் உள்ளது, மேலும் அதிக பைட் 87 ஆகும் எச் $0211 முகவரியில் உள்ளது. அதாவது குறைந்த நினைவக பைட் வட்டி குறைந்த தொடர்ச்சியான முகவரிக்கு செல்கிறது, மேலும் அதிக நினைவக பைட் அதிக தொடர்ச்சியான முகவரிக்கு செல்கிறது - சிறிய எண்டியன்னெஸ்.

16-பிட் முகவரி நினைவகத்தில் இரண்டு தொடர்ச்சியான முகவரிகளைக் குறிக்கலாம். அந்த வெளிச்சத்தில், $0210 முகவரி $0210 மற்றும் $0211 முகவரிகளைக் குறிக்கிறது. $0210 மற்றும் $0211 என்ற முகவரி ஜோடி இலக்கு பைட்டின் இறுதி முகவரியை (இரண்டு பைட்டுகளின் 16-பிட்கள்) வைத்திருக்கும், குறைந்த பைட் 65 உடன் எச் $0210 மற்றும் அதிக பைட் 87 எச் $0211 இல். எனவே, தட்டச்சு செய்யப்படும் ஜம்ப் வழிமுறை:

JMP ($0210)

JMP நினைவகத்தில் 4C, 6C மற்றும் 7C ஆகிய மூன்று ஆப்கோட்கள் உள்ளன. முழுமையான மறைமுக முகவரிக்கான ஆப்கோட் 6C ஆகும். உரை கோப்பில் தட்டச்சு செய்யப்படுவது 'JMP ($0210)'. அடைப்புக்குறிகள் காரணமாக, அசெம்பிளர் (மொழிபெயர்ப்பாளர்) 4C அல்லது 7C ஐ அல்ல, JMPக்கு ஆப்கோட் 6C ஐப் பயன்படுத்துகிறார்.

முழுமையான மறைமுக முகவரியுடன், உண்மையில் மூன்று நினைவக பகுதிகள் உள்ளன. முதல் பகுதியில் $0200, $0201 மற்றும் $0202 பைட் இடங்கள் இருக்கலாம். இது 'JMP ($0210)' அறிவுறுத்தலுக்கான மூன்று பைட்டுகளைக் கொண்டுள்ளது. இரண்டாவது பகுதி, முதல் பகுதிக்கு அடுத்ததாக அவசியமில்லை, $0210 மற்றும் $0211 என்ற இரண்டு தொடர்ச்சியான பைட் இடங்களைக் கொண்டுள்ளது. இங்கே உள்ள பைட் ($0210) என்பது சட்டசபை மொழி நிரல் அறிவுறுத்தலில் தட்டச்சு செய்யப்பட்டுள்ளது. வட்டி முகவரி $8765 எனில், குறைந்த பைட் 65 எச் $0210 பைட் இடத்தில் உள்ளது, மேலும் அதிக பைட் 87 ஆகும் எச் $0211 பைட் இடத்தில் உள்ளது. மூன்றாவது பகுதி ஒரு பைட் இருப்பிடத்தைக் கொண்டுள்ளது. இது இலக்கிடப்பட்ட பைட்டுக்கான $8765 முகவரியாகும் (விருப்பத்தின் இறுதி பைட்). $0210 மற்றும் $0211 என்ற தொடர்ச்சியான முகவரிகள் $8765 சுட்டியைக் கொண்டுள்ளன, இது ஆர்வத்தின் முகவரியாகும். கணினி விளக்கத்திற்குப் பிறகு, இலக்கு பைட்டை அணுக பிசிக்கு (நிரல் கவுண்டர்) செல்லும் $8765 ஆகும்.

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

JMP ($50)

சுட்டிக்காட்டியின் அதிக பைட் $51 பைட் இடத்தில் உள்ளது. பயனுள்ள முகவரி (சுட்டி) பக்கம் பூஜ்ஜியத்தில் இருக்க வேண்டியதில்லை.

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

4.8 குறியீட்டு மறைமுக முகவரி

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

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

JMP ($020A,X)

X பதிவேட்டில் 6 மதிப்பு இருக்கும் எச் . 020A எச் + 6 எச் = 0210 எச் . இந்த முகவரி முறையில் Y பதிவு பயன்படுத்தப்படவில்லை.

பூஜ்ஜிய பக்கம் குறியீட்டு மறைமுக முகவரி
இந்த முகவரி முறை X பதிவேட்டைப் பயன்படுத்துகிறது, Y பதிவேட்டை அல்ல. இந்த முகவரியிடல் பயன்முறையில், அதன் இரண்டு-பைட் முகவரி சுட்டிக்காட்டி பகுதியில் சுட்டிக்காட்டப்பட்ட மதிப்பு மற்றும் சுட்டிக்காட்டி இன்னும் உள்ளது. சுட்டிக்கு பக்கம் பூஜ்ஜியத்தில் இரண்டு தொடர்ச்சியான பைட்டுகள் இருக்க வேண்டும். அறிவுறுத்தலில் தட்டச்சு செய்யப்பட்ட முகவரி ஒரு பைட் முகவரி. இந்த மதிப்பு X பதிவேட்டில் உள்ள மதிப்புடன் சேர்க்கப்பட்டு எந்த கேரியும் நிராகரிக்கப்படும். முடிவு பக்கம் 0 இல் உள்ள சுட்டிப் பகுதியைக் குறிக்கிறது. எடுத்துக்காட்டாக, ஆர்வத்தின் முகவரி (சுட்டி) $8765 மற்றும் அது பக்கம் 0 இன் பைட் இடங்களில் $50 மற்றும் $51 இல் இருந்தால், X பதிவேட்டில் மதிப்பு $30, தட்டச்சு செய்யப்பட்ட அறிவுறுத்தல் இது போன்றது:

LDA ($20.X)

ஏனெனில் $20 + $30 = $50.

மறைமுக குறியீட்டு முகவரி
இந்த முகவரி முறை Y பதிவேட்டைப் பயன்படுத்துகிறது, X பதிவேட்டை அல்ல. இந்த முகவரியிடல் பயன்முறையில், இன்னும் சுட்டிக்காட்டப்பட்ட மதிப்பு மற்றும் சுட்டிக்காட்டி மண்டலம் உள்ளது, ஆனால் சுட்டிக்காட்டி மண்டலத்தின் உள்ளடக்கம் வித்தியாசமாக செயல்படுகிறது. சுட்டி மண்டலத்திற்கு பக்கம் பூஜ்ஜியத்தில் இரண்டு தொடர்ச்சியான பைட்டுகள் இருக்க வேண்டும். சுட்டி மண்டலத்தின் கீழ் முகவரி அறிவுறுத்தலில் தட்டச்சு செய்யப்பட்டுள்ளது. சுட்டிக்காட்டி பகுதியில் உள்ள இந்த எண் (ஜோடி பைட்டுகள்) உண்மையான சுட்டிக்காட்டியை பெற Y பதிவேட்டில் உள்ள மதிப்புடன் சேர்க்கப்படுகிறது. எடுத்துக்காட்டாக, ஆர்வமுள்ள முகவரி (சுட்டி) $8765 ஆகவும், 6H இன் மதிப்பு Y பதிவேட்டில் இருக்கட்டும், எண் (இரண்டு பைட்டுகள்) 50 என்ற முகவரியில் இருக்கட்டும். எச் மற்றும் 51 எச் . $875F + $6 = $8765 முதல் இரண்டு பைட்டுகளும் சேர்ந்து $875F ஆகும். தட்டச்சு செய்யப்பட்ட வழிமுறை இது போன்றது:

எல்டிஏ ($50), ஒய்

4.9 அதிகரிப்பு, குறைப்பு மற்றும் சோதனை-பிஐடிகள் வழிமுறைகள்

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

INA மற்றும் DEA ஆகியவை முறையே திரட்டியை அதிகரிக்கின்றன மற்றும் குறைக்கின்றன. இது திரட்டி முகவரி என்று அழைக்கப்படுகிறது. INX, DEX, INY மற்றும் DEY ஆகியவை முறையே X மற்றும் Y பதிவேடுகளுக்கானவை. அவர்கள் எந்த செயலையும் எடுப்பதில்லை. எனவே, அவர்கள் மறைமுகமான முகவரிப் பயன்முறையைப் பயன்படுத்துகின்றனர். அதிகரிப்பு என்பது பதிவு அல்லது நினைவக பைட்டில் 1 ஐ சேர்ப்பது. குறைப்பு என்பது பதிவு அல்லது நினைவக பைட்டில் இருந்து 1 ஐக் கழிப்பதாகும்.

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

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

  • நிலைப் பதிவேட்டின் பிட் 7 மற்றும் கடைசி பிட் (இடது) N ஆனது, ANDing க்கு முன் நினைவக இருப்பிடத்தின் பிட் 7 ஐப் பெறுகிறது.
  • நிலைப் பதிவேட்டில் பிட் 6 ஆக இருக்கும் V ஆனது ANDing க்கு முன் நினைவக இருப்பிடத்தின் பிட் 6 ஐப் பெறுகிறது.
  • AND இன் முடிவு பூஜ்ஜியமாக இருந்தால் (00000000) நிலைப் பதிவேட்டின் Z கொடி அமைக்கப்பட்டது (1 ஆனது) 2 ) இல்லையெனில், அது அழிக்கப்படும் (0 ஆனது).

4.10 வழிமுறைகளை ஒப்பிடுக

6502 µPக்கான ஒப்பீட்டு அறிவுறுத்தல் நினைவூட்டல்கள் CMP, CPX மற்றும் CPY ஆகும். ஒவ்வொரு ஒப்பீட்டிற்கும் பிறகு, செயலி நிலைப் பதிவேடு 'P' இன் N, Z மற்றும் C கொடிகள் பாதிக்கப்படுகின்றன. முடிவு எதிர்மறை எண்ணாக இருக்கும்போது N கொடி அமைக்கப்பட்டது (1 ஆனது). Z கொடியானது பூஜ்ஜியமாக இருக்கும் போது (000000002) அமைக்கப்படும் (1 ஆனது). எட்டில் இருந்து ஒன்பதாவது பிட் வரை கேரி இருக்கும் போது C கொடி அமைக்கப்பட்டது (1 ஆனது). பின்வரும் அட்டவணை ஒரு விரிவான விளக்கத்தை அளிக்கிறது

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

4.11 ஜம்ப் மற்றும் கிளை வழிமுறைகள்

பின்வரும் அட்டவணை ஜம்ப் மற்றும் கிளை வழிமுறைகளை சுருக்கமாகக் கூறுகிறது:

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

கொடுக்கப்பட்ட முகவரியிலிருந்து -128 முதல் +127 பைட்டுகளுக்குள் உள்ள முகவரிகளுக்கு மட்டுமே கிளைகளைப் பயன்படுத்த முடியும் என்பதை நினைவில் கொள்ளவும். இது உறவினர் முகவரி. JMP மற்றும் கிளை அறிவுறுத்தல்கள் இரண்டிற்கும், நிரல் கவுண்டர் (PC) நேரடியாகப் பாதிக்கப்படுகிறது. 6502 µP கிளைகளை ஒரு முழுமையான முகவரிக்கு அனுமதிக்காது, இருப்பினும் ஜம்ப் மூலம் முழுமையான முகவரி செய்ய முடியும். JMP அறிவுறுத்தல் ஒரு கிளை அறிவுறுத்தல் அல்ல.

குறிப்பு: கிளை அறிவுறுத்தல்களுடன் மட்டுமே உறவினர் முகவரி பயன்படுத்தப்படுகிறது.

4.12 அடுக்கு பகுதி

சப்ரூட்டீன் என்பது இரண்டு எண்களைச் சேர்க்க அல்லது இரண்டு எண்களைக் கழிப்பதற்கான முந்தைய குறுகிய நிரல்களில் ஒன்றாகும். நினைவகத்தில் உள்ள அடுக்கு பகுதி $0100 முதல் $01FF வரை தொடங்குகிறது. இந்த பகுதி வெறுமனே அடுக்கு என்று அழைக்கப்படுகிறது. நுண்செயலி சப்ரூட்டீன் அறிவுறுத்தலுக்குச் செல்லும்போது (JSR - பின்வரும் விவாதத்தைப் பார்க்கவும்), முடிந்ததும் எங்கு திரும்புவது என்பதை அது தெரிந்து கொள்ள வேண்டும். 6502 µP இந்த தகவலை (திரும்ப முகவரி) $0100 இலிருந்து $01FF வரை (ஸ்டாக் ஏரியா) குறைந்த நினைவகத்தில் வைத்திருக்கிறது மற்றும் ஸ்டாக் பாயிண்டர் பதிவு உள்ளடக்கத்தை நுண்செயலியில் 'S' ஆக இருக்கும் கடைசியாக திரும்பிய முகவரிக்கு ஒரு சுட்டியாக (9 பிட்கள்) பயன்படுத்துகிறது. நினைவகத்தின் பக்கம் 1 ($0100 முதல் $01FF வரை) சேமிக்கப்படும். ஸ்டாக் $01FF இலிருந்து கீழே வளர்ந்து, 128 நிலைகள் வரை ஆழமான சப்ரூட்டின்களை கூடுகட்டுவதை சாத்தியமாக்குகிறது.

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

குறிப்பு : $0100 இலிருந்து $01FF வரையிலான இடங்களைக் குறிப்பிடும் குறைந்த பைட் முகவரிக்கு ஸ்டாக் பாயிண்டரில் 8 பிட்கள் உள்ளன. அதிக பைட் 00000001 2 கருதப்படுகிறது.

நினைவகத்தில் உள்ள ஸ்டாக் பகுதிக்கு A, X, Y மற்றும் P பதிவேடுகளுடன் 'S' ஸ்டாக் பாயிண்டர் தொடர்பான வழிமுறைகளை பின்வரும் அட்டவணை வழங்குகிறது:

4.13 சப்ரூட்டின் அழைப்பு மற்றும் திரும்புதல்

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

JSR: சப்ரூட்டினுக்கு செல்லவும்

சப்ரூட்டினில் இருந்து திரும்புவதற்கான வழிமுறை:

RTS: சப்ரூட்டினில் இருந்து திரும்பவும்

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

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

JSR மற்றும் RTS இன் பயன்பாடுகளுக்கு பின்வரும் விளக்கப்படத்தைப் பார்க்கவும்:

4.14 ஒரு கவுண்ட் டவுன் லூப் உதாரணம்

பின்வரும் சப்ரூட்டீன் $FF இலிருந்து $00 வரை கணக்கிடப்படுகிறது (மொத்தம் 256 10 எண்ணிக்கைகள்):

LDX #$FF ஐத் தொடங்கு ; $FF = 255 உடன் Xஐ ஏற்றவும்
வளைய DEX; X = X – 1
BNE வளையம்; X பூஜ்ஜியமாக இல்லாவிட்டால் கோட்டோ லூப்
ஆர்டிஎஸ்; திரும்ப

ஒவ்வொரு வரிக்கும் ஒரு கருத்து உள்ளது. செயல்பாட்டிற்கான கருத்துகள் நினைவகத்திற்குள் செல்லாது. அசெம்பிளர் (மொழிபெயர்ப்பாளர்) ஒரு நிரலை நினைவகத்தில் உள்ளதைச் செயல்படுத்தும் (இயங்கும்) எப்பொழுதும் கருத்துகளை அகற்றும். ஒரு கருத்து ';' உடன் தொடங்குகிறது . இந்த திட்டத்தில் 'தொடக்கம்' மற்றும் 'லூப்' ஆகியவை லேபிள்கள் என்று அழைக்கப்படுகின்றன. ஒரு லேபிள் அறிவுறுத்தலின் முகவரிக்கு (பெயர்) அடையாளம் காட்டுகிறது. அறிவுறுத்தல் ஒற்றை பைட் அறிவுறுத்தலாக இருந்தால் (மறைமுகமான முகவரி), அந்த அறிவுறுத்தலின் முகவரி லேபிள் ஆகும். அறிவுறுத்தல் ஒரு மல்டிபைட் அறிவுறுத்தலாக இருந்தால், மல்டிபைட் அறிவுறுத்தலுக்கான முதல் பைட்டை லேபிள் அடையாளம் காட்டுகிறது. இந்த நிரலுக்கான முதல் அறிவுறுத்தல் இரண்டு பைட்டுகளைக் கொண்டுள்ளது. இது $0300 முகவரியில் தொடங்குகிறது என்று வைத்துக் கொண்டால், $0300 முகவரியை நிரலில் 'தொடக்கம்' என்று மாற்றலாம். இரண்டாவது அறிவுறுத்தல் (DEX) ஒரு ஒற்றை பைட் இன்ஸ்ட்ரக்ஷன் ஆகும், மேலும் இது $0302 முகவரியில் இருக்க வேண்டும். இதன் பொருள் $0302 முகவரியை 'லூப்' மூலம் மாற்றலாம், நிரலில் கீழே, இது உண்மையில் 'BNE லூப்பில்' உள்ளது.

'BNE loop' என்பது நிலைப் பதிவேட்டின் Z கொடி 0 ஆக இருக்கும் போது கொடுக்கப்பட்ட முகவரிக்கான கிளை ஆகும். A அல்லது X அல்லது Y பதிவேட்டில் மதிப்பு 00000000 ஆக இருக்கும் போது 2 , கடைசி செயல்பாட்டின் காரணமாக, Z கொடி 1 (தொகுப்பு) ஆகும். எனவே, இது 0 (1 அல்ல), நிரலில் இரண்டாவது மற்றும் மூன்றாவது வழிமுறைகள் அந்த வரிசையில் மீண்டும் மீண்டும் செய்யப்படுகின்றன. ஒவ்வொரு தொடர் வரிசையிலும், X பதிவேட்டில் உள்ள மதிப்பு (முழு எண்) 1 ஆல் குறைக்கப்படுகிறது. DEX என்றால் X = X – 1. X பதிவேட்டில் மதிப்பு $00 = 00000000 ஆக இருக்கும் போது 2 , Z ஆனது 1. அந்த நேரத்தில், இரண்டு வழிமுறைகளை மீண்டும் மீண்டும் செய்ய முடியாது. நிரலில் உள்ள கடைசி RTS அறிவுறுத்தலானது, இது ஒரு ஒற்றை பைட் அறிவுறுத்தலாகும் (மறைமுகமாக முகவரியிடல்), சப்ரூட்டினிலிருந்து திரும்பும். இந்த அறிவுறுத்தலின் விளைவு, சப்ரூட்டீன் அழைப்பிற்கு முன் செயல்படுத்தப்பட வேண்டிய குறியீட்டிற்கான நிரல் கவுண்டர் முகவரியை அடுக்கில் உருவாக்கி, நிரல் கவுண்டருக்கு (பிசி) திரும்பச் செல்வதாகும். இந்த முகவரியானது சப்ரூட்டின் அழைக்கப்படுவதற்கு முன் செயல்படுத்தப்பட வேண்டிய அறிவுறுத்தலின் முகவரியாகும்.

குறிப்பு: 6502 µP க்கு ஒரு சட்டசபை மொழி நிரலை எழுதும் போது, ​​ஒரு வரியின் தொடக்கத்தில் ஒரு லேபிள் மட்டுமே தொடங்க வேண்டும்; வேறு எந்த வரிக் குறியீடும் குறைந்தபட்சம் ஒரு இடமாவது வலது பக்கம் மாற்றப்பட வேண்டும்.

சப்ரூட்டினை அழைக்கிறது
முந்தைய லேபிள்களால் எடுக்கப்பட்ட நினைவக இடத்தைப் புறக்கணித்து, நிரல் நினைவகத்தில் (RAM) $0300 முதல் $0305 வரை 6 பைட்டுகள் தொடர்ச்சியான இடங்களை எடுக்கும். இந்த வழக்கில், நிரல் பின்வருமாறு:

LDX #$FF ; $FF = 255 உடன் Xஐ ஏற்றவும்
DEX ; X = X – 1
BNE $0302 ; X பூஜ்ஜியமாக இல்லாவிட்டால் கோட்டோ லூப்
ஆர்டிஎஸ்; திரும்ப

நினைவகத்தில் $0200 முகவரியில் இருந்து சப்ரூட்டினுக்கான அழைப்பாக இருக்கலாம். அழைப்பு அறிவுறுத்தல்:

JSR தொடக்கம் ; தொடக்க முகவரி $0300, அதாவது JSR $0300

டெக்ஸ்ட் எடிட்டர் கோப்பில் சரியாக எழுதப்பட்ட சப்ரூட்டின் மற்றும் அதன் அழைப்பு:

LDX #$FF ஐத் தொடங்கவும்; $FF = 255 உடன் Xஐ ஏற்றவும்
வளைய DEX; X = X – 1

BNE வளையம்; X பூஜ்ஜியமாக இல்லாவிட்டால் கோட்டோ லூப்
ஆர்டிஎஸ்; திரும்ப

JSR தொடக்கம்: $0300 தொடக்கத்தில் வழக்கமான நிலைக்கு செல்லவும்

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

4.15 ஒரு நிரலை மொழிபெயர்த்தல்

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

LDX #$FF ஐத் தொடங்கவும்: $FF = 255 உடன் Xஐ ஏற்றவும்
வளைய DEX : X = X – 1
BNE லூப்: X பூஜ்ஜியமாக இல்லாவிட்டால் கோட்டோ லூப்
RTS: திரும்ப
JSR தொடக்கம்: $0300 தொடக்கத்தில் வழக்கமான நிலைக்கு செல்லவும்

இது முன்பு எழுதப்பட்ட நிரலாகும். இது சப்ரூட்டின், தொடக்கம் மற்றும் சப்ரூட்டினுக்கான அழைப்பு ஆகியவற்றைக் கொண்டுள்ளது. நிரல் 255 இல் இருந்து கணக்கிடப்படுகிறது 10 0 வரை 10 . நிரல் பயனர் தொடக்க முகவரியான $0200 (RAM) இல் தொடங்குகிறது. நிரல் உரை திருத்தியில் தட்டச்சு செய்யப்பட்டு வட்டில் சேமிக்கப்படுகிறது. இதற்கு 'sample.asm' போன்ற பெயர் உள்ளது, அங்கு 'மாதிரி' என்பது புரோகிராமரின் விருப்பத்தின் பெயராகும், ஆனால் சட்டசபை மொழிக்கான '.asm' நீட்டிப்பு கோப்பு பெயருடன் இணைக்கப்பட வேண்டும்.

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

JSR அறிவுறுத்தல் $0200 முகவரியிலும், சப்ரூட்டின் $0300 முகவரியிலும் தொடங்கும் என்று வைத்துக்கொள்வோம். அசெம்பிளர் அனைத்து கருத்துகளையும் வெள்ளை இடைவெளிகளையும் அகற்றும். கருத்துகள் மற்றும் வெள்ளை இடைவெளிகள் எப்போதும் அரிதாக இருக்கும் நினைவகத்தை வீணடிக்கின்றன. முந்தைய சப்ரூட்டின் குறியீடு பிரிவுக்கும் சப்ரூட்டின் அழைப்புக்கும் இடையே உள்ள சாத்தியமான வெற்றுக் கோடு இடைவெளிக்கு ஒரு எடுத்துக்காட்டு. அசெம்பிள் செய்யப்பட்ட கோப்பு இன்னும் வட்டில் சேமிக்கப்பட்டுள்ளது, மேலும் இது 'sample.exe' என்று பெயரிடப்பட்டுள்ளது. 'மாதிரி' என்பது புரோகிராமரின் விருப்பத்தின் பெயர், ஆனால் அது இயங்கக்கூடிய கோப்பு என்பதைக் குறிக்க '.exe' நீட்டிப்பு இருக்க வேண்டும்.

கூடியிருந்த நிரலை பின்வருமாறு ஆவணப்படுத்தலாம்:

இதுபோன்ற ஆவணத்தை தயாரிப்பது கையால் அசெம்பிள் செய்வதாக கூறப்படுகிறது. இந்த ஆவணத்தில் உள்ள கருத்துகள் நினைவகத்தில் தோன்றாது (செயல்படுத்துவதற்காக). அட்டவணையில் உள்ள முகவரி நெடுவரிசை நினைவகத்தில் உள்ள வழிமுறைகளின் தொடக்க முகவரிகளைக் குறிக்கிறது. 'JSR தொடக்கம்', அதாவது 'JSR $0300', '20 03 00' எனக் குறியிடப்படும் என எதிர்பார்க்கப்படுகிறது, உண்மையில் '20 00 03' என குறியிடப்பட்டுள்ளது என்பதை நினைவில் கொள்க அதிக நினைவக பைட் முகவரி நினைவகத்தில் அதிக பைட்டை எடுத்துக்கொள்கிறது - சிறிய எண்ணம். JSRக்கான ஆப்கோட் 20 ஆகும் 16 .

BNE போன்ற கிளை அறிவுறுத்தலுக்கு ஆஃப்செட் என்பது 128 வரம்பில் உள்ள இரண்டு நிரப்பு எண் என்பதை நினைவில் கொள்ளவும் 10 + 127 வரை 10 . எனவே, “BNE loop” என்றால் “BNE-1 10 ” இது உண்மையில் FF இன் குறியீடு வடிவத்தில் “D0 FF” ஆகும் 16 இரண்டின் நிரப்பியில் -1 என்பது அடிப்படை இரண்டில் = 11111111 என எழுதப்பட்டுள்ளது. அசெம்ப்ளர் நிரல் லேபிள்கள் மற்றும் புலங்களை உண்மையான ஹெக்ஸாடெசிமல் எண்களுக்கு மாற்றுகிறது (ஹெக்ஸாடெசிமல் எண்கள் நான்கு பிட்களில் தொகுக்கப்பட்ட பைனரி எண்கள்). ஒவ்வொரு அறிவுறுத்தலும் தொடங்கும் உண்மையான முகவரிகள் உண்மையில் சேர்க்கப்பட்டுள்ளன.

குறிப்பு: 'JSR தொடக்கம்' அறிவுறுத்தல் குறுகிய வழிமுறைகளால் மாற்றப்படுகிறது, இது நிரல் கவுண்டரின் தற்போதைய உள்ளடக்கத்தை (உயர் மற்றும் குறைந்த பைட்டுகள்) இரண்டு முறை குறைக்கப்பட்ட ஸ்டாக் பாயிண்டருடன் ஸ்டேக்கிற்கு அனுப்புகிறது (அதிக பைட்டுக்கு ஒருமுறை மற்றும் குறைந்த பைட்டுக்கு ஒருமுறை) மற்றும் பின்னர் $0300 முகவரியுடன் கணினியை மீண்டும் ஏற்றுகிறது. ஸ்டாக் பாயிண்டர் இப்போது $00FD ஐக் குறிக்கிறது, இது $01FF க்கு துவக்கப்பட்டதாகக் கொள்ளலாம்.

மேலும், RTS அறிவுறுத்தல் பல குறுகிய வழிமுறைகளால் மாற்றப்படுகிறது, இது ஸ்டாக் பாயிண்டர் 'S' ஐ இரண்டு முறை அதிகரிக்கிறது (குறைந்த பைட்டுக்கு ஒரு முறை மற்றும் அதிக பைட்டுக்கு ஒரு முறை) மற்றும் தொடர்புடைய இரண்டு பைட்டுகளை ஸ்டாக் பாயின்டரில் இருந்து PC க்கு இழுக்கிறது. அடுத்த அறிவுறுத்தல்.

குறிப்பு: ஒரு லேபிள் உரையில் 8 எழுத்துகளுக்கு மேல் இருக்கக்கூடாது.

'BNE லூப்' தொடர்புடைய முகவரியைப் பயன்படுத்துகிறது. அதாவது -3 ஐ சேர்ப்பது 10 அடுத்த நிரல் கவுண்டர் உள்ளடக்கத்திற்கு $0305. 'BNE loop' க்கான பைட்டுகள் 'D0 FD' ஆகும், இதில் FD என்பது -3 இன் இரண்டின் நிரப்பியாகும். 10 .

குறிப்பு: இந்த அத்தியாயம் 6502 µPக்கான அனைத்து வழிமுறைகளையும் வழங்கவில்லை. 'SY6500 8-Bit Microprocessor Family' என்ற ஆவணத்தில் அனைத்து வழிமுறைகளையும் அவற்றின் விவரங்களையும் காணலாம். இந்த ஆவணத்திற்கான '6502.pdf' என்ற பெயரில் ஒரு PDF கோப்பு உள்ளது, இது இணையத்தில் இலவசமாகக் கிடைக்கிறது. இந்த ஆவணத்தில் விவரிக்கப்பட்டுள்ள 6502 µP என்பது 65C02 ஆகும்.

4.16 குறுக்கீடுகள்

கொமடோர் 64 இன் வெளிப்புற (செங்குத்து மேற்பரப்பு) போர்ட்களுடன் இணைக்கப்பட்டுள்ள எந்தவொரு சாதனத்தின் சமிக்ஞைகளும் 6502 நுண்செயலியை அடைவதற்கு முன் CIA 1 அல்லது CIA 2 சுற்றுகள் (ICs) வழியாகச் செல்ல வேண்டும். 6502 µP இன் தரவுப் பேருந்திலிருந்து சிக்னல்கள் சிஐஏ 1 அல்லது சிஐஏ 2 சிப் வழியாக ஏதேனும் வெளிப்புற சாதனத்தை அடைவதற்கு முன் அனுப்ப வேண்டும். சிஐஏ என்பது சிக்கலான இடைமுக அடாப்டரைக் குறிக்கிறது. படம் 4.1 “Comodore_64 மதர்போர்டின் பிளாக் வரைபடத்தில்”, தொகுதி உள்ளீடு/வெளியீட்டு சாதனங்கள் CIA 1 மற்றும் CIA 2 ஐக் குறிக்கின்றன. ஒரு நிரல் இயங்கும் போது, ​​தொடர்வதற்கு முன், வேறு சில குறியீட்டை இயக்குவதற்கு குறுக்கிடலாம். வன்பொருள் குறுக்கீடு மற்றும் மென்பொருள் குறுக்கீடு உள்ளது. வன்பொருள் குறுக்கீட்டிற்கு, 6502 µPக்கு இரண்டு உள்ளீட்டு சிக்னல் பின்கள் உள்ளன. இந்த ஊசிகளின் பெயர்கள் IRQ மற்றும் என்எம்ஐ . இவை µP தரவு வரிகள் அல்ல. µPக்கான தரவு வரிகள் D7, D6, D5, D4, D3, D2, D1 மற்றும் D0 ஆகும்; குறைந்த குறிப்பிடத்தக்க பிட்டுக்கு D0 மற்றும் மிகவும் குறிப்பிடத்தக்க பிட்டுக்கு D7 உடன்.

IRQ குறுக்கீடு கோரிக்கை 'செயலில்' குறைவாக உள்ளது. µP க்கு இந்த உள்ளீட்டு வரியானது பொதுவாக அதிகமாக இருக்கும், தோராயமாக 5 வோல்ட். இது தோராயமாக 0 வோல்ட்டிற்கு கீழே செல்லும் போது, ​​அது µP க்கு சமிக்ஞை செய்யும் குறுக்கீடு கோரிக்கையாகும். கோரிக்கை வழங்கப்பட்டவுடன், வரி மீண்டும் உயரமாக செல்கிறது. குறுக்கீடு கோரிக்கையை வழங்குவது என்பது குறுக்கீட்டைக் கையாளும் குறியீட்டிற்கு (சப்ரூட்டின்) µP கிளைகள் ஆகும்.

என்எம்ஐ மாஸ்கபிள் அல்லாத குறுக்கீடு 'செயலில்' குறைவாக உள்ளது. குறியீடு போது IRQ செயல்படுத்தப்பட்டு வருகிறது என்எம்ஐ குறைவாக செல்ல முடியும். இந்நிலையில், என்எம்ஐ கையாளப்படுகிறது (அதன் சொந்த குறியீடு செயல்படுத்தப்படுகிறது). அதன் பிறகு, குறியீடு IRQ தொடர்கிறது. குறியீடு பிறகு IRQ முடிவடைகிறது, முக்கிய நிரல் குறியீடு தொடர்கிறது. அது, என்எம்ஐ குறுக்கிடுகிறது IRQ கையாளுபவர். அதற்கான சமிக்ஞை என்எம்ஐ µP செயலற்ற நிலையில் இருந்தாலும், எதையும் கையாளாவிட்டாலும் அல்லது முக்கிய நிரலை இயக்காவிட்டாலும் கூட, µPக்கு வழங்கப்படலாம்.

குறிப்பு: இது உண்மையில் உயர்விலிருந்து தாழ்விற்கு மாறுதல் ஆகும் என்எம்ஐ , அதுதான் என்எம்ஐ சமிக்ஞை - அதைப் பற்றி பின்னர். IRQ பொதுவாக CIA 1 மற்றும் என்எம்ஐ பொதுவாக CIA 2 இலிருந்து வருகிறது. என்எம்ஐ , இது மாஸ்கபிள் குறுக்கீட்டைக் குறிக்கிறது, இது நிறுத்த முடியாத குறுக்கீடு என்று கருதலாம்.

குறுக்கீடுகளைக் கையாளுதல்
கோரிக்கை இருந்து வந்ததா IRQ அல்லது என்எம்ஐ , தற்போதைய அறிவுறுத்தல் பூர்த்தி செய்யப்பட வேண்டும். 6502 இல் A, X மற்றும் Y பதிவேடுகள் மட்டுமே உள்ளன. ஒரு சப்ரூட்டின் செயல்படும் போது, ​​அது இந்த மூன்று பதிவேடுகளையும் ஒன்றாகப் பயன்படுத்தி இருக்கலாம். இன்டர்ரப்ட் ஹேண்ட்லர் இன்னும் சப்ரூட்டீனாகவே உள்ளது, இருப்பினும் அப்படி பார்க்கப்படவில்லை. தற்போதைய அறிவுறுத்தல் முடிந்ததும், 65C02 µPக்கான A, X மற்றும் Y பதிவேடுகளின் உள்ளடக்கங்கள் அடுக்கில் சேமிக்கப்படும். நிரல் கவுண்டரின் அடுத்த அறிவுறுத்தலின் முகவரியும் அடுக்கிற்கு அனுப்பப்படுகிறது. µP பின்னர் குறுக்கீடுக்கான குறியீட்டை கிளைக்கிறது. அதன் பிறகு, A, X மற்றும் Y பதிவேடுகளின் உள்ளடக்கங்கள், அவை அனுப்பப்படும் தலைகீழ் வரிசையில் அடுக்கிலிருந்து மீட்டமைக்கப்படும்.

குறுக்கீடுக்கான எடுத்துக்காட்டு குறியீட்டு முறை
எளிமைக்காக, µP க்கான வழக்கமானது என்று வைத்துக்கொள்வோம் IRQ குறுக்கீடு என்பது $01 மற்றும் $02 என்ற எண்களைச் சேர்த்து $03 இன் முடிவை $0400 என்ற நினைவக முகவரியில் சேமிப்பதாகும். குறியீடு:

ISR PHA
PHX
PHY
;
LDA #$01
ADC #$02
அவற்றின் விலை $0400
;
PLY
PLX
பிஎல்ஏ
RTI

ISR என்பது ஒரு லேபிள் மற்றும் PHA அறிவுறுத்தல் இருக்கும் நினைவக முகவரியைக் கண்டறியும். ISR என்றால் குறுக்கீடு சேவை வழக்கம். PHA, PHX மற்றும் PHY ஆகியவை A, X மற்றும் Y பதிவேடுகளின் உள்ளடக்கங்களை ஸ்டேக்கிற்கு அனுப்புகின்றன, அவை குறுக்கிடுவதற்கு சற்று முன் இயங்கும் எந்த குறியீடு (நிரல்) மூலமாகவும் தேவைப்படும் என்ற நம்பிக்கையுடன். அடுத்த மூன்று வழிமுறைகள் குறுக்கீடு கையாளுதலின் மையமாக அமைகின்றன. PLY, PLX மற்றும் PLA வழிமுறைகள் அந்த வரிசையில் இருக்க வேண்டும், மேலும் அவை Y, X மற்றும் A பதிவேடுகளின் உள்ளடக்கங்களை மீண்டும் கொண்டு வரும். கடைசி அறிவுறுத்தலான ஆர்டிஐ, (ஒப்பராண்ட் இல்லாமல்) குறுக்கீட்டிற்கு முன் செயல்படுத்தப்படும் எந்த குறியீட்டிற்கு (நிரல்) தொடர்ச்சியை வழங்குகிறது. RTI ஸ்டாக்கில் இருந்து செயல்படுத்தும் குறியீட்டின் அடுத்த அறிவுறுத்தலின் முகவரியை மீண்டும் நிரல் கவுண்டருக்கு இழுக்கிறது. RTI என்பது குறுக்கீட்டிலிருந்து திரும்புதல். அதனுடன், குறுக்கீடு கையாளுதல் (சப்ரூடின்) முடிந்தது.

மென்பொருள் குறுக்கீடு
6502 µP க்கு மென்பொருள் குறுக்கீடு செய்வதற்கான முக்கிய வழி BRK மறைமுகமான முகவரி அறிவுறுத்தலைப் பயன்படுத்துவதாகும். பிரதான நிரல் இயங்குகிறது மற்றும் அது BRK அறிவுறுத்தலை எதிர்கொள்கிறது என்று வைத்துக்கொள்வோம். அந்த புள்ளியில் இருந்து, தற்போதைய அறிவுறுத்தல் முடிந்ததும் கணினியில் அடுத்த அறிவுறுத்தலின் முகவரியை அடுக்கிற்கு அனுப்ப வேண்டும். மென்பொருள் அறிவுறுத்தலைக் கையாளும் ஒரு சப்ரூட்டினை 'அடுத்து' என்று அழைக்க வேண்டும். இந்த குறுக்கீடு சப்ரூட்டீன் A, X மற்றும் Y பதிவு உள்ளடக்கங்களை அடுக்கிற்கு தள்ள வேண்டும். சப்ரூட்டினின் மையப்பகுதி செயல்படுத்தப்பட்ட பிறகு, A, X, மற்றும் Y பதிவேடுகளின் உள்ளடக்கங்கள் சப்ரூட்டினை நிறைவு செய்வதன் மூலம் அடுக்கிலிருந்து அவற்றின் பதிவேடுகளுக்கு இழுக்கப்பட வேண்டும். வழக்கமான கடைசி அறிக்கை RTI ஆகும். ஆர்டிஐ காரணமாக பிசி உள்ளடக்கம் தானாக ஸ்டேக்கிலிருந்து பிசிக்கு இழுக்கப்படுகிறது.

சப்ரூட்டின் மற்றும் குறுக்கீடு சேவை வழக்கத்தின் ஒப்பீடு மற்றும் மாறுபாடு
பின்வரும் அட்டவணை சப்ரூட்டின் மற்றும் குறுக்கீடு சேவை வழக்கத்தை ஒப்பிட்டு வேறுபடுத்துகிறது:

4.17 6502 முக்கிய முகவரி முறைகளின் சுருக்கம்

6502க்கான ஒவ்வொரு அறிவுறுத்தலும் ஒரு பைட் ஆகும், அதைத் தொடர்ந்து பூஜ்ஜியம் அல்லது அதற்கு மேற்பட்ட செயல்கள்.

உடனடி முகவரி முறை
உடனடி முகவரி பயன்முறையில், operand க்குப் பிறகு, மதிப்பு நினைவக முகவரி அல்ல. மதிப்புக்கு முன் # இருக்க வேண்டும். மதிப்பு ஹெக்ஸாடெசிமலில் இருந்தால் “#” ஐத் தொடர்ந்து “$” இருக்க வேண்டும். 65C02க்கான உடனடி முகவரி வழிமுறைகள்: ADC, மற்றும், BIT, CMP, CPX, CPY, EOR, LDA, LDX, LDY, ORA, SBC. இந்த அத்தியாயத்தில் விளக்கப்படாத இங்கே பட்டியலிடப்பட்டுள்ள வழிமுறைகளை எவ்வாறு பயன்படுத்துவது என்பதை அறிய, வாசகர் 65C02 µPக்கான ஆவணங்களைப் பார்க்க வேண்டும். ஒரு எடுத்துக்காட்டு அறிவுறுத்தல்:

LDA #$77

முழுமையான முகவரி முறை
முழுமையான முகவரி முறையில், ஒரு இயக்கமுறை உள்ளது. இந்த ஓபராண்ட் நினைவகத்தில் உள்ள மதிப்பின் முகவரி (பொதுவாக ஹெக்ஸாடெசிமல் அல்லது லேபிளில்). 64K உள்ளன 10 = 65,536 10 6502 µP க்கான நினைவக முகவரிகள். பொதுவாக, ஒரு பைட் மதிப்பு இந்த முகவரிகளில் ஒன்றில் இருக்கும். 65C02க்கான முழுமையான முகவரி வழிமுறைகள்: ADC, மற்றும், ASL, BIT, CMP, CPX, CPY, DEC, EOR, INC, JMP, JSR, LDA, LDX, LDY, LSR, ORA, ROL, ROR, SBC, STA , STX, STY, STZ, TRB, TSB. இங்கே பட்டியலிடப்பட்டுள்ள வழிமுறைகளையும், இந்த அத்தியாயத்தில் விளக்கப்படாத மற்ற முகவரி முறைகளையும் எவ்வாறு பயன்படுத்துவது என்பதை அறிய, 65C02 µPக்கான ஆவணங்களை வாசகர் பார்வையிட வேண்டும். ஒரு எடுத்துக்காட்டு அறிவுறுத்தல்:

அவை $1234

மறைமுகமான முகவரி முறை
மறைமுகமான முகவரி முறையில், ஓபராண்ட் இல்லை. சம்பந்தப்பட்ட எந்த µP பதிவும் அறிவுறுத்தலால் குறிக்கப்படுகிறது. 65C02 க்கான மறைமுகமான முகவரி வழிமுறைகள்: BRK, CLC, CLD, CLI, CLV, DEX, DEY, INX, INY, NOP, PHA, PHP, PHX, PHY, PLA, PLP, PLX, PLY, RTI, RTS, SEC , SED, SEI, TAX, TAY, TSX, TXA, TXS, TYA. ஒரு எடுத்துக்காட்டு அறிவுறுத்தல்:

DEX : X பதிவேட்டை ஒரு யூனிட் மூலம் குறைக்கவும்.

உறவினர் முகவரி முறை
உறவினர் முகவரி முறையானது கிளை வழிமுறைகளை மட்டுமே கையாள்கிறது. உறவினர் முகவரி முறையில், ஒரே ஒரு செயலி மட்டுமே உள்ளது. இது -128 இலிருந்து ஒரு மதிப்பு 10 +127 10 . இந்த மதிப்பு ஆஃப்செட் என்று அழைக்கப்படுகிறது. குறியின் அடிப்படையில், இந்த மதிப்பு நிரல் கவுண்டரின் அடுத்த அறிவுறுத்தலில் இருந்து சேர்க்கப்படுகிறது அல்லது கழிக்கப்படுகிறது, இதனால் உத்தேசித்துள்ள அடுத்த அறிவுறுத்தலின் முகவரி கிடைக்கும். தொடர்புடைய முகவரி முறை வழிமுறைகள்: BCC, BCS, BEQ, BMI, BNE, BPL, BRA, BVC, BVS. அறிவுறுத்தல் எடுத்துக்காட்டுகள்:

BNE $7F : (நிலைப் பதிவேட்டில் Z = 0 எனில் கிளை, P)

இது தற்போதைய நிரல் கவுண்டரில் 127 ஐச் சேர்த்து (செயல்படுத்த வேண்டிய முகவரி) மற்றும் அந்த முகவரியில் உள்ள வழிமுறைகளை செயல்படுத்தத் தொடங்குகிறது. இதேபோல்:

BEQ $F9 : (கிளை என்றால் Z = : நிலைப் பதிவேட்டில், P)

இது தற்போதைய நிரல் கவுண்டரில் -7 ஐ சேர்க்கிறது மற்றும் புதிய நிரல் கவுண்டர் முகவரியில் செயல்படுத்தலைத் தொடங்குகிறது. ஓபராண்ட் என்பது இரண்டின் நிரப்பு எண்.

முழுமையான குறியீட்டு முகவரி
முழுமையான குறியீட்டு முகவரியில், கொடுக்கப்பட்ட முழுமையான முகவரியில் X அல்லது Y பதிவேட்டின் உள்ளடக்கம் சேர்க்கப்படும் (எங்கும் $0000 முதல் $FFFF வரை, அதாவது 0 இலிருந்து 10 65536க்கு 10 ) உண்மையான முகவரியைக் கொண்டிருக்க வேண்டும். இந்த முழுமையான முகவரி அடிப்படை முகவரி என்று அழைக்கப்படுகிறது. X பதிவேடு பயன்படுத்தப்பட்டால், சட்டசபை அறிவுறுத்தல் இது போன்றது:

LDA $C453,X

Y பதிவேடு பயன்படுத்தப்பட்டால், இது போன்றது:

LDA $C453,Y

X அல்லது Y பதிவேட்டின் மதிப்பு எண்ணிக்கை அல்லது குறியீட்டு மதிப்பு என்று அழைக்கப்படுகிறது, மேலும் அது $00 (0) இலிருந்து எங்கும் இருக்கலாம் 10 ) முதல் $FF (250 10 ) இது ஆஃப்செட் என்று அழைக்கப்படவில்லை.

முழுமையான குறியீட்டு முகவரிக்கான வழிமுறைகள்: ADC, AND, ASL (X மட்டும்), BIT (அக்முலேட்டர் மற்றும் நினைவகத்துடன், X மட்டும்), CMP, DEC (நினைவகம் மற்றும் X மட்டும்), EOR, INC (நினைவகம் மற்றும் X மட்டும்), LDA , LDX, LDY, LSR (X மட்டும்), ORA, ROL (X மட்டும்), ROR (X மட்டும்), SBC, STA, STZ (X மட்டும்).

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

ஜேஎம்பி ($3456)

அடைப்புக்குறிக்குள், மற்றும் $13 என்பது $3456 என்ற முகவரியில் உள்ளது, $EB என்பது $3457 (= $3456 + 1) என்ற முகவரி இடத்தில் உள்ளது. பின்னர், இலக்கு முகவரி $13EB மற்றும் $13EB என்பது சுட்டிக்காட்டி. 34 குறைந்த பைட் மற்றும் 56 அதிக பைட் ஆகும்.

4.18 6502 µP சட்டசபை மொழியுடன் ஒரு சரத்தை உருவாக்குதல்

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

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

உதாரணமாக, 'நான் உன்னை காதலிக்கிறேன்!' மேற்கோள்கள் இல்லாத சரம். இங்கு நீளம் 11; ஒரு இடம் ஒரு ASCII பைட்டாக (எழுத்து) கணக்கிடப்படுகிறது. முதல் எழுத்து $0300 என்ற முகவரியுடன் நினைவகத்தில் சரம் வைக்கப்பட வேண்டும் என்று வைத்துக்கொள்வோம்.

முதல் பைட் 11 ஆக இருக்கும் போது பின்வரும் அட்டவணை சர நினைவக அமைப்பைக் காட்டுகிறது 10 = 0B 16 :

முதல் பைட் “I” ஆகவும் கடைசி பைட் பூஜ்யமாகவும் ($00) இருக்கும் போது பின்வரும் அட்டவணை சரம் நினைவக அமைப்பைக் காட்டுகிறது:

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

அவற்றின் விலை $0300

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

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

4.19 6502 µP அசெம்பிளி மொழியுடன் ஒரு வரிசையை உருவாக்குதல்

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

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

4.20 சிக்கல்கள்

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

  1. 6502 µP க்கு $0200 இல் தொடங்கி 2A94 கையொப்பமிடப்படாத எண்களைச் சேர்க்கும் ஒரு சட்டசபை மொழி நிரலை எழுதவும். எச் (சேர்க்கவும்) 2ABF க்கு எச் (ஆஜெண்ட்). உள்ளீடுகள் மற்றும் வெளியீடு நினைவகத்தில் இருக்கட்டும். மேலும், கூடியிருந்த நிரல் ஆவணத்தை கையால் தயாரிக்கவும்.
  2. 6502 µP க்கு $0200 இல் தொடங்கி கையொப்பமிடப்படாத 1569 எண்களைக் கழிக்கும் ஒரு சட்டசபை மொழி நிரலை எழுதவும். எச் (சப்ட்ராஹெண்ட்) 2ABF இலிருந்து எச் (சிறியது). உள்ளீடுகள் மற்றும் வெளியீடுகள் நினைவகத்தில் இருக்கட்டும். மேலும், கூடியிருந்த நிரல் ஆவணத்தை கையால் தயாரிக்கவும்.
  3. லூப்பைப் பயன்படுத்தி $00 முதல் $09 வரை கணக்கிடப்படும் 6502 µP க்கு ஒரு சட்டசபை மொழி நிரலை எழுதவும். நிரல் $0200 இல் தொடங்க வேண்டும். மேலும், கூடியிருந்த நிரல் ஆவணத்தை கையால் தயாரிக்கவும்.
  4. 6502 µPக்கு $0200 இல் தொடங்கும் ஒரு சட்டசபை மொழி நிரலை எழுதவும். நிரல் இரண்டு துணை நிரல்களைக் கொண்டுள்ளது. முதல் சப்ரூட்டின் 0203 இன் கையொப்பமிடப்படாத எண்களைச் சேர்க்கிறது எச் (augend) மற்றும் 0102H (சேர்க்கவும்). இரண்டாவது சப்ரூட்டீன் முதல் சப்ரூட்டினிலிருந்து 0305H முதல் 0006 வரையிலான தொகையைச் சேர்க்கிறது. எச் (ஆஜெண்ட்). இறுதி முடிவு நினைவகத்தில் சேமிக்கப்படுகிறது. முதல் சப்ரூட்டினை FSTSUB என்றும் இரண்டாவது சப்ரூட்டினை SECSUB என்றும் அழைக்கவும். உள்ளீடுகள் மற்றும் வெளியீடுகள் நினைவகத்தில் இருக்கட்டும். மேலும், முழு நிரலுக்காகவும் கூடியிருந்த நிரல் ஆவணத்தை கையால் தயாரிக்கவும்.
  5. கொடுக்கப்பட்ட ஒரு IRQ ஹேண்ட்லர் $02 முதல் $01 வரை குவிப்பானில் முக்கிய கையாளுதலாக சேர்க்கிறார் என்எம்ஐ வெளியிடப்பட்டது மற்றும் முக்கிய கையாளுதல் என்எம்ஐ திரட்டியில் $05 முதல் $04 வரை சேர்க்கிறது, இரு கையாளுபவர்களுக்கும் அவர்களின் அழைப்புகள் உட்பட ஒரு சட்டசபை மொழியை எழுதுங்கள். என்ற அழைப்பு IRQ கையாளுபவர் $0200 என்ற முகவரியில் இருக்க வேண்டும். தி IRQ கையாளுபவர் $0300 என்ற முகவரியில் தொடங்க வேண்டும். தி என்எம்ஐ கையாளுபவர் $0400 என்ற முகவரியில் தொடங்க வேண்டும். இதன் விளைவு IRQ கையாளுபவர் $0500 என்ற முகவரியில் வைக்கப்பட வேண்டும், அதன் முடிவு என்எம்ஐ கையாளுபவர் $0501 என்ற முகவரியில் வைக்கப்பட வேண்டும்.
  6. 65C02 கணினியில் மென்பொருள் குறுக்கீட்டை உருவாக்க BRK அறிவுறுத்தல் எவ்வாறு பயன்படுத்தப்படுகிறது என்பதை சுருக்கமாக விளக்கவும்.
  7. ஒரு சாதாரண சப்ரூட்டினை குறுக்கீடு சேவை வழக்கத்துடன் ஒப்பிட்டு வேறுபடுத்தும் அட்டவணையை உருவாக்கவும்.
  8. 65C02 µP இன் முக்கிய முகவரி முறைகளை அசெம்பிளி மொழி அறிவுறுத்தல் எடுத்துக்காட்டுகளுடன் சுருக்கமாக விளக்கவும்.
  9. அ) 'ஐ லவ் யூ!' என்று எழுத 6502 இயந்திர மொழி நிரலை எழுதவும். நினைவகத்தில் உள்ள ASCII குறியீடுகளின் சரம், சரத்தின் நீளத்துடன் $0300 முகவரியிலிருந்து தொடங்குகிறது. நிரல் $0200 முகவரியில் தொடங்க வேண்டும். ஒவ்வொரு எழுத்தையும் திரட்டியிலிருந்து ஒவ்வொன்றாகப் பெறுங்கள், அவை சில சப்ரூட்டின் மூலம் அங்கு அனுப்பப்படுகின்றன என்று வைத்துக் கொள்ளுங்கள். மேலும், நிரலை கைமுறையாக இணைக்கவும். ('ஐ லவ் யூ!' என்பதற்கான ASCII குறியீடுகளை நீங்கள் தெரிந்து கொள்ள வேண்டும் என்றால். அவை இதோ: 'I':49 16 , இடம் : 20 16 , 'எல்': 6C 16 , ‘o’:6F 16 , 'in':76 16 , 'e':65, 'y':79 16 , 'in':75 16 , மற்றும் ‘!’:21 16 (குறிப்பு: ஒவ்வொரு குறியீடும் 1 பைட்டை ஆக்கிரமித்துள்ளது).
    b) 'ஐ லவ் யூ!' என்று எழுத 6502 இயந்திர மொழி நிரலை எழுதவும். நினைவகத்தில் உள்ள ASCII குறியீடுகளின் சரம், சரத்தின் நீளம் இல்லாமல் $0300 முகவரியிலிருந்து தொடங்கி 00 இல் முடிவடையும் 16 . நிரல் $0200 முகவரியில் தொடங்க வேண்டும். ஒவ்வொரு எழுத்தையும் திரட்டியிலிருந்து பெறவும், அவை ஒவ்வொன்றாக, சில சப்ரூட்டின் மூலம் அங்கு அனுப்பப்படுகின்றன என்று வைத்துக் கொள்ளுங்கள். மேலும், நிரலை கைமுறையாக இணைக்கவும்.