آموزشی - وبسایت دکتر امیر مرتضی سعیدی

پیجر یا پیجو چیست و چگونه کار می کند؟

جمعه 91/3/19
12:31 عصر
amirsaeedi

تاریخچه پیجر
پیجر یک دستگاه گیرنده رادیویی کوچک می باشد که امکان دریافت پیام، توام با دسترسی مداوم یک طرفه را برای کابر فراهم می نماید.
این سیستم شبکه پیجر در سال 1921 توسط دیترویت ( امریکا) مورد استفاده قرار گرفت. اصطلاح پیجر اولین بار در سال 1959 در اشاره به یک محصول ارتباط رادیویی ساخت شرکت موتورولا بکار گرفته شد و آن وسیله کوچکی بوده که پیامهای رادیویی را بطور رادیویی را بطور انفرادی به کسانی که آن را حمل می کردند، می رساند.
در اوایل دهه 1990 پیجرهای با پوشش آنتن دهی وسیعی به بازار آمد و تعداد استفاده کنندگان آن به 22 میلیون نفر رسید. در سال 1994 بیش از 61 میلیون نفر از پیجر استفاده می کردند. در کشورهای پیشرفته پس از یک دوره رکود کوتاه مدت پیجر مجددا به عنوان یک وسیله ارتباطی، کارامد، بی خطر و ارزان مورد توجه قرار گرفته و استفاده از آن بجای سایر وسایل ارتباطی بسیار معمول گشته است. بطوریکه در سال 2003 تعداد مشترکین به بیش از 250 میلیون نفر رسید.

پیجر چگونه کار می کند؟
پیجر یک وسیله پیام گیر ارتباطل قابل حمل می باشد. شخص ارسال کننده پیام (خواهان ارتباط calling party))، از تلفن معمولی برای گرفتن شماره پیجر طرف مقابل استفاده می کند و پیام عددی یا حرفی یا صوتی خود را ارسال می کند.ئد مدت کوتاهی پیام توسط گیرنده پیجر دریافت شده و دارنده پیجر با شنیدن صدای بیپ و یا لرزش بدون صدا،‌از رسیدن پیام آگاه می شود.
 این پیام در صفحه نمایشگر(
LCD) پیجر قابل رویت می باشد. رمز و راز پیجر در این است که در داخل آن جعبه کوچک گیرنده ای کار گذاشته شده که در عین سادگی از نظر تکنیکی بسیار پیچیده می باشد.

تعریف گیرنده پیجر
پیجر(
Pager) یک لغت انگلیسی است و فارسی آن توسط فرهنگستان ادب فارسی به پیجو معادل سازی شده است و در واقع یک دستگاه گیرنده رادیویی می باش. اما تعریف استاندارد بین المللی از پیجینگ توسط اتحادیه بین المللی مخابرات بصورت زیر ارائه گردیده است.
«پیجینگ سرویسی است یک طرفه و غیر صوتی که پیامهای عددی و حروفی را ارسال می کند»

انواع پیجر
1- پیجر بوقی یا بیپر (
Beeper)
ابتدایی ترین نوع پیجر میباشد که با دریافت سیگنال از مراکز پیام به صدا در آمده و صاحب خود را از وجود پیام در مرکر آگاه می کند که بعنوان نسل اول پیجر نام برده می شود.


2- پیجرعددی (
Numeric)
این نوع پیجر با داشتن یک صفحه نمایشگر کوچک اعداد ارسال شده توسط مرکز پیام (
Paging Terminal) را برروی صفحه نمایش نشان می دهد.


3- پیجر صوتی(
Voice Pager)
این نوع پیجر با داشتن امکان دریافت و پخش صدا در بعضی از موارد خاص کاربرد داردکه توسط اپراتور پیام صوتی به مشترک ارسال می گردد. نوع پیشرفته آن نیز امکان دریافت و ضبط صدا را دارد که بدلخواه مشترک در موقع مناسب می تواند به پیامهای رسیده گوش دهد. این نوغ پیجر جای خود را به تکنولوژی دیجیتالی واگذار کرده که پیجر عددی است.


4- پیجر حروفی – عددی (
Alphanumeric)
متداولترین گیرنده پیجر حروفی و عددی است و نسل جدیدی از استانداردهای پیام رسانی مانند پروتکل
POGSAG می باشد که علاوه بر نمایش اعداد قادر به ارسال حروف بصورت رمز و گشایش و تماس آنها بصورت حرف می باشد و به دو صورت اپراتوری و مستقیم می توان روی این نوع پیجرها پیام ارسال نمود که امکان پیام رسانی سریعتر، ظریف و قابلیت اطمینان بیشتری را به دارنده آن می دهد.


5- پیجر دو طرفه(
Tow – Way Pager)
اصولا پیجر گیرنده یک طرفه است. معهذا بمنظور تنوع بخشیدن و ایجاد جذابیت بیشتر اخیرا گیرنده هایی ساخته شده است که پس از دریافت پیام گیرنده پیامی برای فرستنده ارسال می کندکه با ارسال این سیگنال یا پیام، گیرنده دریافت پیام را تائید می کند.
طراحی این سیستم بسیار پیچیده و دارای هزینه بسیار بالاست.

