نمایش نتایج 1 تا 8 از 8

نام تاپیک: ارتباط زبان برنامه نویسی با IO ها چگونه است ؟؟؟

  1. #1
    کاربر تازه وارد
    تاریخ عضویت
    تیر 1398
    محل زندگی
    تهران
    پست
    49

    ارتباط زبان برنامه نویسی با IO ها چگونه است ؟؟؟

    سلام
    سوالی که می خواهم بپرسم شاید به نظر ساده باشه نمی دونم
    ولی من این رو نمی دونم که وقتی مثلا می نویسیم printf دقیقا چه اتفاقی می افته تا نمایش داده بشه
    کلا ارتباط به محیط های IO مثل کی بورد چه طور اتفاق می افته
    مثلا می خواهیم یه کلید از کی بورد رو بخونیم
    منظورم این که از کدوم تابع استفاده کنیم نیست بلکه اون تابع چه طور این ارتباط رو با سخت افزار برقرار می کنه
    مثلا فرض کنید که تایع getchar نبود و قرار بود خودمون بنویسیم باید چیکار می کردیم ؟؟؟؟؟؟

  2. #2

    نقل قول: ارتباط زبان برنامه نویسی با IO ها چگونه است ؟؟؟

    ولی من این رو نمی دونم که وقتی مثلا می نویسیم printf دقیقا چه اتفاقی می افته تا نمایش داده بشه
    کلا ارتباط به محیط های IO مثل کی بورد چه طور اتفاق می افته
    اگر بخواهم خیلی کلی بگم! کلیه عملیاتهای I/O در پردازشگر توسط دستور INT که دستوری است جهت اجرای وقفه های BIOS اجرا میشوند پس بنابراین وقتی میخواهیم به CPU اعلام کنیم میخواهیم محتوای آدرسی از حافظه را در یک خروجی معتبر نمایش بده(مثلا مانیتور) از وقفه int 21 استفاده میکنیم! همینطور الی آخر...
    البته استفاده از وقفه ها بیشتر در پردازشگر های نسل 8086و80286و80386 مرسوم بود، در اسمبلرهای امروزی مانند nasm که 64 بیتی هستند شما دیگه درگیر نوشتن وقفه ها نمیشید و از توابع سطح پایین C را به راحتی call میکنیم بنابراین هم سرعت خیلی بهتر شده وهم برنامه نویسی با اسمبلی خیلی امن تر شده! البته این کاری هست که کامپایلر های قدرتمند امروزی مثل gcc هم انجام میدن یعنی لینکرها میان این لایبرری ها را به کد های شما لینک میکنند.
    به هرحال توصیف عملکردهای سطح پایین توی 2 الی 3 خط امکانپذیر نیست!

    مثلا می خواهیم یه کلید از کی بورد رو بخونیم
    منظورم این که از کدوم تابع استفاده کنیم نیست بلکه اون تابع چه طور این ارتباط رو با سخت افزار برقرار می کنه
    مثلا فرض کنید که تایع getchar نبود و قرار بود خودمون بنویسیم باید چیکار می کردیم ؟؟؟؟؟؟
    بستگی داره اگر نخواهید از 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

  3. #3
    کاربر تازه وارد
    تاریخ عضویت
    تیر 1398
    محل زندگی
    تهران
    پست
    49

    نقل قول: ارتباط زبان برنامه نویسی با IO ها چگونه است ؟؟؟

    نقل قول نوشته شده توسط farhad_shiri_ex مشاهده تاپیک
    اگر بخواهم خیلی کلی بگم! کلیه عملیاتهای 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
    خیلی ممنون از توضیحاتتون نمی خواهم درگیر این برنامه نویسی بشم فقط سوال هست برام
    مثلا الان ما از تابع getchar استفاده می کنیم داخلش ممکنه کدهایی باشه که شما نوشتید یا به روش دیگه ای ممکنه ارتباط با کی بورد رو برقرار کنه؟؟؟
    بنده چون با میکروکنترلر سروکار دارم اون جا همیشه ما می تونیم سخت افزارمورد نظرمون رو صدا کنیم بگیم فلان خروجی رو ببین چیه مقدارش
    ولی این جا این در کامپیوتر این لایه دیگه توسط برنامه نویس دیده نمیشه فقط کنجکاو بودم ببینم چه طور ارتباط برقرار میشه
    تو میکروکنترلر ها معمولا به ازای هر خروجی و ورودی آدرس جداگانه ای هست که می تونیم بهشون دسترسی داشته باشیم

  4. #4

    نقل قول: ارتباط زبان برنامه نویسی با IO ها چگونه است ؟؟؟

    خیلی ممنون از توضیحاتتون نمی خواهم درگیر این برنامه نویسی بشم فقط سوال هست برام
    بنده چون با میکروکنترلر سروکار دارم اون جا همیشه ما می تونیم سخت افزارمورد نظرمون رو صدا کنیم بگیم فلان خروجی رو ببین چیه مقدارش
    ولی این جا این در کامپیوتر این لایه دیگه توسط برنامه نویس دیده نمیشه فقط کنجکاو بودم ببینم چه طور ارتباط برقرار میشه
    تو میکروکنترلر ها معمولا به ازای هر خروجی و ورودی آدرس جداگانه ای هست که می تونیم بهشون دسترسی داشته باشیم
    در تکمیل صحبت های شما بله! معماری کامپیوتر با معماری ARM , Micro Controller خیلی متفاوت هست! شما در میکرو ویا ARM با یکسری کامپوننت های الکترونیکی و پردازش گرهای مخصوص به همین معماری ها سرکار دارید با الطبع با آدرس دهی باس و پردازشگر و حافظه کش و... که در معماری کامپیوتر کاربرد دارند کاری ندارید!
    ولی در کامپیوتر فشردن یک کلید در کیبرد کلی از قوانین و الگوریتم ها را باید طی کنه تا به لایه های بالاتر برسه و رویداد مناسب کلید را کاربر دریافت کنه!

    مثلا الان ما از تابع getchar استفاده می کنیم داخلش ممکنه کدهایی باشه که شما نوشتید یا به روش دیگه ای ممکنه ارتباط با کی بورد رو برقرار کنه؟؟؟
    بله! ولی روش ارتباط با کیبرد ربطی به این کدی که گذاشتم نداره! اون عملکرد توسط بایوس کنترل میشه !

  5. #5

    نقل قول: ارتباط زبان برنامه نویسی با IO ها چگونه است ؟؟؟

    نقل قول نوشته شده توسط seyed saeed مشاهده تاپیک
    سلام
    سوالی که می خواهم بپرسم شاید به نظر ساده باشه نمی دونم
    ولی من این رو نمی دونم که وقتی مثلا می نویسیم printf دقیقا چه اتفاقی می افته تا نمایش داده بشه
    کلا ارتباط به محیط های IO مثل کی بورد چه طور اتفاق می افته
    مثلا می خواهیم یه کلید از کی بورد رو بخونیم
    منظورم این که از کدوم تابع استفاده کنیم نیست بلکه اون تابع چه طور این ارتباط رو با سخت افزار برقرار می کنه
    مثلا فرض کنید که تایع getchar نبود و قرار بود خودمون بنویسیم باید چیکار می کردیم ؟؟؟؟؟؟
    این توابع که نام بردید ، توابع کتابخانه ای زبان c هستند.که پیاده سازیشون توسط توابع api سیستم عامل انجام میشه. سیستم عاملی که برنامه روش قراره اجرا بشه .

  6. #6

    نقل قول: ارتباط زبان برنامه نویسی با IO ها چگونه است ؟؟؟

    میشه راهنمایی کنید چطور باید مستقیما api هارو فراخوانی کرد؟

  7. #7

    نقل قول: ارتباط زبان برنامه نویسی با IO ها چگونه است ؟؟؟

    میشه راهنمایی کنید چطور باید مستقیما api هارو فراخوانی کرد؟
    در صورت تمایل سوال هاتون را در این سایت مطرح کنید! http://www.iostream.ir

  8. #8

    نقل قول: ارتباط زبان برنامه نویسی با IO ها چگونه است ؟؟؟

    نقل قول نوشته شده توسط MAHDI.D.H.F مشاهده تاپیک
    میشه راهنمایی کنید چطور باید مستقیما api هارو فراخوانی کرد؟
    درسایت مایکروسافت مثال و توضیحات مورد نیازتون وجود داره.

تاپیک های مشابه

  1. سوال: به نظر شما اول طراحی وب رو انجام بدم یا برنامه نویسی وب؟؟؟
    نوشته شده توسط ABZiko در بخش طراحی وب (Web Design)
    پاسخ: 7
    آخرین پست: چهارشنبه 05 شهریور 1393, 14:52 عصر
  2. پاسخ: 31
    آخرین پست: سه شنبه 25 مرداد 1390, 10:37 صبح
  3. سوال: چطور می توان با کد نویسی شماره سریال یک dvd خام را بدست آورد؟؟؟
    نوشته شده توسط BORHAN TEC در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 10
    آخرین پست: دوشنبه 11 بهمن 1389, 17:22 عصر
  4. به چه شکل برنامه نویسی کنم؟؟؟
    نوشته شده توسط gamron در بخش گفتگوی عمومی کامپیوتر و فناوری اطلاعات
    پاسخ: 10
    آخرین پست: شنبه 19 تیر 1389, 18:55 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •