Assembly Language প্রোগ্রামিংয়ে ইনস্ট্রাকশন এবং সিনট্যাক্স সম্পর্কে সঠিক ধারণা থাকা প্রয়োজন, কারণ এটি সরাসরি প্রসেসরের সাথে কাজ করে। Assembly Instructions হল কম্পিউটারের CPU-কে কী কাজ করতে হবে তা নির্দেশ দেয়, আর Syntax নির্দেশনাগুলিকে সঠিকভাবে লেখার নিয়ম নির্ধারণ করে।
Assembly Instructions:
Assembly Language-এ বিভিন্ন ধরনের ইনস্ট্রাকশন রয়েছে, যা CPU-তে বিভিন্ন অপারেশন সম্পাদন করতে ব্যবহৃত হয়:
MOV: ডেটা একটি স্থান থেকে অন্য স্থানে স্থানান্তর করে।
MOV AX, 5 ; AX রেজিস্টারে ৫ রাখে
MOV BX, AX ; BX রেজিস্টারে AX-এর মান কপি করে
ADD: দুই মান যোগ করে এবং ফলাফল গন্তব্য রেজিস্টারে রাখে।
ADD AX, BX ; AX এবং BX-এর মান যোগ করে AX-এ ফল রাখে
SUB: এক মান থেকে আরেক মান বিয়োগ করে।
SUB AX, 1 ; AX থেকে ১ বিয়োগ করে
AND: দুটি বিটের লজিক্যাল AND অপারেশন করে।
AND AX, 0x0F ; AX-এর সাথে 0x0F AND করে
OR: লজিক্যাল OR অপারেশন করে।
OR AX, BX ; AX এবং BX-এর বিটগুলিতে OR অপারেশন করে
CMP: দুটি মান তুলনা করে এবং ফলাফলের ভিত্তিতে ফ্ল্যাগ সেট করে।
CMP AX, BX ; AX এবং BX তুলনা করে
JMP: নির্দিষ্ট ঠিকানায় জাম্প করে।
JMP label ; 'label' লেবেলে জাম্প করে
JE: ফলাফল শূন্য হলে জাম্প করে।
JE label ; ZF (Zero Flag) সেট থাকলে 'label'-এ জাম্প করে
PUSH: স্ট্যাকে ডেটা রাখে।
PUSH AX ; AX রেজিস্টারের মান স্ট্যাকে রাখে
POP: স্ট্যাক থেকে ডেটা বের করে।
POP BX ; স্ট্যাক থেকে মান নিয়ে BX-এ রাখে
Assembly Syntax:
Assembly Language-এর Syntax-এর মাধ্যমে নির্দেশনাগুলি সঠিকভাবে লেখা হয়। কিছু সাধারণ নিয়ম:
MOV AX, BX
Assembly কোডে মন্তব্য যোগ করতে ;
ব্যবহার করা হয়।
MOV AX, 5 ; AX-এ ৫ রাখে
লেবেল প্রোগ্রামের বিভিন্ন অংশ চিহ্নিত করতে ব্যবহৃত হয়।
start:
MOV AX, 1
JMP end
end:
NOP ; কোনো কাজ করে না
অপারেন্ড টাইপ:
Assembly Language-এ অপারেন্ড বিভিন্ন ধরনের হতে পারে:
Immediate Operand: সরাসরি মান ব্যবহার করা হয়।
MOV AX, 10 ; AX-এ সরাসরি ১০ রাখে
Register Operand: রেজিস্টার থেকে ডেটা ব্যবহার করা হয়।
MOV BX, AX ; BX-এ AX-এর মান কপি করে
Memory Operand: মেমোরি লোকেশন থেকে ডেটা ব্যবহার করা হয়।
MOV AX, [1234h] ; মেমোরি লোকেশন 1234h থেকে ডেটা AX-এ রাখে
সারসংক্ষেপ
Assembly Instructions এবং Syntax সঠিকভাবে বোঝা প্রোগ্রামারদের CPU-র কাজের প্রবাহ নিয়ন্ত্রণ করতে এবং ডেটা প্রসেসিং সহজ করতে সহায়তা করে। প্রোগ্রামিংয়ের সময় ইনস্ট্রাকশন ফর্ম্যাট, কমেন্টস, লেবেল, এবং অপারেন্ড টাইপের ব্যবহার Assembly Language-এ কার্যকর প্রোগ্রাম তৈরি করতে গুরুত্বপূর্ণ ভূমিকা পালন করে।
Data Movement Instructions:
MOV: একটি উৎস থেকে গন্তব্যে ডেটা স্থানান্তর।
MOV AX, BX ; BX এর ডেটা AX-এ স্থানান্তর করা।
Arithmetic Instructions:
ADD: দুই অপারেন্ডের যোগফল।
ADD AX, 10 ; AX-এ ১০ যোগ করা।
Logical Instructions:
AND: বিটওয়াইস AND অপারেশন।
AND AX, BX ; AX এবং BX এর বিটওয়াইস AND।
Control Instructions:
JMP: নির্দিষ্ট ঠিকানায় সরাসরি জাম্প করা।
JMP START ; START লেবেলে সরাসরি লাফ দেওয়া।
Instruction Type | Function | Examples |
---|---|---|
Data Movement | ডেটা স্থানান্তর | MOV, PUSH, POP |
Arithmetic | গণিতের মৌলিক অপারেশন | ADD, SUB, MUL, DIV |
Logical | বিটওয়াইস এবং লজিক্যাল অপারেশন | AND, OR, XOR, NOT |
Control | প্রোগ্রামের প্রবাহ নিয়ন্ত্রণ | JMP, JZ, CALL, RET |
সারসংক্ষেপ
Instruction গুলি চারটি প্রধান ধরণের মধ্যে ভাগ করা যায়: Data Movement, Arithmetic, Logical, এবং Control। Data Movement ডেটা স্থানান্তর করে, Arithmetic গণিত অপারেশন সম্পন্ন করে, Logical বিটওয়াইস অপারেশন পরিচালনা করে, এবং Control প্রোগ্রামের প্রবাহ নিয়ন্ত্রণ করে। এগুলি মিলিতভাবে প্রোগ্রামের কার্যক্রম পরিচালনা এবং CPU-র কাজ সম্পন্ন করতে সহায়তা করে।
Assembly কোডে বিভিন্ন অংশ থাকে, যা কোডের লজিক এবং গঠন বোঝার জন্য গুরুত্বপূর্ণ। এই অংশগুলির মধ্যে Label, Mnemonics এবং Operands প্রধান ভূমিকা পালন করে।
:
) দিয়ে শেষ হয়।উদাহরণ:
START: ; এটি একটি লেবেল
MOV AX, 1
MOV
(ডেটা স্থানান্তর), ADD
(যোগ করা), SUB
(বিয়োগ করা)।উদাহরণ:
MOV AX, BX ; AX রেজিস্টারে BX রেজিস্টারের মান স্থানান্তর করা
ADD AX, 10 ; AX রেজিস্টারে ১০ যোগ করা
উদাহরণ:
MOV AX, 5 ; এখানে ৫ হল Operand
ADD BX, AX ; BX এবং AX উভয়ই Operand
START: ; Label
MOV AX, 5 ; Mnemonic এবং Operand (AX এবং 5)
ADD AX, 10 ; Mnemonic এবং Operand (AX এবং 10)
JMP START ; Mnemonic এবং Label (START)
START
): এই লেবেলটি নির্দেশ দেয় প্রোগ্রামের নির্দিষ্ট অবস্থানে।MOV
, ADD
, JMP
): এগুলি নির্দেশনা যা CPU-কে নির্দিষ্ট কাজ করতে বলে।AX
, 5
, 10
): এগুলি Mnemonics এর সাথে ব্যবহৃত ডেটা বা রেজিস্টার।Assembly Code এর গঠন প্রধানত তিনটি অংশ নিয়ে গঠিত: Label, Mnemonics, এবং Operands। Label প্রোগ্রামের নির্দিষ্ট স্থানে নির্দেশ করে, Mnemonics নির্দেশনাগুলি CPU-কে কার্যকর করতে বলে এবং Operands ডেটা বা রেজিস্টার হিসেবে ব্যবহৃত হয়।
Assembly Language-এ Addressing Mode নির্দেশ করে CPU কিভাবে অপারেন্ড বা ডেটা অ্যাক্সেস করে। Addressing Modes বিভিন্ন ধরনের হতে পারে, কিন্তু সবচেয়ে সাধারণ তিনটি Addressing Mode হলো Immediate Addressing, Register Addressing, এবং Memory Addressing। নিচে এই Addressing Modes-এর বিস্তারিত ব্যাখ্যা দেওয়া হলো:
উদাহরণ:
MOV AX, 5 ; AX রেজিস্টারে সরাসরি ৫ লোড করা
এখানে 5
হলো Immediate ডেটা, যা সরাসরি AX রেজিস্টারে লোড করা হচ্ছে।
উদাহরণ:
MOV AX, BX ; BX রেজিস্টারের ডেটা AX রেজিস্টারে স্থানান্তর করা
এখানে, BX
থেকে AX
রেজিস্টারে ডেটা স্থানান্তর করা হচ্ছে।
উদাহরণ:
MOV AX, [1234h] ; 1234h মেমোরি অ্যাড্রেস থেকে ডেটা AX রেজিস্টারে লোড করা
এখানে, 1234h
ঠিকানা থেকে ডেটা AX
রেজিস্টারে লোড করা হচ্ছে।
বৈশিষ্ট্য | Immediate Addressing | Register Addressing | Memory Addressing |
---|---|---|---|
অপারেন্ড অবস্থান | অপারেন্ড সরাসরি নির্দেশনায় থাকে। | অপারেন্ড রেজিস্টারে থাকে। | অপারেন্ড মেমোরি অ্যাড্রেসে থাকে। |
গতিসীমা | দ্রুততম, কারণ কোনো মেমোরি অ্যাক্সেস নেই। | দ্রুত, কারণ রেজিস্টার অ্যাক্সেস দ্রুত। | তুলনামূলকভাবে ধীর, কারণ মেমোরি অ্যাক্সেস লাগে। |
মেমোরি ব্যবহারের পরিমাণ | নির্দেশনায় অপারেন্ড থাকে, মেমোরি ব্যবহার হয় না। | রেজিস্টারে অপারেন্ড থাকে, কম মেমোরি ব্যবহৃত হয়। | মেমোরি অ্যাক্সেসের জন্য বেশি সময় এবং স্থান লাগে। |
ব্যবহার ক্ষেত্র | ধ্রুবক মানের ক্ষেত্রে ব্যবহার হয়। | দ্রুত অপারেশন এবং ডেটা প্রসেসিং। | বৃহৎ আকারের ডেটা সংরক্ষণ এবং অ্যাক্সেস। |
Immediate, Register এবং Memory Addressing-এর প্রত্যেকটি Addressing Mode-এর নিজস্ব বৈশিষ্ট্য এবং ব্যবহার ক্ষেত্র রয়েছে। Immediate Addressing দ্রুত এবং সহজ, Register Addressing দ্রুততর এবং কার্যকর, আর Memory Addressing বড় ডেটা অ্যাক্সেসের জন্য উপযোগী।
Assembly Language প্রোগ্রামিংয়ে Syntax এবং Pseudo-instructions অত্যন্ত গুরুত্বপূর্ণ ভূমিকা পালন করে। Syntax হলো Assembly প্রোগ্রামের লেখার নিয়মাবলী এবং Pseudo-instructions হলো এমন নির্দেশনা যা সরাসরি মেশিন কোডে রূপান্তরিত হয় না, তবে অ্যাসেম্বলার প্রোগ্রামকে আরও সহজে লেখার জন্য ব্যবহার করা হয়।
Syntax (Assembly Language এর নিয়মাবলী):
Assembly Language-এর Syntax হলো কোড লেখার নির্দিষ্ট নিয়ম এবং গঠন, যা CPU এবং অ্যাসেম্বলার বুঝতে পারে। সাধারণ Syntax গঠন নিম্নরূপ:
MOV
, ADD
, SUB
ইত্যাদি।Syntax উদাহরণ:
label_name: MOV AX, BX ; AX রেজিস্টারে BX এর ডেটা স্থানান্তর করা
ADD AX, 10 ; AX রেজিস্টারে ১০ যোগ করা
Syntax-এর নিয়মাবলী:
;
ব্যবহার করা হয় এবং এটি লাইনটির বাকি অংশকে উপেক্ষা করে।Pseudo-instructions:
Pseudo-instructions হলো এমন নির্দেশনা যা অ্যাসেম্বলার দ্বারা সরাসরি মেশিন কোডে রূপান্তরিত হয় না, তবে কোড লেখার সময় এটি ব্যবহার করা প্রোগ্রামারদের জন্য সুবিধাজনক। অ্যাসেম্বলার Pseudo-instructions-কে মেশিন কোড নির্দেশনায় পরিবর্তন করে।
Pseudo-instructions উদাহরণ:
EQU: একটি কনস্ট্যান্ট বা নামকে নির্দিষ্ট মান দেওয়ার জন্য ব্যবহৃত হয়।
MAX_LEN EQU 100 ; MAX_LEN নামের একটি কনস্ট্যান্ট তৈরি এবং ১০০ মান সংরক্ষণ
DB, DW, DD: মেমোরিতে ডেটা সংরক্ষণের জন্য ব্যবহৃত হয়।
msg DB 'Hello, World!', 0 ; 'Hello, World!' স্ট্রিং এবং শেষের 0 বাইট সংরক্ষণ
num DW 1234h ; 1234h মান ২-বাইটের ডেটা হিসেবে সংরক্ষণ
সারসংক্ষেপ
Assembly Language প্রোগ্রামিংয়ে সঠিক Syntax ব্যবহারের মাধ্যমে প্রোগ্রামটি কার্যকরী হয়, এবং Pseudo-instructions প্রোগ্রামারদের জন্য কোড লেখা সহজ করে তোলে। Pseudo-instructions সরাসরি মেশিন কোডে রূপান্তরিত না হলেও, অ্যাসেম্বলার এগুলিকে সঠিক নির্দেশনায় রূপান্তর করে। Syntax এবং Pseudo-instructions একসাথে Assembly প্রোগ্রামিংয়ে কার্যক্ষমতা এবং ব্যবহারযোগ্যতা বৃদ্ধি করতে সাহায্য করে।
common.read_more