ساختار اصلی شبکه رادیویی پیجر
اصولا طراحی شبکه های رادیویی به عوامل زیادی بستگی داشته و میتوان گفت عواما چون: پیش بینی میزان ترافیک مشترکین، درجه سروسی دهی ، تعداد مدارات ارتباطی به شبکه، فرهنگ مکالمه تلفنی مشترکین ، تراکم جمعیتی مشترکین، وسعت منطقه، ساختار و جغرافیای محیطی منطقه تحت پوشش، میزان مکالمات در ساعات پر ترافیک، احتمال دریافت مکانی و زمانی، آرایش ایستگاهها از نظر موقعیت مکانی،‌ توان انتشار امواج، رفع مشکلات تداخل فرکانسی،‌تعداد و نوع استفاده از حاملهای گوناگون فرکانس، محدودیت در گسترش محدوده پوشش رادیویی، میزان مطلوب نسبت
signal به noise، ظرفیت اولیه شبکه در مرحله راه اندازی ،‌گسترش ظرفیت سیستم در ارتباط با افزایش تعداد مشترکین شبکه، رشد جمعیت منطقه از نظر شهری و روستایی،‌ توزیع تلفن در شبکه تلفن ثابت، میزان تقاضای امور تجاری،‌صنعتی، سیاحتی و مسافرتی و غیره... نقش تعیین کننده ای در طراحی اصولی شبکه را دارا میباشد.

بخش اول
بطور کلی اجزاء ساختاری یک شبکه پیجر یک طرفه رادیو دیجیتال بدون در نظر داشتن نوع پروتکل آن و اینکه از نوع برون ایستگاهی
Off Site (برای استفاده در منطقه وسیع و یا سراسری ) و یااز نوع درون ایستگاهی On site ( برای استفاده در محوطه های بیمارستانی،‌ کارخانجات و غیره ) باشد را میتوان به شرح ذیل دسته بندی کرد:


1- ترمینال پیجینگ
عبارتست از یک یا چند ترمینال رادیویی پیجویی با واسطه های ورودی جهت دریافت پیامهای فراخونی خواهان مشترکین از شبکه های
PSTN و PSPDN و غیره، اعمال مدیریت لازم بر روی آنها از نظر امور مشترکین و نهایتا انتقال پیامهای اولیه به طبقه بعدی واحد پردازنده سیستم.


2- پردازنده سیستم
پردازنده سیستم طبقه بعدی بوده که نقش یک سویچ را نیز ایفا می کند. یعنی در این مرحله پیامهای پیجویی اولیه و دریافتی از ترمینال (ها) رادیویی را با اعمال مدیریت لازم و بر حسب پروتکل تعریف شده مثلا
POCSAG در قالی اطلاعات اصلی (پیجویی) و فرعی (کنترلی) یه طبقه بندی یعنی واحد کنترل کننده منطقه ای بصورت درجا و با از طریق بستر انتقال ارسال میشود.


3- کنترل کننده منطقه ای
ضمن تقسیم پیامهای کد شده (اصلی و فرعی) نقش کنترل فرستنده ها را با مدیریتی از پیش تعریف شده ایفا می کند.
واحد (های) کنترل کننده منطقه ای می تواند بصورت درجا و در کنار واحد پردازنده سیستم، نصب و یا از طریق بستر انتقال مناسب در فاصله دورتری و یا در منطقه دیگری مستقر شود.


4- ایستگاه رادیویی
شامل یک یا چند دستگاه فرستنده ثابت یک یا چند کاناله بوده که پیامهای واصله خواهان مشترکین را برای پیجر مشترک مربوطه در سطح منطقه تعریف شده و تحت پوشش شبکه و از طریق آنتن ایستگاه ارسال می کند.معمولا این واحد به یک سیستم گیرنده همزمان کننده نیز تجهیز می شود.


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


6- نحوه به کارگیری فرستنده ها
در ارسال پیامها، بطور کلی فرستنده های یک سیستم پیجو می تواند پیامهای پیجویی مشترکین را بصورت همزمان
SIMULCASTING و یا بصورت تک تک و یا غیر همزمان ارسال کند.

شبکه های پیجر به دو صورت مورد استفاده قرار می گیرند:

الف - شبکه های عمومی(
Public Network)
 ب -   شبکه های اختصاصی (
Private Network)

الف - شبکه های رادیویی پیجر عمومی
اصطلاحا در سیستمهای پیجر،‌شبکه پیجر عمومی به شبکه هایی اطلاق می شود که در یک شهر، برای سرویس دهی به مشترکین عمومی و برای تعداد بیش از هزار نفر راه اندازی گردد.
در اینحالت هر شهری بطور مستقل مشترکین خود را سرویس دهی نموده و همچنین در حالتهای خاص می تواند با بهره گیری از شبکه سراسری پیجر، مشترکین شهرهای دیگر را ورد پوشش قرار دهد.

از مشخصات اصلی شبکه پیجر عمومی میتوان به موارد زیر اشاره کرد:


