Assembly Language প্রোগ্রামিংয়ে Input/Output (I/O) Operations অত্যন্ত গুরুত্বপূর্ণ, কারণ এটি প্রোগ্রাম এবং ব্যবহারকারীর মধ্যে ডেটা আদান-প্রদান নিশ্চিত করে। I/O Operations সঠিকভাবে সম্পন্ন করার জন্য বিভিন্ন পদ্ধতি এবং নির্দেশনা ব্যবহার করা হয়। Assembly Language-এ I/O Operations সাধারণত DOS interrupts, BIOS interrupts, এবং memory-mapped I/O এর মাধ্যমে সম্পন্ন হয়।
DOS Interrupts ব্যবহার করে I/O Operations:
INT 21h
) Assembly প্রোগ্রামে I/O কাজ সম্পন্ন করার জন্য বহুল ব্যবহৃত। DOS ইন্টারাপ্ট ব্যবহার করে আমরা কীবোর্ড ইনপুট নিতে এবং স্ক্রিনে আউটপুট দেখাতে পারি।আউটপুট প্রদর্শন করা:
MOV AH, 09h ; DOS ফাংশন কোড 09h ব্যবহার করা, যা স্ট্রিং প্রিন্ট করে
MOV DX, msg ; মেসেজের ঠিকানা DX-এ লোড করা
INT 21h ; DOS interrupt কল করা
ইনপুট গ্রহণ করা:
MOV AH, 01h ; DOS ফাংশন কোড 01h ব্যবহার করা, যা একটি চর ইনপুট গ্রহণ করে
INT 21h ; DOS interrupt কল করা
MOV input, AL ; AL রেজিস্টার থেকে ইনপুট ভেরিয়েবলে সংরক্ষণ করা
BIOS Interrupts ব্যবহার করে I/O Operations:
স্ক্রিনে আউটপুট প্রদর্শন করা:
MOV AH, 0Eh ; BIOS ফাংশন কোড 0Eh ব্যবহার করা, যা একটি চর প্রিন্ট করে
MOV AL, 'A' ; AL রেজিস্টারে প্রিন্ট করতে চাওয়া চর
INT 10h ; BIOS interrupt কল করা
Memory-Mapped I/O:
পদ্ধতি | ব্যবহার | উদাহরণ |
---|---|---|
DOS Interrupts | সাধারণ কীবোর্ড ইনপুট এবং স্ক্রিন আউটপুট | INT 21h ব্যবহার করে I/O সম্পন্ন করা |
BIOS Interrupts | হার্ডওয়্যার লেভেলের I/O অপারেশন | INT 10h , INT 16h ইত্যাদি |
Memory-Mapped I/O | মেমোরির মাধ্যমে সরাসরি ডিভাইস অ্যাক্সেস | মেমোরি অ্যাড্রেস ব্যবহার করে ডেটা লেখা/পড়া |
I/O Operations এর কাজের পদ্ধতি:
সারসংক্ষেপ
Input/Output Operations Assembly Language প্রোগ্রামিংয়ে প্রোগ্রাম এবং ব্যবহারকারীর মধ্যে তথ্য আদান-প্রদানের একটি গুরুত্বপূর্ণ অংশ। DOS এবং BIOS interrupts এর মাধ্যমে সাধারণ ইনপুট এবং আউটপুট অপারেশন সম্পন্ন করা হয়, যেখানে memory-mapped I/O সরাসরি মেমোরির মাধ্যমে ডিভাইস অ্যাক্সেসের সুবিধা প্রদান করে। I/O Operations সঠিকভাবে ব্যবহার করা প্রোগ্রামের কার্যক্ষমতা এবং ব্যবহারকারীর সাথে যোগাযোগ উন্নত করতে সহায়ক।
IN এবং OUT নির্দেশনাগুলি Assembly Language-এ ব্যবহৃত বিশেষ নির্দেশনা, যা CPU-র মাধ্যমে I/O (Input/Output) ডিভাইসের সাথে ডেটা আদান-প্রদান করতে ব্যবহৃত হয়। এই নির্দেশনাগুলি সরাসরি হার্ডওয়্যার ডিভাইস যেমন কীবোর্ড, প্রিন্টার, বা অন্যান্য পেরিফেরাল ডিভাইসের সাথে যোগাযোগের জন্য ব্যবহৃত হয়।
গঠন:
IN accumulator, port
AL
, AX
, বা EAX
রেজিস্টার ব্যবহার করা হয়।উদাহরণ:
IN AL, 60h ; 60h পোর্ট থেকে ডেটা AL রেজিস্টারে পড়া
গঠন:
OUT port, accumulator
AL
, AX
, বা EAX
রেজিস্টার ব্যবহার করা হয়, যেখান থেকে ডেটা পাঠানো হবে।উদাহরণ:
OUT 60h, AL ; AL রেজিস্টারের ডেটা 60h পোর্টে পাঠানো
MOV AL, 0x12 ; AL রেজিস্টারে 0x12 লোড করা
OUT 60h, AL ; 0x12 মান 60h পোর্টে পাঠানো
IN AL, 60h ; 60h পোর্ট থেকে ডেটা AL রেজিস্টারে পড়া
ব্যাখ্যা:
MOV AL, 0x12
নির্দেশনা ব্যবহার করে AL রেজিস্টারে 0x12 মান লোড করা হয়েছে।OUT 60h, AL
নির্দেশনা AL-এর মান 60h পোর্টে পাঠিয়েছে।IN AL, 60h
নির্দেশনা ব্যবহার করে 60h পোর্ট থেকে AL রেজিস্টারে ডেটা পড়া হয়েছে।সারসংক্ষেপ
IN এবং OUT নির্দেশনাগুলি Assembly Language প্রোগ্রামিংয়ে CPU এবং পেরিফেরাল ডিভাইসের মধ্যে সরাসরি ডেটা ট্রান্সফারের জন্য ব্যবহৃত হয়। IN নির্দেশনা ডেটা পড়তে এবং OUT নির্দেশনা ডেটা পাঠাতে ব্যবহৃত হয়। এগুলি সরাসরি I/O অপারেশন সম্পাদন করতে সহায়ক, যা এম্বেডেড সিস্টেম এবং সিস্টেম প্রোগ্রামিংয়ে অত্যন্ত গুরুত্বপূর্ণ।
Interrupt-driven I/O এবং Polling Mechanism হলো দুইটি গুরুত্বপূর্ণ পদ্ধতি যা কম্পিউটার সিস্টেমে ইনপুট/আউটপুট (I/O) ডিভাইস পরিচালনার জন্য ব্যবহৃত হয়। এগুলি CPU এবং I/O ডিভাইসের মধ্যে যোগাযোগ এবং তথ্য স্থানান্তর ব্যবস্থাপনার জন্য বিভিন্ন পদ্ধতি প্রদান করে। নিচে এই দুটি পদ্ধতির বিস্তারিত ব্যাখ্যা দেওয়া হলো:
Interrupt-driven I/O:
সুবিধা:
অসুবিধা:
Polling Mechanism:
সুবিধা:
অসুবিধা:
বৈশিষ্ট্য | Interrupt-driven I/O | Polling Mechanism |
---|---|---|
CPU সাড়া দেয় | ইন্টারাপ্ট সিগন্যাল পাওয়ার পর। | CPU নিয়মিতভাবে ডিভাইস চেক করে। |
CPU সময় ব্যবহার | কার্যক্ষমতা বাড়ায়, শুধুমাত্র প্রয়োজন হলে সাড়া দেয়। | CPU সময় অপচয় হয় বারবার চেক করার ফলে। |
জটিলতা | ইমপ্লিমেন্ট করা কিছুটা জটিল। | সহজ এবং ইমপ্লিমেন্ট করা সহজ। |
উপযোগিতা | মাল্টি-টাস্কিং এবং দ্রুত রেসপন্সের জন্য উপযুক্ত। | ছোট ও কমপ্লেক্স নয় এমন অপারেশনের জন্য উপযুক্ত। |
রেসপন্স টাইম | দ্রুত, কারণ CPU অবিলম্বে সাড়া দেয়। | ধীর, কারণ CPU কেবল চেক করে। |
সারসংক্ষেপ
Interrupt-driven I/O এবং Polling Mechanism উভয়ই CPU এবং I/O ডিভাইসের মধ্যে যোগাযোগের জন্য ব্যবহৃত হয়। Interrupt-driven I/O দ্রুত রেসপন্স এবং CPU কার্যক্ষমতা বৃদ্ধিতে সহায়ক, কারণ CPU তখনই সাড়া দেয় যখন ডিভাইস প্রস্তুত হয়। অন্যদিকে, Polling Mechanism সহজ এবং ছোট অপারেশনের জন্য কার্যকর, কিন্তু CPU সময় অপচয় করে কারণ এটি বারবার চেক করে।
Assembly Language প্রোগ্রামিংয়ে BIOS এবং DOS Interrupt Calls গুরুত্বপূর্ণ ভূমিকা পালন করে, কারণ এগুলি সরাসরি হার্ডওয়্যার এবং সিস্টেম সেবা অ্যাক্সেস করতে ব্যবহৃত হয়। INT 10h এবং INT 21h দুটি সাধারণ এবং বহুল ব্যবহৃত ইন্টারাপ্ট কল, যা ডিসপ্লে এবং DOS সেবা পরিচালনার জন্য ব্যবহৃত হয়।
INT 10h (BIOS Video Services):
স্ক্রিনে ক্যারেক্টার প্রিন্ট করা:
MOV AH, 0x0E ; BIOS ফাংশন 0x0E (ক্যারেক্টার প্রিন্ট)
MOV AL, 'A' ; প্রিন্ট করার জন্য ক্যারেক্টার 'A' লোড করা
INT 10h ; BIOS ইন্টারাপ্ট কল করা
ভিডিও মোড পরিবর্তন করা:
MOV AH, 0x00 ; ভিডিও মোড সেট করার ফাংশন
MOV AL, 0x03 ; 80x25 টেক্সট মোড
INT 10h ; BIOS ইন্টারাপ্ট কল করা
INT 21h (DOS Services):
স্ট্রিং প্রিন্ট করা:
MOV AH, 0x09 ; DOS ফাংশন 0x09 (স্ট্রিং প্রিন্ট)
MOV DX, msg ; স্ট্রিং এর ঠিকানা DX রেজিস্টারে লোড করা
INT 21h ; DOS ইন্টারাপ্ট কল করা
নোট: msg
হলো একটি স্ট্রিং যা পূর্বে সংজ্ঞায়িত করা হয়েছে:
msg DB 'Hello, World!$', 0
প্রোগ্রাম শেষ করা:
MOV AH, 0x4C ; DOS ফাংশন 0x4C (প্রোগ্রাম টার্মিনেশন)
MOV AL, 0 ; এক্সিট কোড 0
INT 21h ; DOS ইন্টারাপ্ট কল করা
BIOS Interrupt Calls (INT 10h):
DOS Interrupt Calls (INT 21h):
সারসংক্ষেপ
INT 10h এবং INT 21h হলো Assembly Language-এ BIOS এবং DOS Interrupt Calls, যা ডিসপ্লে ম্যানেজমেন্ট এবং DOS সেবা প্রদান করে। INT 10h ডিসপ্লে সম্পর্কিত কাজের জন্য BIOS ইন্টারাপ্ট এবং INT 21h বিভিন্ন DOS ফাংশন পরিচালনার জন্য ব্যবহৃত হয়। এই ইন্টারাপ্টগুলি প্রোগ্রামারদের সরাসরি হার্ডওয়্যার এবং সিস্টেম সেবার সাথে ইন্টারঅ্যাক্ট করার ক্ষমতা প্রদান করে, যা প্রোগ্রামিং কার্যক্রমে অত্যন্ত সহায়ক।
Assembly Language-এ Keyboard এবং Screen Handling গুরুত্বপূর্ণ কারণ কম্পিউটারের সাথে ইনপুট ও আউটপুট (I/O) পরিচালনা করতে প্রোগ্রামারদের এই টেকনিকগুলি ব্যবহার করতে হয়। এটির মাধ্যমে ব্যবহারকারী থেকে ইনপুট গ্রহণ এবং স্ক্রিনে আউটপুট প্রদর্শন করা যায়।
Keyboard Handling Techniques:
INT 16h
ব্যবহার করে কীবোর্ড ইনপুট নেওয়া হয়।উদাহরণ:
mov ah, 00h ; BIOS ফাংশন 00h, একটি কীবোর্ড ইনপুট পড়া
int 16h ; BIOS interrupt কল
mov [char], al ; AL রেজিস্টারে ইনপুটকৃত ক্যারেক্টার সংরক্ষণ
INT 21h
ব্যবহার করে কীবোর্ড ইনপুট নেওয়া যায়।উদাহরণ:
mov ah, 01h ; DOS ফাংশন 01h, কীবোর্ড ইনপুট এবং ইকো
int 21h ; DOS interrupt কল
mov [char], al ; AL রেজিস্টারে ইনপুটকৃত ক্যারেক্টার সংরক্ষণ
Screen Handling Techniques:
INT 10h
ব্যবহার করে ভিডিও সার্ভিস প্রদান করা হয়।উদাহরণ:
mov ah, 0Eh ; BIOS ফাংশন 0Eh, স্ক্রিনে ক্যারেক্টার প্রিন্ট
mov al, 'A' ; AL রেজিস্টারে প্রিন্ট করার ক্যারেক্টার
int 10h ; BIOS interrupt কল
INT 21h
ব্যবহার করে স্ক্রিনে আউটপুট প্রদর্শন করা হয়।$
চিহ্ন দিয়ে শেষ হওয়া একটি স্ট্রিং প্রিন্ট করে।উদাহরণ:
mov ah, 09h ; DOS ফাংশন 09h, স্ক্রিনে স্ট্রিং প্রিন্ট
mov dx, msg ; প্রিন্ট করার স্ট্রিং-এর ঠিকানা DX-এ লোড
int 21h ; DOS interrupt কল
msg db 'Hello, World!$', 0 ; স্ট্রিং ডেটা, শেষের '$' দিয়ে চিহ্নিত
সারসংক্ষেপ
Assembly Language-এ Keyboard এবং Screen Handling Techniques ব্যবহার করে ব্যবহারকারীর সাথে ইনপুট-আউটপুট পরিচালনা করা হয়। BIOS এবং DOS Interrupt ব্যবহার করে কীবোর্ড ইনপুট নেওয়া এবং স্ক্রিনে আউটপুট প্রদর্শন করা হয়। Keyboard Handling Techniques ব্যবহার করে ব্যবহারকারী থেকে ডেটা নেওয়া হয় এবং Screen Handling Techniques ব্যবহার করে প্রোগ্রামের আউটপুট স্ক্রিনে প্রদর্শিত হয়, যা প্রোগ্রামকে আরও কার্যকরী ও ইন্টারেক্টিভ করে।
common.read_more