اگر بخواهم خیلی کلی بگم! کلیه عملیاتهای I/O در پردازشگر توسط دستور INT که دستوری است جهت اجرای وقفه های BIOS اجرا میشوند پس بنابراین وقتی میخواهیم به CPU اعلام کنیم میخواهیم محتوای آدرسی از حافظه را در یک خروجی معتبر نمایش بده(مثلا مانیتور) از وقفه int 21 استفاده میکنیم! همینطور الی آخر...
البته استفاده از وقفه ها بیشتر در پردازشگر های نسل 8086و80286و80386 مرسوم بود، در اسمبلرهای امروزی مانند nasm که 64 بیتی هستند شما دیگه درگیر نوشتن وقفه ها نمیشید و از توابع سطح پایین C را به راحتی call میکنیم بنابراین هم سرعت خیلی بهتر شده وهم برنامه نویسی با اسمبلی خیلی امن تر شده! البته این کاری هست که کامپایلر های قدرتمند امروزی مثل gcc هم انجام میدن یعنی لینکرها میان این لایبرری ها را به کد های شما لینک میکنند.
به هرحال توصیف عملکردهای سطح پایین توی 2 الی 3 خط امکانپذیر نیست!
بستگی داره اگر نخواهید از getchar استفاده کنید یعنی باید از اسمبلی استفاده کنید بنابراین حالا باید انتخاب کنید که از چه اسمبلری میخواهید استفاده کنید تحت ویندوز ویا xbase و اینکه برای چه ABI می خواهید کد اسمبلی بنویسید بعد از انتخاب اگر باز نخواهید وابستگی به library های c داشته باشید باید خودتون از وقفه ها استفاده کنید دقیقا مثل کد زیر که getchar هست برای پردازشگر های 16 بیتی ...
Getchr:
push bx
push cx
push dx
mov ah, 01h
int 21h
pop dx
pop cx
pop bx
ret