1- طراحی متناسب با عوارض طبیعی و جغرافیایی شهر مورد نظر، بطوریکه پوشش امواج رادیویی در حد مطلوب بوده و پیام با بهترین کیفیت دریافت گردد.


2- طراحی متناسب با تعداد کاربران شبکه به دو صورت مستقیم و غیر مستقیم حد اقل 8 تا 16 خط تلفن در مدار ورودی در نظر گرفته می شود. در روش غیر مستقیم تعدادی خطوط تلفن از نوع
End to End, DID مورد نیاز خواهد بود.

اساس سیستم ارتباط یک طرفه پیجر:
مشترک می تواند در تمام مدت غیبت خود در خواست نماید تا به محض تماس وی پیامهای دریافت شده را به اطلاع وی برسانند.
بازخوانی پیامها : در صورتیکه مشترکی پیامی را به صورت کامل دریافت ننماید در اینصورت با تماس تلفنی با مراکز پیام پیجر، در خواست بازخوانی آن پیام را بکند.سیستم پیجینگ به طور خودکار سابقه چند پیام آخر را جهت بازخوانی ذخیره می کند.

پیام عمومی روزانه:
پیامهایی از قبیل یش بینی وضع هوا، اخبار عمومی، اخبار ورزشی و قیمت ارز و شبکه پیام عمومی محسوب شده و مرکز پیام پیجر همه روزه در ساعات معین آنها را باطلاع مشترکین می رساند.

امنیت پیام:
مشترک جهت ایجاد امنیت در بازخوانی پیامهای خود،‌می تواند اسم رمزی را تعیین و به مراکز اعلام نماید.بدین ترتیب اگر کسی در خواست بازخوانی پیامهای مشترک مزبور را بکند باید اسم رمز را اعلام نماید، در صورت مطابقت،‌ اپراتور اقدام به بازخوانی خواهد نمود.

ب - شبکه های رادیویی پیجر اختصاصی :
با قابلیت شبکه عمومی براسی تعداد کاربر و مکان محدود طراحی و مورد استفاده قرار می گیرد.

بخش دوم
سرویسهای شبکه پیجو اصولا به توجه به وضعیت زیربنایی ارتباطی شبکه های
PSTN PSPN ، PLMN ، ISDN کشورها دایر و یا بعضا تکمیل و قابل ارائه به مشترکین می شود.

مزایای داشتن پیجر
1- داشتن پیجر به شما آزادی حرکت می دهد. کافیست به مردم بگویید « اگر با من کاری دارید کافیست با پیجر من تماس بگیرید»
2- کسانی که برای شما مهم هستند می توانند در هر زمان به شما دسترسی پیدا نمایند. پیجر وسیله ای است مطمئن – فوری و اختصاصی
3- اگر بنا به مناسبت شغلی ولو برای مدت کوتاهی باید در حال حرکت و دور از محل کارتان باشید، داشتن پیجر به شما این امکان را می دهد که همیشه در دسترس باشید.
4- داشتن پیجر به شما استفاده مادی نیز می رساند. همیشه در دسترس بودن یعنی ارائه سرویس خوب به مشتریها و سرویس خوب به مشتریها یعنی در آمد بیشتر.
5- همیشه مشتریها نیستند که نیاز به تماس با شما را دارند.با داشتن پیجر افراد خانواده – فرزندان و دوستان شما نیز می توانند به راحتی با شما تماس بگیرند.
6- از طرف دیگر داشتن پیجر توسط هر یک از اعضای خانواده،‌ به شما این امکان را می دهد هر وقت که بخواهید با همسر و فرزندان خود تماس داشته باشید.
7- همیشه در دسترس بودن به نوعی حرفه ای بودن و کارایی و قابلیت اطمینان محسوب می شود. پیجر همیشه همه این امتیازات را برای شما فراهم می آورد.
8- پیجرباعث صرفه جویی در وقت و پول نیز هست. در شهرهای پر جمعیت امروزی داشتن پیجر بهترین راه صرفه جویی در وقت و پول است.

قابلیتها:
- دریافت پیامها اختصاصی (
MMS) در کوتاهترین زمان
- دریافت اطلاعات(
IMS)
- دریافت اخبار عمومی (
PMS): اجتماعی – ورزشی و هواشناسی
- دریافت اخبار اقتصادی (
EMS): نرخ ارز و سکه
- امکان ذخیره کردن و بازخوانی پیامها
- یاد آوری کارهای ضروری روزانه مثل قرار ملاقات و مصرف دارو
- دفترچه یادداشت
- دفترچه تلفن
- اوقات شرعی
- ساعت و تقویم
- بدون نیاز به خاموش کردن



اگر موبایل نبود

جمعه 91/3/19
12:28 عصر
amirsaeedi

اگر موبایل نبود

zfrlfsgatxnu8d081i اگر موبایل نبود

بیایید برگردیم به سال‌های قبل از 1372؛ ‌وقتی هنوز در ایران موبایل نبود.

از خانه بیرون می‌آییم و هیچ نگران نیستیم که موبایل را در خانه جا گذاشته‌ایم یا گوشی‌مان شاررژ دارد یا نه؟ و هیچ وقت مادر سفارش نمی‌کند که گوشی یادت نرود! اما می گوید: « اگر دیر شد حتماً زنگ بزن. پنج ریالی داری؟» یا «کارت تلفن داری؟»

 

