Conditional Branching Instructions: JE, JNE, JL, JG, JZ, JNZ

Computer Programming - অ্যাসেম্বলি প্রোগ্রামিং (Assembly Programming) - Control Flow এবং Branching (Control Flow and Branching)
544

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 একে অপরের সমার্থক। এগুলি প্রোগ্রামের কার্যপ্রণালীতে শর্তমূলক সিদ্ধান্ত গ্রহণে গুরুত্বপূর্ণ ভূমিকা পালন করে।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...