Assembly Language-এ Conditional Branching Instructions প্রোগ্রামের নিয়ন্ত্রণ প্রবাহ পরিবর্তনের জন্য ব্যবহৃত হয়। এগুলি সাধারণত CPU-এর ফ্ল্যাগ রেজিস্টারের ভিত্তিতে কাজ করে এবং শর্ত পূরণ হলে নির্দিষ্ট ঠিকানায় লাফ দেয়।
JE (Jump if Equal):
- সংজ্ঞা: JE নির্দেশনা ZF (Zero Flag) সেট থাকলে জাম্প করে, অর্থাৎ যখন দুটি অপারেন্ড সমান হয়।
ব্যবহার:
CMP AX, BX ; AX এবং BX তুলনা JE label ; যদি AX == BX হয়, তাহলে label এ জাম্প
JNE (Jump if Not Equal):
- সংজ্ঞা: JNE নির্দেশনা ZF রিসেট (সেট নয়) থাকলে জাম্প করে, অর্থাৎ যখন দুটি অপারেন্ড সমান নয়।
ব্যবহার:
CMP AX, BX ; AX এবং BX তুলনা JNE label ; যদি AX != BX হয়, তাহলে label এ জাম্প
JL (Jump if Less):
- সংজ্ঞা: JL নির্দেশনা SF (Sign Flag) এবং OF (Overflow Flag) যাচাই করে জাম্প করে। এটি signed সংখ্যার ক্ষেত্রে ব্যবহৃত হয় যখন প্রথম অপারেন্ড দ্বিতীয় অপারেন্ডের চেয়ে ছোট।
ব্যবহার:
CMP AX, BX ; AX এবং BX তুলনা JL label ; যদি AX < BX হয় (signed), তাহলে label এ জাম্প
JG (Jump if Greater):
- সংজ্ঞা: JG নির্দেশনা ZF রিসেট এবং SF ও OF সমান থাকলে জাম্প করে। এটি signed সংখ্যার ক্ষেত্রে ব্যবহৃত হয় যখন প্রথম অপারেন্ড দ্বিতীয় অপারেন্ডের চেয়ে বড়।
ব্যবহার:
CMP AX, BX ; AX এবং BX তুলনা JG label ; যদি AX > BX হয় (signed), তাহলে label এ জাম্প
JZ (Jump if Zero):
- সংজ্ঞা: JZ নির্দেশনা ZF (Zero Flag) সেট থাকলে জাম্প করে। এটি সাধারণত অপারেশন বা তুলনার ফলাফল শূন্য হলে ব্যবহৃত হয়। এটি JE নির্দেশনার সমার্থক।
ব্যবহার:
CMP AX, 0 ; AX এবং 0 তুলনা JZ label ; যদি AX == 0 হয়, তাহলে label এ জাম্প
JNZ (Jump if Not Zero):
- সংজ্ঞা: JNZ নির্দেশনা ZF রিসেট থাকলে জাম্প করে। এটি সাধারণত অপারেশন বা তুলনার ফলাফল শূন্য না হলে ব্যবহৃত হয়। এটি JNE নির্দেশনার সমার্থক।
ব্যবহার:
CMP AX, 0 ; AX এবং 0 তুলনা JNZ label ; যদি AX != 0 হয়, তাহলে label এ জাম্প
উদাহরণ: Conditional Branching ব্যবহার করে Assembly প্রোগ্রাম
section .text
global _start
_start:
MOV AX, 10 ; AX রেজিস্টারে 10 লোড
MOV BX, 5 ; BX রেজিস্টারে 5 লোড
CMP AX, BX ; AX এবং BX তুলনা
JE equal_label ; যদি AX == BX হয়, তাহলে equal_label এ জাম্প
JG greater_label ; যদি AX > BX হয়, তাহলে greater_label এ জাম্প
JL less_label ; যদি AX < BX হয়, তাহলে less_label এ জাম্প
equal_label:
; এখানে AX এবং BX সমান হলে কার্যকর হবে
; কোড ব্লক
JMP end ; প্রোগ্রামের শেষ
greater_label:
; এখানে AX > BX হলে কার্যকর হবে
; কোড ব্লক
JMP end ; প্রোগ্রামের শেষ
less_label:
; এখানে AX < BX হলে কার্যকর হবে
; কোড ব্লক
JMP end ; প্রোগ্রামের শেষ
end:
; প্রোগ্রাম শেষসারসংক্ষেপ
JE, JNE, JL, JG, JZ, এবং JNZ নির্দেশনাগুলি Assembly Language-এ শর্তমূলক ব্রাঞ্চিং নিশ্চিত করতে ব্যবহৃত হয়। এগুলি প্রোগ্রামের নিয়ন্ত্রণ প্রবাহ পরিবর্তন করে এবং CPU-এর ফ্ল্যাগ রেজিস্টারের ভিত্তিতে কাজ করে। JE এবং JZ সাধারণত সমতুল্য, এবং JNE এবং JNZ একে অপরের সমার্থক। এগুলি প্রোগ্রামের কার্যপ্রণালীতে শর্তমূলক সিদ্ধান্ত গ্রহণে গুরুত্বপূর্ণ ভূমিকা পালন করে।
Read more