بعد در هیاهوی خیابان نگران نشنیدن زنگ تلفن نیستیم و هی گوشی را چک نمی‌کنیم و…

***

اولین تماس تلفن همراه در کشور ما 19 مرداد ماه سال 1372برقرار شد. این اتفاق بیست سال بعد از اولین تماس غیر تجاری تلفن همراه در دنیا افتادکه در سال 1973 توسط دکتر مارتین انجام گرفت.

***

مترو که نیست. حالا در تاکسی هستیم. هیچ کسی گوشی توی گوشش نیست تا خودش موسیقی بشنود و شما صدای وزوز! روی شیشه هیچ تاکسی‌ای ننوشته« لطفاً با موبایل صحبت نکنید» و البته همه مسافرها هم‌زمان با موبایل صحبت نمی‌کنند و شما مجبور نیستید چیزی از وقت آرایشگاه، قرار کاری یا سیمان‌ها و ساختمان نیمه کاره این آدم‌ها بدانید. در آرامش نشسته‌اید و به گرما یا سرمایی که از درز پیکان‌ به داخل می آید فکر می‌کنید.

***

17 سال پیش یعنی تیرماه سال 1372 بود که ثبت نام تلفن همراه در کشور ما آغاز شد. ابتدا از آن استقبال نشد و روند ثبت نام چند ماه طول کشید. با تبلیغات فراوان و با شعار «با تلفن همراه همیشه در مقصد هستید» تا اواسط سال 74 بیش از 9 هزار نفر ثبت‌نام کردند و در شهریور همان سال واگذاری‌ها آغاز شد.

***

هیچ تصادفی به خاطر حرف زدن با تلفن همراه اتفاق نمی‌افتد. هیچ عابری بی توجه به ماشین‌ها و دیگر عابرها بلند بلند با تلفن صحبت نمی‌کند و به خیابان نمی‌دود. هیچ زنگ اعصاب خردکنی روی هیچ گوشی‌ای نیست. اما در عوض جلوی باجه های تلفن قیامت است.

***

بالاخره بعد از اولین واگذاری‌ها مردم ورود تلفن همراه به کشور را باور کردند؛ قیمت سیم‌کارت در آن زمان گاهی اوقات به بالای 30 میلیون ریال هم می‌رسید و البته ثبت‌نام‌ بعدی با هجوم متقاضیان از ساعت‌های اولیه بامداد به دفترهای پستی همراه بود.

***

حالا رسیده‌اید. در مطب هیچ دکتری در هیچ بانک یا شرکتی ننوشته «لطفاً گوشی تلفن همراه خود را خاموش کنید» و در مدرسه هم از شما نمی‌خواهند که با خود تلفن نیاورید.

***

با افزایش تعداد مشترکان و آن هم درحالی که در آن زمان چنین فناوری‌ای برای کاربران عجیب بود، اداره تحقیقات و مطالعات اجتماعی روابط عمومی‌ شرکت مخابرات‌ایران با درج آگهی‌هایی در روزنامه‌های آن زمان اقدام به برگزاری کلاس آموزش آشنایی با نحوه استفاده از تلفن همراه کرد.

***

بلوتوث؛ بلوتوث نیست. نگران فیلم‌هایتان نباشید. هیچ هکری نمی‌تواند دفترچه تلفن شما را هک کند. مگر خودتان دفترچه کاغذی‌تان را گم کنید. درمورد عکس ها و فیلم ها هم این کار انجام نمی‌شود؛ مگر آلبوم خانوادگی تان را دور بیندازید!

***

در سال 1373 تعداد مشترکان تلفن همراه9200 نفر بود که این رقم در خرداد 1389 به 35 میلیون‌و 555 هزار و 812 مشترک رسیده است که البته دارندگان سیم کارت‌های تالیا و ایرانسل را هم به آن اضافه کنید تا رقم آن از جمعیت کشور هم بالاتر برود.

این در حالی است که محققان می‌گویند استفاده روزانه از تلفن همراه دقیقه‌ای 57 گرم دی اکسید کربن تولید می کند و اگر در روز تنها دو دقیقه از آن استفاده کنید، سالانه 47 کیلو گرم و اگر یک ساعت استفاده کنید، سالانه 125 میلیون تن دی اکسید کربن تولید می‌کنید که این میزان با دی‌اکسیدکربن تولید شده در یک پرواز یک‌طرفه از لندن به نیویورک برابری می‌کند و با توجه به آمار7/2 میلیارد تلفن همراه در جهان در سال 2009، می‌توان گفت تلفن‌‌های همراه یک چهارم تولید دی اکسید کربن جهان را در دست دارند. حالا بگویید چرا هوا آلوده است و باران نمی‌آید!

***

حالا سر قرار رسیده اید. شما و مادر آن‌قدر منتظر خاله می‌مانید که علف زیر پایتان سبز می‌شود. خاله آن سوی میدان هفت تیر ایستاده و شما این سو .هیچ تلفن همراهی هم ندارید که بالاخره همدیگر را ببینید. حالا هی دنبال هم بگردید…



