ইন্টারাপ্টের সময় রেজিস্টার সুরক্ষাকরণ বর্ণনা
(Describe the Register Protection During Interrupt)

এটি Interrupt handler বা রুটিনে একটি অত্যন্ত গুরুত্বপূর্ণ নিয়ম হলো ইন্টারাপ্ট সূচিত হওয়ার সময় যে অবস্থায় ছিল ত্যাগ করার সময় প্রসেসরকে অবশ্যই একই অবস্থায় থাকতে হবে। অর্থাৎ যদি কোন ইন্টারাপ্ট রেজিস্টার (যথা, একুমুলেটর) ব্যবহার করে, তবে এটি অবশ্যই নিশ্চিত করতে হবে যে, রেজিস্টারের মান ইন্টারাপ্ট শুরুতে যা ছিল শেষেও তাই থাকে। ইন্টারাপ্ট রুটিন সম্পাদনকালে অনেক সময় (বিশেষ করে MOV নির্দেশনায় রেজিস্টার মান পরিবর্তন হয়ে যায়। সাধারণত ইন্টারাপ্ট সময় স্ট্যাক (stack) এ PUSH ও POP অনুক্রম দ্বারা রেজিস্টারের মানকে সুরক্ষা করা হয়। ইন্টারাপ্ট রুটিনকে নিম্নবর্ণিত রেজিস্টারসমূহকে অবশ্যই সুরক্ষা করতে হবে-

1. PSW

2. PSW

3. B

4. DPTR (DPH/DPL)

5. ACC

6. Registers RO-R7

এখানে, PSW রেজিস্টারে অনেক স্বতন্ত্র বিট আছে, যাদেরকে 8051 এর বিভিন্ন নির্দেশনা দ্বারা সেট করা যায়। সেক্ষেত্রে ইন্টারান্টের শুরুতে এবং শেষে Stack এ Pushing ও Popping করে PSW রেজিস্টারকে সর্বদা সুরক্ষা করা একটি উত্তম পরিকল্পনা।

PUSH RO কোডটিকে অধিকাংশ অ্যাসেম্বলার বিবেচনা করে না। কারণ RO কোন গ্রহণযোগ্য ঠিকানা নয়, যাতে PUSH ও.POP নির্দেশনা ব্যবহার করা যায়। RO অভ্যন্তরীণ মেমোরি ঠিকানা 00h, 08h, 10h বা 18 কে অর্পণ করতে পারে (refer)। তাই ইন্টারাপ্ট রুটিনে কোন 'R' রেজিস্টার ব্যবহার হলে একে স্ট্যাকে পরম ঠিকানা (absolute address) তে PUSH করতে হয়। তাই PUSH RO এর পরিবর্তে PUSH 00h সম্পাদন করা হয়। তবে এটি default রেজিস্টারের ক্ষেত্রে প্রযোজ্য। যদি বিকল্প রেজিস্টার নির্বাচন করা হয়, তবে এঐ রেজিস্টারের সঙ্গতিপূর্ণ ঠিকানায় PUSH করতে হবে।