تفاوت زبان ماشین با زبان اسمبلی

مقايسه زبان اسمبلی و زبان های سطح بالا

دو دسته اصلی زبان های برنامه نويسی عبارتند از:

۱٫ زبان های سطح بالا
    • مانند C++، Pascal، Java و Visual Basic.
۲٫ زبان های سطح پايين
    • زبان ماشين
    • زبان اسمبلی

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

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


زبان ماشين

هر خانواده ای از پردازنده ها دارای مجموعه ای از دستورالعمل های
منحصر بفرد است که زبان ماشين ناميده می شود. مجموعه دستورالعمل های
يک پردازنده (Instruction Set) مجموعه ای از اعداد دودوئی است که ماشين
می تواند آنها را درک و اجرا کند. هر نوع CPU تنها زبان مخصوص خود
را درک می کند و دارای مفسری بنام microprogram است که دستورات زبان
ماشين را به سيگنال های سخت افزاری تفسير و ترجمه می کند.


مثال ۱٫ اعداد دودئی زير يک دستورالعمل ماشين اينتل است که عدد ۵
را در ثبات AL قرار می دهد.

۱۰۱۱ ۰۰۰۰ ۰۰۰۰ ۰۱۰۱

مثال ۲٫ دستور زير ثبات های EAX و EBX را جمع کرده و حاصل را در ثبات EAX ذخيره
کند.

۰۰۰۰ ۰۰۱۱ ۱۱۰۰ ۰۰۱۱


هر دستورالعمل زبان ماشين شامل کد منحصر بفردی دارد که کدعملياتی
(Operation Code) يا Opcode ناميده می شود. Opcode هميشه در ابتدای
دستورالعمل قرار می گيرد. اکثر دستورات شامل داده هم هستند که توسط
دستورالعمل استفاده می شود و عملوند (Operand) نام دارند.

کاملا واضح است که برنامه نويسی به زبان ماشين بسيار دشوار است. درک معنی دستورالعمل
های کدشده زبان ماشين برای انسان کار خسته کننده ای است. خوشبختانه
برای هر خانواده از پردازنده ها يک زبان اسمبلی ارائه می شود که دستورالعمل
های زبان ماشين را به صورت نمادی و قابل فهم تر نشان می دهند.


زبان اسمبلی چيست؟

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

يک برنامه اسمبلی مانند برنامه های سطح بالا به صورت text نوشته می
شود. هر دستورالعمل زبان اسمبلی يک نمايش نمادی (يک کد الفبائی کوتاه) از
يک دستورالعمل ماشين است، که به اين صورت معنی دستور واضح تر از کد زبان
ماشين می شود.


مثال ۱٫ کلمه mov نمادی برای عمل انتقال داده است. دستور اسمبلی زير
جمع ثبات AL و عدد ۵ را نشان می دهد.

mov AL,5

مثال ۲٫ کلمه add يک نماد برای دستورالعمل جمع است. دستور جمع ثبات های EAX و
EBX به صورت زير نوشته می شود.

add EAX, EBX

مشاهده می شود که به اينصورت درک معنی دستور بسيار روشن تر از کد ماشين معادل است.

مثال ۳٫ دستوری که عملوندی ندارد و فلگ carry را صفر می کند.

clc

مثال ۴٫ دستور زير عدد يک را به ثبات AX اضافه می کند.

inc AX

مثال ۵٫ دستور جمع مقدار متغير Count با محتوای ثبات به صورت زير است.

mov AX,Count


هر دستور اسمبلی می تواند همراه با ليستی از عملوند ها باشد. فرم کلی دستورالعمل های اسمبلی به صورت زير است:

mnemonic operand(s)

عملوند دستورالعمل می تواند از انواع زير باشد :

• ثبات. عملوندهائی که مستقيما به محتوای ثبات های پردازنده مراجعه می کنند. مانند ثبات AL در مثال ۱٫
• متغير يا حافظه ای. عملوندهائی که به داده ای در حافظه اشاره دارند. مانند متغير Count در مثال ۵٫
• فوری. اين عملوندها مقادير ثابتی هستند که در داخل دستورالعمل قرار می گيرند. در مثال ۱عدد ۵ يک عملوند فوری است.
• ضمنی. عملوندهائی که صريحا در دستور ذکر نمی شوند. در مثال ۴عدد يک با ثبات AL جمع می شود. عدد يک عملود ضمنی است.