تحقیقاتی جالب درباره مضرات موبایل

جمعه 91/3/19
12:28 عصر
amirsaeedi

تحقیقاتی جالب درباره مضرات موبایل

آزمایش تاثیر امواج موبایل بر تخم مرغ

1- آزمایش بر روی تخم مرغ

مدتی قبل، بی بی سی گزارشی از آزمایش یک تخم‌مرغ در کنار یک موبایل را منتشر کرده بود که آن تخم مرغ بعد از گذشت زمانی سفت شده بود.

در عکس‌هایی که با استفاده از دوربین‌های حساس حرارتی گرفته شده است، دیده می شود که یک تخم مرغ را در مقابل یک موبایل روشن در حال صحبت کردن گذاشتند و پس از گذشت یک ساعت، تقریباً نیمی از آن سفت شده بود، زیرا عملکرد امواج مایکرویو موبایل مانند امواج مایکروویو‌های خانگی است که هم اکنون در آشپزخانه‌ها وجود دارد.

تخم مرغ پخته

با مشاهده این آزمایش به خوبی می توان به عمق این فاجعه و مضرات امواج موبایل برای سلامتی انسان پی برد. ببینید که این امواج با تخم مرغ چه کرد، همین کار را با سلول‌های مغز ما می‌کند.

گزارش کامل این آزمایش را می‌توانید در سایت www.ewall.eu ببینید.

2- آزمایش بر روی خرگوش

در سوئد روی یک خرگوش آزمایش جالبی انجام دادند. یک خرگوش را کنار یک موبایل گذاشتند که آن موبایل همواره روشن بود. در این مدت هم تغذیه کاملی به آن می‌دادند.

پس از 2 ماه خون و سلول‌های خرگوش را برای آزمایش به آزمایشگاه بردند و نتیجه جالب توجهی را اعلام کردند؛ آن خرگوش با ادامه این وضعیت بیشتر از یک سال زنده نمی‌ماند.

حال باید ببینیم اگر روی یک انسان چنین آزمایشی انجام دهند نتیجه چه می‌شود! اگرچه فکر نکنم کسی داوطلب این آزمایش پیدا شود.

نمونه نسبی آزمایش شده این کار برای انسان را می‌توانید در افرادی ببینید که شغلشان مرتبط با رادارهای نظامی است. آن‌ها طول عمر بسیار کمی دارند و یا بسیاری از آن‌ها در زمان سالخوردگی به بیماری هایی مبتلا می‌شوند که در افراد عادی کمتر دیده می‌شود.



الگوریتم بهینه محاسبه یک مقدار خاص در تابع فیبوناتچی

جمعه 91/3/19
12:25 عصر
amirsaeedi
الگوریتم بهینه محاسبه یک مقدار خاص در تابع فیبوناتچی
همونطور که میدونید برای محاسبه فیبوناتچی یک عدد از یک حلقه for یا تابعی بازگشتی استفاده میشه که اگه از تابع بازگشتی اون برای مقادیر بالا مثلا 20 به بالا بخواهید استفاده کنید زمان محاسبه اون به تدریج خیلی بالا میره ، می تونید برای تمرین و فهم زمان بد محاسبه اون از کد زیر که ساده ترین کد برای تابع بازگشتی فیبوناتچی هستش استفاده کنید.
کد:
#include <iostream>
using namespace std;
long int fibo(long int n)
{
    if(n<=0)
        return 0;
    if(n==1||n==2)
        return 1;
    else
        return fibo(n-1)+fibo(n-2);

}

int main()
{
    int n;
    cout<<"please ente a number:";
    cin>>n;
    cout<<fibo(n);
    return 0;
}

ولی در این بین برای بهینه کردن این الگوریتم از قانون بهره ترکیبی استفاده می کنیم که بیان این قانون به این صورت می باشد که اگر در جریان محاسبات تابع بازگشتی به یک عمل چندین بار مراجعه می شود بهترین کار این است که برای اولین بار که به آن عمل مراجعه شد نتایج آن در جایی ذخیره شود و در جریان فراخوانی های بعدی از همان مقداری که در مرحله قبل برای آن عمل محاسبه شده استفاده کرد و دوباره همان عمل تکراری را محاسبه نکرد یا به عبارت دیگر یک تابع بازگشتی باید از نتایج ضمنی تولید شده توسط مراحل قبلی برای کوتاهی محاسبات استفاده کند .اینم کد بهینه شده برای این الگوریتم که اگه با کد قبلی مقایسه کنید حتما متوجه اهمیت این قانون بسیار مهم می شوید.
کد:
#include <iostream>
using namespace std;
long int fibo(long int n,long int x=3,long int b=1,long int c=1)
{
    if(n<=0)
        return 0;
    if(n==1||n==2)
        return 1;
    if(n==x)
        return b+c;
    else
        return fibo(n,x+1,b+c,b);

}

int main()
{
    int n;
    cout<<"please ente a number:";
    cin>>n;
    cout<<fibo(n);
    return 0;
}
 
 



اسمبلی 2

