অ্যাসেম্বলি ল্যাঙ্গুয়েজ ইন্সট্রাকশন
অ্যাসেম্বলি ল্যাঙ্গুয়েজ হল একটি লো-লেভেল প্রোগ্রামিং ভাষা যা কম্পিউটারের হার্ডওয়্যার (প্রসেসর) এর নির্দেশনা সেটের সাথে সরাসরি সম্পর্কিত। এটি মানব-বান্ধব লেভেল কোডে কম্পিউটার প্রোগ্রাম তৈরি করতে সাহায্য করে, তবে এটি মেশিন ল্যাঙ্গুয়েজের তুলনায় কিছুটা বেশি পাঠযোগ্য। অ্যাসেম্বলি ভাষায় প্রতিটি কমান্ড বা ইন্সট্রাকশন একটি নির্দিষ্ট মেশিন ল্যাঙ্গুয়েজ কমান্ডের প্রতীকী রূপ (mnemonic) হয়।
অ্যাসেম্বলি ল্যাঙ্গুয়েজ ইন্সট্রাকশনগুলি সাধারণত CPU এর ডাটা প্রক্রিয়াকরণের জন্য ব্যবহৃত হয় এবং এগুলি নির্দিষ্ট প্রসেসরের নির্দেশনা সেটের উপর নির্ভর করে।
অ্যাসেম্বলি ল্যাঙ্গুয়েজ ইন্সট্রাকশনের উপাদান:
- ম্নেমনিক (Mnemonic): এটি কমান্ডের পাঠযোগ্য রূপ, যেমন
ADD,MOV,SUB, ইত্যাদি। এগুলি মেশিন ল্যাঙ্গুয়েজ কোডের প্রতীক। - অপারেন্ড (Operand): এটি সেই ডাটা বা রেজিস্টার যার সাথে অপারেশনটি সম্পাদন করতে হবে। উদাহরণস্বরূপ,
R1,R2রেজিস্টার বা মেমোরি অ্যাড্রেস হতে পারে।
অ্যাসেম্বলি ল্যাঙ্গুয়েজ ইন্সট্রাকশনগুলির উদাহরণ:
১. MOV ইন্সট্রাকশন
MOV ইন্সট্রাকশন ব্যবহার করে একটি রেজিস্টারে ডাটা স্থানান্তর করা হয়। এটি সাধারণত ডাটা এক রেজিস্টার থেকে অন্য রেজিস্টারে অথবা মেমোরি থেকে রেজিস্টারে স্থানান্তরের জন্য ব্যবহৃত হয়।
উদাহরণ:
MOV R1, 5 ; R1 রেজিস্টারে ৫ মান স্থাপন করা
MOV R2, R1 ; R2 রেজিস্টারে R1 এর মান (৫) স্থানান্তর করাএই উদাহরণে:
- প্রথম কমান্ড
MOV R1, 5রেজিস্টার R1 তে সংখ্যা ৫ রাখছে। - দ্বিতীয় কমান্ড
MOV R2, R1রেজিস্টার R2 তে R1 এর মান (৫) রাখছে।
২. ADD ইন্সট্রাকশন
ADD ইন্সট্রাকশন দুটি রেজিস্টারের মান যোগ করতে ব্যবহৃত হয়।
উদাহরণ:
ADD R1, R2, R3 ; R1 = R2 + R3এই উদাহরণে:
ADDইন্সট্রাকশন R2 এবং R3 এর মান যোগ করে R1 তে ফলাফল রাখবে।
৩. SUB ইন্সট্রাকশন
SUB ইন্সট্রাকশন দুটি রেজিস্টারের মধ্যে বিয়োগ করতে ব্যবহৃত হয়।
উদাহরণ:
SUB R1, R2, R3 ; R1 = R2 - R3এখানে:
SUBইন্সট্রাকশন R2 থেকে R3 বিয়োগ করে R1 তে ফলাফল রাখবে।
৪. MUL ইন্সট্রাকশন
MUL ইন্সট্রাকশন দুটি রেজিস্টারের মধ্যে গুণ করতে ব্যবহৃত হয়।
উদাহরণ:
MUL R1, R2, R3 ; R1 = R2 * R3এখানে:
MULইন্সট্রাকশন R2 এবং R3 এর গুণফল R1 তে রাখবে।
৫. DIV ইন্সট্রাকশন
DIV ইন্সট্রাকশন দুটি রেজিস্টারের মধ্যে ভাগ করতে ব্যবহৃত হয়।
উদাহরণ:
DIV R1, R2, R3 ; R1 = R2 / R3এখানে:
DIVইন্সট্রাকশন R2 কে R3 দিয়ে ভাগ করে R1 তে ফলাফল রাখবে।
৬. CMP ইন্সট্রাকশন
CMP ইন্সট্রাকশন দুটি রেজিস্টারের মধ্যে তুলনা করতে ব্যবহৃত হয়, এবং ফলস্বরূপ ফ্ল্যাগ সেট করে।
উদাহরণ:
CMP R1, R2 ; R1 এবং R2 এর তুলনা করে ফ্ল্যাগ সেট করাএখানে:
CMPইন্সট্রাকশন R1 এবং R2 তুলনা করবে এবং ফলস্বরূপ ফ্ল্যাগ রেজিস্টার আপডেট করবে, যা পরবর্তীতে জাম্প ইন্সট্রাকশন (যেমনJZ,JNZ) দ্বারা ব্যবহৃত হতে পারে।
৭. JMP ইন্সট্রাকশন
JMP ইন্সট্রাকশন কম্পিউটারকে একটি নির্দিষ্ট অ্যাড্রেসে জাম্প করতে বলে, যা সাধারণত লুপ বা শাখার জন্য ব্যবহৃত হয়।
উদাহরণ:
JMP 1000 ; প্রোগ্রাম কাউন্টার ১০০০ অ্যাড্রেসে জাম্প করবেএখানে:
JMPইন্সট্রাকশন প্রোগ্রাম কাউন্টার কে নতুন অ্যাড্রেস ১০০০ তে রিডাইরেক্ট করবে।
৮. NOP ইন্সট্রাকশন
NOP (No Operation) ইন্সট্রাকশন কোনো কার্যকলাপ সম্পাদন না করে, বরং শুধু এক সাইকেল অপারেট করে। এটি সাধারণত ডিবাগিং বা টাইমিং এর জন্য ব্যবহৃত হয়।
উদাহরণ:
NOP ; কোনো অপারেশন সম্পাদন না করে পরবর্তী ইনস্ট্রাকশনে চলে যাবে৯. PUSH এবং POP ইন্সট্রাকশন
PUSH এবং POP ইন্সট্রাকশন স্ট্যাকের সাথে সম্পর্কিত। PUSH ডাটা স্ট্যাকের শীর্ষে রাখে এবং POP স্ট্যাকের শীর্ষ থেকে ডাটা বের করে।
উদাহরণ:
PUSH R1 ; R1 এর মান স্ট্যাকের শীর্ষে পুশ করবে
POP R2 ; স্ট্যাকের শীর্ষ থেকে মানটি R2 তে পপ করবেসারসংক্ষেপ
| ইন্সট্রাকশন | কাজ |
|---|---|
| MOV | একটি রেজিস্টারে ডাটা স্থানান্তর করা |
| ADD | দুটি রেজিস্টারের মান যোগ করা |
| SUB | দুটি রেজিস্টারের মান বিয়োগ করা |
| MUL | দুটি রেজিস্টারের মান গুণ করা |
| DIV | দুটি রেজিস্টারের মান ভাগ করা |
| CMP | দুটি রেজিস্টারের মধ্যে তুলনা করা |
| JMP | প্রোগ্রাম কাউন্টারকে নির্দিষ্ট অ্যাড্রেসে জাম্প করা |
| NOP | কোনো অপারেশন না করে পরবর্তী ইনস্ট্রাকশনে চলে যাওয়া |
| PUSH/POP | স্ট্যাকের শীর্ষে ডাটা পুশ বা পপ করা |
অ্যাসেম্বলি ল্যাঙ্গুয়েজ ইন্সট্রাকশনগুলি কম্পিউটার বা মাইক্রোকন্ট্রোলার এর বিভিন্ন কাজ সম্পাদনের জন্য ব্যবহৃত হয়, যেমন গণনা, মেমোরি অ্যাক্সেস, এবং সিস্টেম ফাংশন কল।