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

نام تاپیک: چند سوال اسمبلی (فوری)

  1. #1

    چند سوال اسمبلی (فوری)

    سلام

    من در مقاله ای خوندم که پردازنده جهت ارتباط با قسمت های مختلف (حافظه,ورودی خروجی) از گذرگاه ادرس استفاده میکنه ,به این ترتیب که به هر واحد یک ادرس اختصاص

    میده که مشخص میکنه در اون لحظه کدوم واحد حق استفاده از گذرگاه داده رو داره....

    1-حالا در گذرگاه ادرس پردازنده هیچ انتقالی هم انجام میشه و یا فقط یک ادرس درون اون

    گذاشته میشه....؟؟

    2-منظور از اینکه این گذرگاه یک طرفه است یعنی چه؟

    3-مثلا وقتی ادرس یک وسیله ورودی مثب کیبورد در گذرگاه ادرس پردازنده قرار میگیره ,این

    ارتباط چطوری برقرار میشه؟ و کیبورد به چه صورت از گذرگاه داده استفاده میکنه...؟

    4-وقتی میخوایم از یک خانه حافظه استفاده کنیم ,پس اول باید ادرس واحد حافظه رو در گذرگاه
    ادرس قرار بدیم تا حق استفاده رو به حافظه بدیم ,در این صورت وقتی با خونه ای مشخص

    از حافظه ارتباط برقرار میکنیم این ادرس در کجا قرار میگیره و پردازنده به چه شکل با این

    خانه ارتباط برقرار میکنه..؟؟

  2. #2
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    ایران سرای من است
    پست
    2,655

    نقل قول: چند سوال اسمبلی (فوری)

    1-حالا در گذرگاه ادرس پردازنده هیچ انتقالی هم انجام میشه و یا فقط یک ادرس درون اون
    گذاشته میشه....؟؟
    نه ببينيد اين كدها موجود در cpu‌ هستند كه مشخص ميكنند چه چيزي و در كجا و به چه شكلي انجام بشود مثلا mov نياز دارد كه در گذگاه ادرس عددي قرار داده شود تا از آان عدد به عنوان ايندكس يا مكان حافظه استفاده شود تا به اين طريق داده ار حافظه بيرون كشيده شود.
    2-منظور از اینکه این گذرگاه یک طرفه است یعنی چه؟
    خوب اگر به كاركرد و طراحي ic هاي حافظه نگاهي بيندازيد مطمئننا يه پين مربوط به اين هست كه مشخص ميكند ميتوان از حافظه نوشت ولي مفهوم اينكه گذرگه يكطرفه باشد اين هست كه ميتوان از آن خواند و حق نوشت از آن آدرس گرفته شده است.
    3-مثلا وقتی ادرس یک وسیله ورودی مثب کیبورد در گذرگاه ادرس پردازنده قرار میگیره ,این
    ارتباط چطوری برقرار میشه؟ و کیبورد به چه صورت از گذرگاه داده استفاده میکنه...؟
    ببينيد قتي شما كليدي را داخل صفحه كليد فشار ميديد پين وقفه cpu به ارتعاش در مي آيد و cpu متوجه مشيود كه اتفاقي افتاده است لذا به گذرگاه ادرس نگاهي مي اندازد و مي بيند كه آدرس مربوط به صفحه كليد در آن قرار دارد سپس به گذرگاه داده نظري افكنده و عدد كليد را از آنجا مي ربايد و به اين طريق وقفه مربوطه توسط cpu به حركت و اجرا در مي آيد و بقيه ماجرا ....
    4-وقتی میخوایم از یک خانه حافظه استفاده کنیم ,پس اول باید ادرس واحد حافظه رو در گذرگاه
    ادرس قرار بدیم تا حق استفاده رو به حافظه بدیم ,در این صورت وقتی با خونه ای مشخص
    از حافظه ارتباط برقرار میکنیم این ادرس در کجا قرار میگیره و پردازنده به چه شکل با این
    خانه ارتباط برقرار میکنه..؟؟
    نه ببينيد اساس كار مربوط به cpu‌ميشود بالا هم توضيج داده شد وقتي تقاضايي از داده هاي حافظه به Cpu ميشود cpu‌از گذرگاه آدرس مكان داده را ميگيرد و سپس به ram‌ يا همان آدرس مراجعه و داده را گرفته و در داخل دومين ادرس گه بعد از اعمال فوق در گذرگاه آدرس قرار ميگيرد انقال ميدهد....
    ولي اگر بخواهيد بهتر با اين مراحل آشنا بشويد كتاب پايه اي به اسم پردازنده هايب 80880/8086 مطالعه نماييد.

  3. #3

    نقل قول: چند سوال اسمبلی (فوری)

    مرسی از پاسختون.

    ولی من خونده بودم که جهت گذرگاه ادرس فقط از پردزانده به خارج هست.

    مثلا وقتی بخواد ادرس حافظه رو در گذرگاه ادرس قرار بده ,اول باید از گذرگاه داده اونا

    به cpu انتقال بوده و بعد در گذرگاه ادرس...(این استنباط من بود)...اینطور نیست؟

    ---------------------
    این کتابی که گفتید اسم کاملش چیه؟؟

    این کتاب خوبه و اسه یادگیری عمیق و پایه ای؟
    8080/Z80 Assembly Language: Techniques for Improved Programming

    ----------------------
    تو این مقاله ای که دارم میخونم , قسمتی به این صورت گفته:
    "چون گذرگاه ادرس 8086/88 , 20 بیتی است, قاعدتا باید ادرس اغاز سگمنت ها که مکانهایی در حافظه هستند نیز 20 بیتی باشد ,پس چگونه ادرس اغاز یک سگمنت که 20 بیتی است در ثبات 16 بیتی سگمنت ذخیره میشود!؟
    ادرس اغاز یک سگمنت در حافظه که ادرسی 20 بیتی است ,باید همیشه ادرسی بخشپذیر
    بر 16 باشد , مثل 00000h یا f23e0 یا 2a320h dh... به همین دلیل همیشه 4 بیت پایینی
    ادر س اغاز سگمنت صفر است و نیازی به ذخیره ندارد. مثلا وقتی گفته میشود ادرس اغاز سگمنت کد که در cs ذخیره میشود , 2b3f H است,در واقع منظور ادرس 20 بیتی 2b3f0 H
    است.
    بنابرین برای دستیابی به ادرس واقعی سگمنت ,باید انرا 4 بیت به سمت چپ شیفت دهیم."

    سوال:1-در این صورت ما حد اکثر میتونیم از 1 مگابایت و 64 کیلوبایت 15 بیت کمتر ( به دلیل

    اینکه بزرگترین ادرس برابر با FFFF0 میشه که 15 بیت از 1 مگابایت کمتر هست و اگر از این ادرس به عنوان شروع سگمنت استفاده کنیم , 64 کیلوبایت اضافه میشه.) از رم استفاده کنیم.

    2- اگر حتما بخواهیم شروع سگمنت رو ضریبی از 16 بگیریم پس فضاهای بالا استفاده چی میشن.؟

    ------------------------------

    3-میگم این ثبات های پردازنده ax,bx,cxdx,..... مثلا چرا ما حتما باید از cx برای شمارش و حلقه ها ازش استفاده کنیم و چرا نمیشه با جای این از ax استفاده کرد و کلا از ثبات ها
    برای هر منظوری که خواستیم استفاده کنیم....
    -------------------------------
    4-دقیقا استفاده ی bp -sp-ip چیه , sp ادرس شروع سگمنت پشته رو نگه میداره؟؟
    bp دقیقا استفادش تو اسمبلی چیه و نقشش در اجرای یک برنامه سطح بالا مثل C++‎ چیه؟

    کدوم یک از این 3 ثبات رو میشه توسط برنامه نویس تغییر داد و در چه مواقعی اینکار لازم میشه....؟

  4. #4
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    ایران سرای من است
    پست
    2,655

    نقل قول: چند سوال اسمبلی (فوری)

    ولی من خونده بودم که جهت گذرگاه ادرس فقط از پردزانده به خارج هست.
    خب حتما هم بايد به اينگونه باشد براي اينكه احتياجي اين cpu هست كه داده در اختيار گذرگاه آدرس قرار ميدهد .
    مثلا وقتی بخواد ادرس حافظه رو در گذرگاه ادرس قرار بده ,اول باید از گذرگاه داده اونا
    به cpu انتقال بوده و بعد در گذرگاه ادرس...(این استنباط من بود)...اینطور نیست؟
    درسته شما گذردگاه آدرس را مانند رگها بدانيد كه خون را به ساير اعضا كه قطعات سخت افزاري نصب شده روي مادر برد هستند انتقال مي دهد. البته اين انتقال خلاصه شده است به فقرار دادن يك عدد چن بيتي و اعلام ههشدار به قطعه مربوطه براي دريافت و شروع به كار.
    این کتابی که گفتید اسم کاملش چیه؟؟
    ريز پردازنده 8088 (سخت افزار / نرم افزار / ارتباط دهي / كاربردها ) نوشته جيمزال.آنتوناكوس ترجمه مهران رضايي
    این کتاب خوبه و اسه یادگیری عمیق و پایه ای؟
    8080/Z80 Assembly Language: Techniques for Improved Programming
    پردازنده قديمي ولي پركاربرد براي اتوماسيون صنعتي
    سوال:1-در این صورت ما حد اکثر میتونیم از 1 مگابایت و 64 کیلوبایت 15 بیت کمتر ( به دلیل
    اینکه بزرگترین ادرس برابر با FFFF0 میشه که 15 بیت از 1 مگابایت کمتر هست و اگر از این ادرس به عنوان شروع سگمنت استفاده کنیم , 64 کیلوبایت اضافه میشه.) از رم استفاده کنیم.
    2- اگر حتما بخواهیم شروع سگمنت رو ضریبی از 16 بگیریم پس فضاهای بالا استفاده چی میشن.؟

    براي اينكه بهتر مطلب را درك كنيد يك مقداري از ادرس فاصله بگيريد و به پايه هاي موجود در گذرگاه ادرس نگاهي بيندازيد مطمئنا همه اين پايه ها براي ادرس دهي به كار برده نمي شوند بلكه تعدادي از آنها براي اعلام هشدار و ساير كار ها از جمله clock‌ puls به كار برده ميشوند اگر اين پايه ها را از گذرگاه مورد نظر حذف كنيد منطق آدرس دهي براي شما آشكار خواهد شد.
    3-میگم این ثبات های پردازنده ax,bx,cxdx,..... مثلا چرا ما حتما باید از cx برای شمارش و حلقه ها ازش استفاده کنیم و چرا نمیشه با جای این از ax استفاده کرد و کلا از ثبات ها
    برای هر منظوری که خواستیم استفاده کنیم....
    خب روش كار پردازنده به اين شكل بوده و طبعا بايد از يه سري قوانين پيروي كند مثلا loop براي اينكه عمل پرش را به پايان برساند هميشه چشمش به cx بوده و با صفر بودن cx عمل خود را خاتمه ميدهد شما نمي توانيد عدد را در ax قرار بديد و انتظار داشته باشيد كه loop كار خودش را با محاسبه اي كه شما انجام داديد خاتمه بدهد.
    4-دقیقا استفاده ی bp -sp-ip چیه , sp ادرس شروع سگمنت پشته رو نگه میداره؟؟
    ip افساري هشت كه شما ميتوانيد توسط آن cpu را به هر طرف هدايت كنيد. ولي bp يك اشاره گر آزاد و بي قيد و بند بوده و در بعضي مواقع خود را قانوني ميكند مثلا بعضي از وقفه ها مقادير برگشتي را لزوما داخل bp قرار ميدهند.
    ولي در مورد sp بايد عرض كنم كه اگر برنامه ايرادي نداشته و ويروسي نباشد و به قول معروف صحيصح و سالم باشد ميتواند اندازه داده هاي موجود در سگمنت پشته را براي شما مشخص كند.
    bp دقیقا استفادش تو اسمبلی چیه و نقشش در اجرای یک برنامه سطح بالا مثل C++‎‎‎ چیه؟
    خب بايد براي بررسي دقيق تر به سورس كد كامپاير مراجعه كنيد و ببينيد كجا ازش استفاده كرده ولي اساسا براي cpu جزو قوانين نيست.
    کدوم یک از این 3 ثبات رو میشه توسط برنامه نویس تغییر داد و در چه مواقعی اینکار لازم میشه....؟
    اين سه ثبات سحله همه رجيستر ها قابل تغييرند. توضيح در مورد كارشان بحث گسترده اي را ميطلبد كه به مرور زمان و با تمرينات و نياز به كدهاي فوق سطح پايين براي شما آشكار خواهد شد.

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

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