جمعه 91/3/19
12:22 عصر
amirsaeedi

ما معمولا اعداد را بر پایه ده نشان می دهیم . یعنی اعداد پایه ده. زیرا بعد از شمردن از 0 تا عدد 9 ، اعداد دو رقمی شده و یا به عبارت دیگر یکی به دهگان عدد اضافه می شود .بطور مثال عدد 128 را در نظر بگیرید. این عدد یعنی

128=8*10^0+2*10^1+1*10^2

همانطور متوجه شدید رتبه دهگان و صدگان و هزارگان در واقعه معرف توان ده در رابطه بالا می باشد.بعلت استفاده 10 به عنوان پایه توان این مبنا را ده دهی می گویند.
اعداد در پایه های دیگر هم دارای رابطه ای شبیه رابطه بالا می باشند مثلا رابطه عدد 128 در پایه x بصورت زیر نوشته می گردد:

128(x)=8*x^0+ 2*x^1 +1*x^2

بعد از آشنایی به پایه اعداد و پایه های دیگر بصورت اجمالی حال به بررسی مبناهایی پرداخته می شود که در کامپیوتر کاربرد بسیار دارد.

پایه دو دوبی: ( Binary)

همانطور که از اسم این پایه معلوم است مبنا اعداد در این پایه دو بوده و اعداد تشکیل دهنده این مبنا عبارتند از 0،1(اعداد کوچکتر از پایه با انضمام 0 )یک عدد در این مبنا بصورت مینیمم 1 بیت را مورد استفاده قرار می دهد.2^0=1 ماکزیمم عدد تشکیل دهنده

پایه هشت هشتی یا اکتال

شبیه پایه دو بوده ولی اعداد بکار رفته در آن عبارت است از: 0،1،2،3،4،5،6،7. هر عدد در این مبنا حداقل 3 بیت مورد مصرف قرار
می دهد
2^0+2^1+2^2=7
( هر کدام از جواب به توان رساندن یک بیت را اشغال می نمایید )

پایه هگزا دسیمال (Hex)

اعداد بکار رفته در آن عبارت است از:F،E،D،C،B،A،9،8، 0،1،2،3،4،5،6،7. که در آن A معرف 10و B معرف 11 و ... E معرف 15
می باشد هر عدد در این مبنا حداقل 4 بیت مورد مصرف قرار می دهد
2^0+2^1+2^2+2^3=15

چگونگی تبدیل پایه های دیگر به ده دهی:

برای تبدیل هر عدد در مبنای x به مبنای ده دهی از روش زیر استفاده می کنیم: ( فرض کنید عدد ما در مبنا x برابر QWER می باشد )

QWER(x)=R*x^0+E*x^1+W*x^2+Q*x^3+….

حاصل جمع ما همان عدد در پایه ده دهی (مثلا TYUIO) یعنی

TYUIO(10)=QWER(x)

حال می رسیم به تبدیل اعداد پایه 10 به پایه های دیگر

برای این کار از روش تقسیمهای متوالی استفاده می نماییم عدد را بر پایه مورد نظر ( x ) تقسیم نموده .باقی مانده را در بجای اولین عدد معادل قرار می دهیم حال خارج قسمت را بر x تقسیم نموده و باقی مانده را در کنار باقی مانده قبلی در سمت چپ آن قرار می دهیم آنقدر این کار را انجام داده تا خارج قسمت از x کمتر گردد .حال آخرین خارج قسمت را نیز دز سمت چپ باقی مانده ها قرار می دهیم ( آخرین باقیمانده را نیز قبل از اضافه کردن خارج قسمت به اعداد اضافه می نماییم) عدد حاصله معادل عدد ده دهی در پایه x می باشد.
الگوریتم آن عبارت است از:

1- عدد را بگیر
2- اگر عدد کوچکتر از x است به مرحله6 بپر
3- عدد را بر x تقسیم کن باقیمانده را در سمت چپ عدد معادل کنار اعداد دیگر بنویس اگر عددی نبود آن را یاد داشت کن
4- خارج قسمت را جای عدد بگذار
5- به مرحله 2 برو
6- عدد را به سمت چپ اعداد اضافه کن
7- نمایش رشته

قسمت دوم

دستورات اسمبلی


در این قسمت به شناسایی دستورات اسمبلی می رسیم .


Mov Dest,source
با اجرای این دستور منبع درون مقصد کپی می شود. منبع و یا مقصد می تواند یکی از حالات زیر باشه:
-ثبات یا رجی ستر
-آدرس حافظه
- رجی ستری که به حافظه ای اشاره مکنه
-رجی ستری که به حافظه ای که نسبی اشاره می کنه
( بعدا در نحوه آدرس دهی این مفاهیم توضیح داده می شود)
مثال


Mov eax,ebx
که مقدار ebx تو eax می ریزد.


Push value

وظیفه آن قرار دادن value در Stack memory می باشد.
مثال


Push eax / Push [004044ca]
که مقدار eax را تو پشته قرار می دهد./ مقدارای را که در حافظه [004044ca] می باشد را در پشته قرار می دهد.



Pop value
معکوس Push بوده و مقداری را که با Push در حافظه قرار گرفته را بر می گرداند.
مثال