اسمبلر

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

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

محبوب ترين اسمبلرها برای پردازنده ها ی خانواده اينتل عبارتند از:

• ماکرواسمبلر Microsoft’s Assembler MASM

• توربو اسمبلر Borland’s Assembler TASM

• و ASM86

برنامه ديگری که برای رديابی اجرای برنامه و بررسی محتوای حافظه کاربرد
دارد ديباگر(Debugger) است که استفاده از آن بهترين راه برای يادگيری
برنامه های اسمبلی و روند اجرای آنهاست. ديباگر برنامه ای است که اجازه
بررسی ثبات ها و حافظه را بعد از اجرای هر دستور برنامه می دهد و خصوصا
برای تست برنامه های اسمبلی مفيد است.

برنامه Debug از جمله ساده ترين ديباگرهاست که توسط MS-DOS عرضه شده است. CodeView
همراه با ميکروسافت اسمبلر می آيد که اجازه می دهد کد منبع برنامه
ها، بلاک های حافظه و ثبات ها را مشاهده کنيد. Turbo Debugger بورلند
هم به همين صورت است.

يک برنامه ديگر همراه با اسمبلر برنامه لينکر(Linker) است که فايل های
مجزای توليد شده توسط اسمبلر يا کامپايلر را به يک برنامه اجرائی تبديل می
کند. برنامه Link که همراه فايل های MS-DOS می باشد يکی از متداولترين
برنامه های لينکر می باشد.


هدف از يادگيري زبان اسمبلي

يادگيری زبان اسمبلی بايد با فراگيری مفاهيم سيستم عامل و معماری
کامپيوتر توام باشد تا به درک بهتر برنامه های اسمبلی و تعامل آن با
کامپيوتر کمک کند. به چند دليل ممکن است کسی بخواهد زبان اسمبلی را ياد
بگيرد و از آن استفاده کند:

• زبان اسمبلی وسيله خوبی برای يادگيری نحوه کار کامپيوتر، کامپايلرها
و زبان های سطح بالا است و به درک عميق تر معماری کامپيوتر، مفاهيم
سيستم عامل، نمايش داده ها و دستگاه های سخت افزاری کمک می کند که
دانستن آنها باعث می شود برنامه نويس از عهده اشکالزدائی و رفع مسائل
برنامه نويسی در سطح بالا بهتر برآيد و نرم افزارهای پربارتری را
در زبان های سطح بالا مانند ++C پياده سازی کند.
• برنامه های اسمبلی سريع تر، کوچکتر و با توانائی های بيشتر از
زبان های ديگر هستند و معمولا حافظه و زمان اجرای کمتری را نياز
دارد. گاهی نوشتن کد در اسمبلی سريعتر و کوتاهتر از کدکامپايل شده
می شود. يک برنامه ويژوال بيسيک می تواند زيربرنامه های DLL نوشته
شده در زبان اسمبلی را برای افزايش سرعت برنامه در حالات بحرانی
فراخوانی کند.
• برنامه های اسمبلی می توانند براحتی از محدوديت های موجود در زبان
های سطح بالا عبور کنند و کنترل بيشتری نسبت به نيازمندی های سخت
افزاری خاص ارائه دهند. برخی از اعمال در زبان های سطح بالا دشوار
يا غير ممکن است، مانند ارتباط با سيستم عامل يا دسترسی مستقيم به
کنترلرها. يک برنامه نويس مجرب می تواند با نوشتن کد بيشتر راهی
برای گذشتن از اين محدوديت ها پيدا کند اما خوانائی برنامه کاهش
پيدا می کند. زبان اسمبلی، در مقابل، محدوديت های کمی دارد و تقريبا
همه چير را به نظر برنامه نويس واگذار می کند.

