PUSH এবং POP নির্দেশনাগুলি Assembly Language প্রোগ্রামিংয়ে স্ট্যাক ব্যবস্থাপনার জন্য ব্যবহৃত হয়। স্ট্যাক একটি লাস্ট-ইন-ফার্স্ট-আউট (LIFO) ডেটা স্ট্রাকচার, যেখানে ডেটা প্রথমে সংরক্ষণ করা হয় এবং পরে পুনরুদ্ধার করা হয়। স্ট্যাক ব্যবস্থাপনা কার্যকরভাবে ফাংশন কল এবং লোকাল ভেরিয়েবল ব্যবস্থাপনার জন্য অপরিহার্য।
PUSH Instruction:
- সংজ্ঞা: PUSH নির্দেশনা রেজিস্টার বা মেমোরির মানকে স্ট্যাকে সংরক্ষণ করে এবং স্ট্যাক পয়েন্টার (ESP) আপডেট করে। এটি স্ট্যাকের টপে ডেটা সংরক্ষণ করে।
- কাজের প্রক্রিয়া:
- ESP রেজিস্টারের মান কমানো হয় (ESP = ESP - 4)।
- ESP রেজিস্টারের নতুন মান নির্দেশিত ঠিকানায় ডেটা সংরক্ষণ করা হয়।
উদাহরণ:
PUSH AX ; AX রেজিস্টারের ডেটা স্ট্যাকে সংরক্ষণ PUSH [1234h] ; 1234h ঠিকানার ডেটা স্ট্যাকে সংরক্ষণ
POP Instruction:
- সংজ্ঞা: POP নির্দেশনা স্ট্যাক থেকে ডেটা পুনরুদ্ধার করে এবং নির্দিষ্ট রেজিস্টার বা মেমোরি লোকেশনে লোড করে। এটি স্ট্যাক পয়েন্টার (ESP) আপডেট করে।
- কাজের প্রক্রিয়া:
- ESP রেজিস্টারের মান নির্দেশিত ঠিকানা থেকে ডেটা পুনরুদ্ধার করা হয়।
- ESP রেজিস্টারের মান বাড়ানো হয় (ESP = ESP + 4)।
উদাহরণ:
POP BX ; স্ট্যাকের টপ থেকে ডেটা BX রেজিস্টারে স্থানান্তর POP [1234h] ; স্ট্যাকের টপ থেকে ডেটা 1234h ঠিকানায় স্থানান্তর
স্ট্যাক ব্যবস্থাপনার ব্যবহার
ফাংশন কল এবং রিটার্ন:
- PUSH এবং POP নির্দেশনা সাধারণত ফাংশন কলের সময় ব্যবহৃত হয়। যখন একটি ফাংশন কল করা হয়, তখন ফাংশনের প্যারামিটার এবং রিটার্ন অ্যাড্রেস PUSH নির্দেশনা ব্যবহার করে স্ট্যাকে সংরক্ষণ করা হয়। ফাংশন শেষে POP নির্দেশনা ব্যবহার করে স্ট্যাক থেকে ডেটা পুনরুদ্ধার করা হয়।
লোকাল ভেরিয়েবল ব্যবস্থাপনা:
- ফাংশন কলের সময় লোকাল ভেরিয়েবল সংরক্ষণ এবং পুনরুদ্ধারের জন্য স্ট্যাক ব্যবহৃত হয়। PUSH নির্দেশনা ব্যবহার করে লোকাল ভেরিয়েবল সংরক্ষণ করা হয় এবং POP নির্দেশনা ব্যবহার করে সেই ভেরিয়েবল পুনরুদ্ধার করা হয়।
ইন্টারাপ্ট হ্যান্ডলিং:
- ইন্টারাপ্ট হ্যান্ডলারগুলি সাধারণত বর্তমান প্রসেসরের রেজিস্টার মানগুলি স্ট্যাকে সংরক্ষণ করতে PUSH নির্দেশনা ব্যবহার করে, যাতে প্রসেসটি পুনরুদ্ধার করার সময় সঠিকভাবে পুনঃস্থাপন করা যায়। ইন্টারাপ্ট শেষে POP নির্দেশনা ব্যবহার করে রেজিস্টার মানগুলি পুনরুদ্ধার করা হয়।
উদাহরণ: PUSH এবং POP ব্যবহার করে স্ট্যাক ম্যানেজমেন্ট
section .text
global _start
_start:
MOV AX, 5 ; AX রেজিস্টারে ৫ লোড করা
PUSH AX ; AX এর মান স্ট্যাকে সংরক্ষণ করা
MOV BX, 10 ; BX রেজিস্টারে ১০ লোড করা
PUSH BX ; BX এর মান স্ট্যাকে সংরক্ষণ করা
POP CX ; স্ট্যাক থেকে মান পুনরুদ্ধার করে CX-এ লোড করা (BX এর মান)
POP DX ; স্ট্যাক থেকে মান পুনরুদ্ধার করে DX-এ লোড করা (AX এর মান)
; এখন CX = 10 এবং DX = 5সারসংক্ষেপ
PUSH এবং POP নির্দেশনাগুলি Assembly Language-এ স্ট্যাক ব্যবস্থাপনার জন্য অপরিহার্য। এগুলি ফাংশন কল, লোকাল ভেরিয়েবল সংরক্ষণ, এবং ইন্টারাপ্ট হ্যান্ডলিংয়ে গুরুত্বপূর্ণ ভূমিকা পালন করে। PUSH নির্দেশনা স্ট্যাকে ডেটা সংরক্ষণ করে এবং POP নির্দেশনা স্ট্যাক থেকে ডেটা পুনরুদ্ধার করে, যা প্রোগ্রামের কার্যপ্রবাহ সঠিকভাবে বজায় রাখতে সাহায্য করে।
Read more