eax= 10h push eax
eax=1000h mov eax,1000h
ebx=12h mov ebx,12h
ebx=ebx+eax=1012h add ebx,eax
eax=10h Pop eax



×همیشه متغیری که در حافظه قرار میگیرد لزوما با همان متغیر برداشته نمی شود



Push eax
….
Pop ebx

PopA /PushA

دقیقا مثل پدرهاشون می مانند. با این تفاوت که تمامی رجی ستر ها را در حافظه قرار داده یا همگی را می خوانند.


Lea reg,Source

مقدار آدرس موثر(واقعی با سگ منت و افست ) منبع را در رجی ستر قرار می دهد.


Jmp value

اگر value آدرس موثر باشد ( که معمولا نیست ) به آن آدرس برنامه فرستاده می شود .و اگر موثر نباشه به اندازه مقدار value به آدرس کنونی اضافه کرده و به اونجا می رود
اگر یاد تون باشد EIP شماره خط در حال حاضر رو تو خودش دارد پس دو دستور زیر با هم معادل اند:



Jmp 02 ,jump to address that is equal to current address+02
Add EIP +02 , EIP equal to EIP (Current Address)+2

Cmp Op1,Op2

مقدار اولی و دومی را مقایسه می کند . (اولی منهای دومی ) بر اساس نتیجه مقدار رجی ستر وضعیت ( قبلا معرفیشون نکردم فقط وضعیت مقایسه را تو خودش قرار می دن )( شامل بیتهای zf,sf,pf,of,cf,af است ) ست می کند. مهمتر ینشون zf (حاصل تفریق 0 است zf=1 یعنی با هم برابر اند)


Jz,Jnz,…
تمامی دستوراتی که یا z شروع می شن یعنی اگر ... و پرش .مثلا JZ ( Jump if Zero)یعنی اگر بیت zf از رجی ستر وضعیت 1 باشد به خط مورد نظر پرش نما



بیت معادل شرط
zf=1 = Jz=Je
zf=0 != Jnz
zf=0 and cf=0 بزرگتر Ja
cf=0 بزرگترو مساوی Jae
cf=1 کوچکتر Jb
cf=1 or zf=0 کوچکتر و مساوی Jbe
ecx=0 اگر cx برابر 0 شد Jcxz



(دستوراتی هم مثل JGو یا JL و هستن که برای اعداد علامت دار مصرف میشوند که ثبات وضعیتشون یادم نیست به هر صورت خود تون یاد بگیرید.)


ADD و ADC( Adding & Adding With Carry)
هر دو مقدار اول را بعلاوه مقدار دوم کرده و نتیجه را در اولیه می گذارند . قبل از اینکه فرقشون رو بگم بهتر که Overflow رو بگم . در حالت اعداد طبیعی هر بایت نمایانگر یک عدد بین 0 تا 255 می باشد ولی در حالت اعداد صحیح هر بایت نمایانگر یک عدد بین 128- تا 127 است.
بیت معمولی بیت معمولی بیت معمولی بیت معمولی بیت معمولی بیت معمولی بیت معمولی بیت علامت
اگر بیت علامت یک باشد یعنی عدد منفی است و 0 بودن آن یعنی عدد مثبت است .
حال فرض کنیم 96 را با 32 جمع کنیم نتیجه 128 می شود ولی در حالت بالا عدد معادل 0 منفی است که باعث سر ریز شده است .
در حالت جمع ADC این حالت پیش نیامده و همچنین اگر دو بایت را یا هم جمع کردیم و بر16 ) مثل بر 10 ) در جمع آنها را نیز دخالت می دهد. مثلا اگر یک کلمه را با کلمه دیگر جمع کنیم جواب درست نمایش داده می شود.


SUB و SBB
عمل تفریق را انجام می دهد .SBB دارای خصوصیات ADC است ولی عمل تفریق را انجام می دهد.


Neg
علامت عدد را معکوس می نماید. از روش متمم دو


INC x
به عدد x یک عدد اضافه می نماید.( x می تواند حافظه و یا آدرس و یا رجی ستر باشد)


DEC x

از x یک عدد کم می کند.


MUL x

برابر eax=eax*x


IMUL x
مثل mul است ولی برای اعداد علامت دار


DIV x وIDIV x
تقسیم مثل MUL وMULI

جداول عملیاتی


ANDوORوXORوNOTوTest
NOT A
A=NOT A XOR A,B
A=A XOR B AND A,B
A=A AND B OR A,B
A=A OR B B A
1 0 0 0 0 0
1 1 0 1 1 0
0 1 0 1 0 1
0 0 1 1 1 1

عمل TEST A,B مثل عمل AND بوده ولی باعث تغییر A نمی شود .ولی در صورت برابری AوB مقدار zf را یک می کند.



اسمبلی 1

جمعه 91/3/19
12:21 عصر
amirsaeedi

حافظه و آدرس دهی