اين دلايل نشان می دهند که فراگرفتن اسمبلی می تواند مفيد باشد حتی اگر هيچوقت با آن برنامه ای نوشته نشود.

امروزه توليد برنامه ای که کاملا با زبان اسمبلی باشد غير معمول است،
زيرا برنامه نويسی در زبان سطح بالا بسيار ساده تر از اسمبلی است علاوه
براين استفاده از اسمبلی باعث می شود حمل برنامه به کامپيوترهای مختلف
دشوارتر شود. در حقيقت بندرت کسی کاملا در زبان اسمبلی برنامه می نويسد.
در عوض اسمبلی برای بهينه سازی بخش های حساس برنامه و افزايش سرعت و دسترسی
به سخت افزار و نوشتن برنامه های PROM استفاده می شود.

البته زبان برنامه نويسی C کيفيت منحصر به فردی در عرضه کردن مصالحه بين
ساختار سطح بالا و جزئيات سطح پايين دارد. اکثر کامپايلرهای C توانائی
توليد کد منبع اسمبلی را دارند. برنامه نويسان اغلب ترکيب C و اسمبلی را در
برنامه های کاربردی به کار می برند.



سئو (seo) چیست؟

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

فاکتورهای بسیاری در رتبه
بندی موتور جستجو نقش دارند.اما قبل از بحث در این باره بهتر است کمی در
باره مفهوم “تساوی لینک ها” که مفهومی اولیه در بازاریابی موتور جستجو است
بدانیم.

seo.jpg

ارزش لینک

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

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

ارزش لینک به شکل های زیر وجود دارد:

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

راه حل اینست که موتورهای
جستجو را با استفاده از تغییر مسیرها (Redirect) از تغییر صورت گرفته با
خبر سازیم. که در نتیجه باعث انتقال ارزش و اعتبارURL قدیمی به جدید می
شود.بدون ارجاعی مناسب موتورجستجو هیچ راهی برای فهمیدن ارزش URL جدید
ندارد زیرا لینک ها همچنان به URL  قدیمی پیوند خورده اند.

۲– ارزش
نشانه گذاری : کاربران اغلب URL های مفید را در مرورگرهای خود و یا در وب
سایت های مختص به نشانه گذاری نشانه گذاری می کنند.انتفال محتوا به یک URL
جدید موجب از دست رفتن ترافیک ناشی ازین نشانه گذاری می شود.بدون استفاده
از ارجاع کاربر به هنگام استفاده از وب سایت نشانه گذاری شده خطایی در مورد
اینکه محتوا در دسترس نمی باشد دریافت می کند.

۳– ارزش
نقل قول مستقیم :‌مطلب دیگر که با اهمیت نیز می باشد این است که دیگر سایت
ها در مورد URL های وب سایت شما نقل قول کرده و به انها لینک دهند.این کار
باعث انتقال ترافیکی بالا به وب سایت شما خواهد شد.

فاکتورهای رتبه بندی درموتورهای جستجو

الگوریتم هایی که توسط
گوگل یاهو و(MSN live search) برای محاسبه نتایج جستجو استفاده می شود می
تواند در هر زمانی تغییر کند. موتورهای جستجو معمولا الگوریتم های خود را
تغییر میدهند و در نتیجه صفحه نتایج به کلی تغییر میکند.در اینجا در مورد
مهمترین و با ثبات ترین فاکتورها بحث می کنیم.

* فاکتورهای قابل مشاهده در صفحه

* فاکتورهای نامرئی در صفحه

* فاکتورهای مبتنی بر زمان

* فاکتورهای خارجی

فاکتورهای موجود در صفحه

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

هر محتوایی که با استفاده
از css  یا تکنیک های دیگربه صورت پنهانی ارائه گردد فاکتوری نامرئی محسوب
می شود.در نتیجه فاقد ارزش می باشد.دربدترین حالت اگر به طور گسترده مورد
استفاده قرار گیرد ممکن است باعث جریمه کل سایت شود.



    ویدیو : تفاوت زبان ماشین با زبان اسمبلی
این مطلب را به اشتراک بگذارید :

a b