هر کامپیوتر مبتنی بر8086 دارای حداقل640 کیلوبایت حافظه است . این 640 کیلوبایت به قطعات 64 کیلوبایتی تقسیم شده و ما این قطعات را "قطعه " یا Segment مینامیم . هر سگمنت هم به خانه های تک بایتی دیگری تقسیم شده است.
برای بدست آوردن مقدار یک بایت مشخص از حافظه ما باید عدد مربوط به سگمنت وهمچنین شماره آن بایت در سگمنت ( که آفست نامیده میشود) را بدانیم . Offset یعنی یک آدرس در مبنای 16 که 16 بیتی است و( یا در حالت win32 یک عدد 32 بیتی می باشد. ) و مثلا اگر مقدار مورد نظر در قطعه 0030h باشد و افست آن 13C4h باشد ما باید قطعه ای که شماره آن 0030h است را بیابیم و بعد در همان قطعه افست 134C را بدست آوریم .
برای نمایش این حالت بین عدد سگمنت و آفست علامت ( : ) قرار میدهیم . یعنی
0030:134C در حالت داس و 0030:0000134C در حالت ویندوز. Segment:Offset
** همیشه در آدرس دهی ها از اعداد مبنای 16 استفاده میکنم .

Registers ثباتها

رجیسترها مکان هائی ازCPU هستند که برای نگهداری داده ها (DATA) و کنترل اجرای برنامه بکار میروند . ما میتوانیم آنها را مقدار دهی کرده و یا بخوانیم و یا باتغییر محتوای آنهاCPU را مجبور به انجام یک پروسه (رویه یاProcedure ) کنیم .

دسته ای از رجیسترها که ما آنها را "ثباتهای همه کاره یا همه منظوره " میخوانیم و شامل ax,bx,cd,dx هستند در حالت داس ( حالت 2 بایتی ) ودر حالت ویندوز eax,ebx,ecx,edx ( بصورت 4 بایتی) ، برای انتقال مقادیر بین رجیستر ها وCPU بکار میروند.
در حالت ویندوز ثباتهای معروف دیگر( که هر کدام قانون خاصی دارد ) عبارتند از :
EIP
این ثبات مقدار شماره خط در حال اجرا نمایش می دهد.
ESP
قبل از توضیح این ثبات باید در باره پشته صحبت کنیم . پشته یا Stack (نمیدونم درست نوشتمش یا نه ) محلی است که برنامه مقادیر ذخیره شده ثباتهای دیگر را در آن قرار می دهد . قانونی پشته در این است که هر چیز که اول وارد آن گردد آخر سر خارج می شود.The 1st input is the last one come out
خوب معلوم است که این ثبات شماره پشته را در خود نگه می دارد.
برای روشن تر شدن قضیه و چگونه استفاده از پشته یه مثال میزنم . فرض کنیم یک MsgBox باید نمایش داده شود .
در این حالت مکان یا آدرس جایی که رشته مورد نمایش در حاقظه قرار دارد در ثباتی مثل Eax قرار داده می شود یعنی
1- Mov eax,00450F1C eax آدرس رشته مورد نظر در خودش قرار میده
حالا این ادرس ذخیره میشه :
2-Push eax در پشته قرار دادن این آدرس
متغیر رو صفر میکنه :
Xor eax,eax صفر کردن متغیر یا ثبات برای فرا خوانی تابع
صدا زدن تابع :
[jmp dword ptr [004121F0
برنامه به محلی که رویه Messageboxa توسط برنامه مورد مثال فرا خوانی می شود ارسال می گردد.
( دستوارت بعدا توضیح داده می شود).
همانطور که دیده میشه برای انتقال متغیر به تابع سه راه حل وجود داره
استفاده از ثباتها ویا ترکیبی از اونها
استفاده از پشته
استفاده هم از پشته هم از ثباتها
توی مثال بالا هم از از پشته هم از eax استفاده شد

ثبات( EDI (Data Index
این ثبات برای نگه داری اطلاعات مورد نظر برنامه استفاده می شود. تقریبا مثل ثبات همه کاره
ثبات(ESI(Segment Index
همانند EDI

ثباتهای همه منظوره به دو نیم ثبات تک بایتی تقسیم میشوند . بایت بالائی با نمادH و بایت پائینی با نمادL نشان داده میشود . مثلا ثبات AX دارای دو نیم- ثبات AH,AL است .
در داس:
اگر AX را بصورت ABCD نمایش دهیم CD درAl و AB درAh قرار می گیرد حال اگر مقدار 1234h (h نمایینده قرار گرفتن در مد Hex می باشد) درAX قرار داده شود ( هنگامی که از حافظه برنامه مقدار دهی شود .) مقدار 12 درAl و مقدار 34 درAh قرار می گیرد.(Eax=3412)
در حالت ویندوز
این حالت بر قرار است اماEax=XXXXABCD
AB معرف Ah وCD معرف Al می باشد.



طراح صفحات وب - برنامه نویس تحت سی پلاس پلاس و دلفی و ویبی - طراح نرم افزار های تبلیغاتی - تدریس خصوصی - ارائه پروپوزال و پایان نامه - ارائه مقالات علمی (برای ارتباط نظر بگذارین)
تمامی حقوق این وب سایت متعلق به وبسایت دکتر امیر مرتضی سعیدی است. || طراح قالب avazak.ir