مسنجر زبان برنامه نویسی سطح پایین. چه زمانی مونتاژ (اسمبلر) و زبان ماشین بود؟ شناسه ها، اعداد صحیح، نمادها، نظرات، همبستگی

زبان برنامه نویسی

Assembler یک زبان برنامه نویسی سطح پایین است که فرمت برای ضبط دستورات ماشین، مناسب برای ادراک انسان است.

دستورات زبان اسمبلر یکی در یکی از تیم های پردازنده است و در واقع، یک فرم نمادین مناسب ضبط (Mnemokode) دستورات و استدلال های آنها است. همچنین، زبان اسمبلر انتزاعی نرم افزاری اساسی را فراهم می کند: اتصال بخش های برنامه و داده ها پس از برچسب ها با نام های نمادین و دستورالعمل.

دستورالعمل های ASSMBLER به شما این امکان را می دهد که بلوک های داده ای را در برنامه قرار دهید (به طور صریح توصیف شده یا از فایل خوانده شده)؛ یک قطعه مشخص از تعداد مشخص شده را تکرار کنید؛ کامپایل یک قطعه با شرایط؛ آدرس اعدام قطعه را تنظیم کنید، مقادیر برچسب ها را در طول فرآیند تلفیق تغییر دهید؛ از تعاریف ماکرو با پارامترها و دیگر استفاده کنید.

هر مدل پردازنده، در اصل، مجموعه ای از دستورات خود و زبان مناسب (یا گویش) مونتاژ را دارد.

مزایا و معایب

  • حداقل مقدار کد اضافی (استفاده از تعداد کمی از دستورات و مراجع به حافظه). به عنوان یک نتیجه - سرعت بالا و اندازه برنامه کوچکتر
  • حجم های بزرگ کد، تعداد زیادی از وظایف اضافی جزئی
  • خواندن کد ضعیف، پشتیبانی از دشواری (اشکال زدایی، اضافه کردن فرصت ها)
  • مشکل اجرای پارادایم های برنامه نویسی و سایر کنوانسیون های پیچیده، پیچیدگی توسعه مشترک
  • کتابخانه های کمتر در دسترس، سازگاری کوچک خود را
  • دسترسی مستقیم به تجهیزات: پورت های I / O، پردازنده های ویژه ثبت می شود
  • توانایی نوشتن یک کد خودمحور (به عنوان مثال Metaprogramming، و بدون نیاز به مترجم نرم افزار)
  • حداکثر "مناسب" برای پلت فرم دلخواه (استفاده از دستورالعمل های ویژه، ویژگی های فنی "آهن")
  • عدم تحمل به سیستم عامل های دیگر (به جز سازگار باینری).

نحو

استاندارد به طور کلی پذیرفته شده برای نحو زبان اسمبلر وجود ندارد. با این حال، استانداردهای واقعی وجود دارد - رویکردهای سنتی که اکثر توسعه دهندگان مونتاگر پایبند هستند. استانداردهای اطلاعات اصلی اینتل نحو و AT & T-Syntax هستند.

فرمت کلی برای ضبط دستورالعمل برای هر دو استاندارد یکسان است:

`[برچسب:] opcode [operands] [؛ نظر]`

ظاهر به طور مستقیم دستورالعمل های mnemonic به پردازنده است. پیشوند ها (تکرارها، تغییرات مانند آدرس، و غیره) را می توان به آن اضافه کرد. به عنوان operands، ثابت، نام ثبت نام، آدرس در RAM، و غیره تفاوت بین Intel و AT & T نگرانی های استاندارد عمدتا به ترتیب انتقال اپندورها و نحو آنها با روش های مختلف آدرس.

Mnemonics مورد استفاده معمولا برای همه پردازنده های یک معماری یا خانواده معماران مشابه است (در میان شناخته شده - mnemonics از پردازنده ها و کنترل کننده ها موتورولا، ARM، X86). آنها در مشخصات پردازنده شرح داده شده اند.

به عنوان مثال، پردازنده Zilog Z80 سیستم فرماندهی اینتل I8080 را به ارث برده، آن را گسترش داد و آن را تغییر داد (و ثبت نام ها را تغییر داد) به راه خود تغییر داد. به عنوان مثال، من Intel MOV را در LD تغییر دادم. پردازنده های Fireball موتورولا سیستم فرمان Z80 را به ارث برده اند، آن را برش دادند. در عین حال، موتورولا رسما به Intel Mnemonics بازگشت. و ب این لحظه نیمی از مونتاژ برای سنگ های قیمتی با Intel Mnemonics، و نصف با Zilog Mnemonics کار می کند.

دستورالعمل

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

  • تعریف داده ها (ثابت ها و متغیرها)
  • مدیریت سازمان سازمان در حافظه و پارامترهای فایل خروجی
  • حالت عملیات کامپایلر
  • همه نوع انتزاعها (به عنوان مثال، عناصر زبان های سطح بالا) - از ثبت رویه ها و توابع (برای ساده سازی اجرای پارادایم برنامه نویسی روش) به ساختارهای شرطی و چرخه ها (برای ساختار برنامه نویسی ساختاری)
  • ماکرو

مبدا و انتقاد از اصطلاح "Assembler Language"

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

زبان مونتاژ در روسیه اغلب به نام "اسمبلر" نامیده می شود (و چیزی مرتبط با آن "اسمبلر" است)، که، طبق ترجمه انگلیسی کلمه، نادرست است، اما متناسب با قوانین زبان روسی است. با این حال، خودمبلر خود (برنامه) نیز به سادگی "اسمبلر" نامیده می شود، و نه "کامپایلر زبان اسمبلر"، و غیره

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

عناصر نحو:

مثال ها:

سلام دنیا!

به عنوان مثال برای نسخه های اینتل X86 (IA32)

mOV AX، CS MOV DS، AX MOV AH، 9 MOV DX، OFFSET HELLO INT 21H XOR AX، AX INT 21H سلام: DB "Hello World!"، 13، 10، "$"

سلام دنیا!

مثال برای نسخه های Amiga

حرکت. l #dos حرکت می کند L 4. W، A6 JSR - 0198 دلار (A6)؛ حرکت Oldopenlibrary. l d0، a6 beq. s حرکت کردن L #Helloworld، D1 A) MOVEQ # 13، D2 JSR - $ 03AE (A6)؛ Writechars ب) JSR - $ 03B4؛ حرکت Putstr L A6، A1 حرکت. L 4. W، A6 JSR - $ 019E (A6)؛ کلبهری RTS DOS DC. ب "Dos.Library"، 0 HelloWorld DC. ب "سلام جهان!" ، $ a، 0

سلام دنیا!

مثال برای نسخه های Atarist

حرکت. L #Helloworld، - (A7) MOVE # 9، - (A7) TRAP # 1 ADDQ. L # 6، A7 Move # 0، - (A7) Trap # 1 HelloWorld: DC. ب "سلام جهان!"، $ 0D، $ 0A، 0

سلام دنیا!

به عنوان مثال برای نسخه های اینتل X86 (IA32)

NASM لینوکس توسط نحو اینتل استفاده می شود. تدوین و پیوند:

  • nASM -F ELF -O HELLO.O سلام.
  • ld-i hello.o

بخش. Data Msg DB "Hello، World!"، 0XA LEN EQU $ - بخش MSG. متن global _start _start:؛ نقطه ورود MOV EAX، 4؛ "نوشتن" سیستم تماس MOV EBX، 1 MOV ECX، MSG؛ اشاره گر به داده های MOV EDX، LEN؛ مقدار داده int 0x80؛ CALL CORE MOV EAX، 1؛ "_exit" سیستم تماس MOV EBX، 0؛ بازگشت 0 (همه خوب) int 0x80؛ کرنل تماس بگیرید

سلام دنیا!

مثال برای نسخه های PDP-8

/ - نظرات.

/ سلام جهان در اسمبلر برای دسامبر PDP - 8 * 200 سلام، CLL CLL TLS / TLS پرچم چاپ را تنظیم می کند. TAD Charac / ایجاد یک فهرست DCA IR1 ثبت نام / برای دریافت TAD M6 کاراکتر / پیکربندی متر برای شخصیت های شمارش / افزایش DCA. بعد، TAD I IR1 / دریافت نماد. نوع JMS / نوع آن. ISZ تعداد / انجام کاری دیگری؟ jmp بعدی / نه، نوع دیگر شخصیت HLT را وارد کنید، 0 / TSF TSF JMP Subroutine. - 1 TLS CLA jmp من charac را تایپ می کنم. / به عنوان مقدار اولیه IR1 استفاده می شود. 310 / H 305 / E 314 / L 314 / L 317 / O 254 /، 240/327 / W 317 / O 322 / R 314 / L 304 / D 241 /! M6، - 15 تعداد، 0 IR1 \u003d 10 دلار

سلام دنیا!

مثال برای نسخه های PDP-11

این برنامه بر روی Macroassembler ماکرو 11 نوشته شده است تا این برنامه را در دستور OS RT-11 اجرا کند:

ماکرو سلام

خطاهای شناسایی شده: 0

لینک سلام - لینک RUN HELLO - RUN

عنوان سلام جهان؛ نام. mcall ttyout ،. خروج Hello :: MOV #MSG، R1؛ آدرس اولیه رشته $ 1: MOVB (R1) +، R0؛ ما نماد انجام شده زیر را دریافت می کنیم؛ اگر صفر باشد، از چرخه بیرون بیایید. ttyout؛ در غیر اینصورت نماد BR 1 $ را چاپ کنید تکرار چرخه انجام شده :. خروج از MSG :. Asciz / Hello، World! /؛ رشته سلام، جهان! . پایان سلام؛ پایان برنامه سلام

سلام دنیا!

مثال برای نسخه های سیستم / 360، سیستم / 370

سیستم IBM / 360/370/390 زبان پایه پایه.

// Exec Assembly شروع به اصلی Balr 2، 0 با استفاده از *، 2 باز کردن چاپ MVC Buf، HW Put Print Close Print Eoj HW DC CL132 "Hello World" Buf DS CL132 چاپ DTFPR ioarea1 \u003d Buf، Devaddr \u003d Syslst، Blksize \u003d 132، * دستگاه \u003d 3203، کنترل \u003d بله، printov \u003d بله پایان اصلی / * // exec lnkedt // exec / * / &

سلام دنیا!

مثال برای نسخه های اپل II

* سلام جهان برای 6502 سیب] [* ******************************** strout equ $ db3a ldy #\u003e hello lda #< HELLO JMP STROUT HELLO ASC "HELLO WORLD !", 00

سلام دنیا!

مثال برای نسخه های PDP-10

Chttyo - تمام ورودی / خروجی با استفاده از کانال های I / O انجام می شود. بهتر است نام های نمادین را برای آن کانال هایی که استفاده می کنید، ایجاد کنید و آنها را با CH شروع کنید. این نام ها را با استفاده از اپراتور Midas \u003d\u003d تعریف کنید.

تماس یک نام نمادین برای تماس با یک تماس سیستم است. فرمت آن: .call.

باز کانال ورودی / خروجی را باز می کند. نیاز به دو پارامتر - شماره کانال و نام دستگاه در Sixbit.

از دست دادن٪ LSFIL یک تماس سیستم است که پیام خطای ورودی / خروجی را چاپ می کند، اگر ناگهان اتفاق افتاد.

IoT یک تماس سیستم است که در واقع در ورودی / خروجی مشغول به کار است. به عنوان یک پارامتر، شما باید کانال و آدرس حاوی کد نماد را برای خروجی مشخص کنید. به عنوان مثال، "H نشان دهنده H.

عنوان printrello a \u003d 1 chttyo \u003d\u003d 1؛ کانال برای خروجی شروع:؛ افتتاح کانال TTY . تماس [SETZ؟ sixbit / باز / [. uao، chttyo]؟ [SIXBIT / TTY /] ((SETZ))]. از دست دادن٪ lsfil ioT chttyo، ["h]؛ چاپ سلام جهان نماد .. IoT Chttyo، [" e]. IoT Chttyo، ["l]. IoT Chttyo، [" l]. IoT Chttyo، [O]. IoT Chttyo، [^ m]؛ نماد یک خط جدید. IoT Chttyo، [W]. IoT Chttyo، [O]. IoT Chttyo، ["r]. IoT Chttyo، ["L]. IoT Chttyo، [" d]. مقدار؛ برنامه، توقف :) پایان شروع

شماره فیبوناچی:

به عنوان مثال برای نسخه های MIPS32

شبیه ساز مریخ. نتیجه گیری کنسول مریخ:

شماره های فیبوناچی عبارتند از: 1 1 2 3 5 8 13 21 34 55 89 144 - برنامه به پایان رسید در حال اجرا -

این برنامه 15 عدد فیبوناچی را نمایش می دهد. تعداد اعداد را می توان در بخش. DATA تغییر داد.

فضای داده: .asciiz "" سر: .asciiz "اعداد فیبوناچی عبارتند از: \\ n" FIB :.word 0: 15 اندازه :.word 15 .text اصلی اصلی: LA $ T0، FIB LA $ T5، اندازه LW $ T5، 0 ($ T5) LI $ t2، 1 add.d $ f0، $ f2، $ F4 SW $ T2، 0 ($ T0) SW $ T2، 4 ($ t0) addi $ t1، $ t5، - 2 حلقه: LW $ t3، 0 ($ t0) lw $ t4، 4 ($ t0) اضافه کردن $ T2، $ T3، $ T4 SW $ T2، 8 ($ t0) addi $ t0، $ t0، 4 addi $ t1، $ t1، - 1 bgtz $ t1، loop la $ a0، fib move $ a1، $ t5 Jal چاپ Li $ v0، 10 syscall print: اضافه کردن $ t0، $ صفر، $ a0 اضافه کردن $ t1، $ صفر، $ A1 la $ a0، سر Li $ v0، 4 syscall out: lw $ a0، 0 ($ t0) لی $ v0، 1 syscall la $ A0، فضای Li $ v0، 4 syscall addi li $ v0، 1 $ a0، ($ t2) syscall la $ a0، string1 li $ v0، 4 syscall mults $ t1، $ t2 mflo $ T1 Li $ v0، 1 la $ A0، ($ t1) syscall la $ a0، string2 li $ v0، 4 syscall addiu $ t2، $ t2، 1 beq $ t2، 16، endloop j loop endloop: li $ v0، 10 syscall



اسمبلر

اسمبلر - زبان برنامه نویسی سطح پایین. زبان نام خود را از کلمه اسمبلر - یک جمع کننده. 50 سال دیگر وجود داشت. به عنوان یک آنالوگ نمادین از زبان ماشین.
دستورات اسمبلر یکی به یک مربوط به دستورات پردازنده و در واقع، نشان دهنده یک فرم نمادین مناسب از دستورات ضبط و استدلال است. همچنین، اسمبلر اتصال قطعات برنامه را تضمین می کند و داده های از برچسب های انجام شده در طول مونتاژ (برای هر برچسب، آدرس محاسبه می شود، پس از آن هر ورودی برچسب توسط این آدرس جایگزین می شود).
از آنجا که سیستم های فرمان Microprocessor متفاوت هستند، هر پردازنده مجموعه ای از دستورات خود را در زبان اسمبلر دارد.
با کمک یک اسمبلر، می توانید چنین برنامه هایی را که غیرممکن هستند، بنویسید، یا به زبان های دیگر بسیار دشوار است. به عنوان مثال: ژنراتورهای کلیدی (keygen)، مانیتور سیستم، رانندگان برای تجهیزات و یا حتی سیستم عامل.
زبان های سطح بالا ("C"، "پاسکال"، "دلفی"، و غیره) کنترل قابل اعتماد بر روی جریان داده ها، آدرس های حافظه یا ثبت های پردازنده را ارائه نمی دهند، و همچنین همه آنها تحت یک نوع خاص توسعه یافتند سیستم عامل، اسمبلر می تواند تبدیل به یک اسمبلر همان، اما کار بر روی پلت فرم علمی ناشناخته، و ایجاد برنامه های تحت این پلت فرم.
برنامه های مونتاژ، در مقایسه با برنامه های نوشته شده در زبان های سطح بالا، در ده ها تن کمتر انجام می شود و آنها ده برابر سریعتر کار می کنند. یک مثال می تواند به عنوان سیستم عامل Menuetos، که بر روی اسمبلر تخت نوشته شده و متناسب با یک دیسک (1.44 مگابایت) باشد، و کیت شامل برنامه های کاربردی مانند: یک ویرایشگر کد مونتاژ با نور پس زمینه، کار با یک سیستم فایل، 3D محافظ صفحه نمایش، برخی از بازی ها، تصاویر پس زمینه از تصاویر، اسمبلر تخت کامپایلر، ترمینال، پخش سی دی و خیلی بیشتر. مزیت این است که می توان آن را به سرعت از اینترنت دانلود کرد (حتی با سرعت اتصال کوچک).
در حال حاضر، اکثر متخصصان نرم افزار در زبان های سطح بالا مانند پاسکال یا C در حال توسعه هستند، که در هنگام نوشتن برنامه ها ساده تر است، اما قدرتمندترین و کارآمدتر است نرم افزار به طور کامل یا به طور جزئی در زبان اسمبلر نوشته شده است.

ادبیات
1. پیتر آبل - اسمبلر. زبان و برنامه نویسی برای IBM PC - M.، 1999.

اسمبلر

اسمبلر(از انگلیسی. اسمبلر - جمع کننده) - کامپایلر متن منبع برنامه نوشته شده در زبان اسمبلر، در زبان ماشین.
همانند زبان خود، مونتاژ ها معمولا برای یک معماری خاص، سیستم عامل و نسخه نحو زبان خاص خاص هستند. در عین حال، چندگانه یا جهانی (دقیق تر، جهانی محدود است، زیرا در زبان سطح پایین شما نمی توانید برنامه های سخت افزاری مستقل را بنویسید) مونتاژ هایی که می توانند بر روی سیستم عامل های مختلف و سیستم عامل کار کنند. در میان دومی، شما همچنین می توانید یک گروه متقاطع متقاطع را که قادر به جمع آوری کد ماشین و ماژول های اجرایی (فایل ها) برای دیگر معماری و سیستم عامل است، برجسته کنید.
مجمع ممکن است اولین و نه آخرین مرحله در راه برای به دست آوردن یک ماژول اجرایی برنامه باشد. بنابراین، بسیاری از کامپایلرها از زبان های برنامه نویسی سطح بالا نتیجه را به شکل یک برنامه در زبان اسمبلر، که مونتاژ در آینده پردازش می کند، ارائه می دهد. همچنین، مونتاژ حاصل ممکن است اجرا نشود، و ماژول شیء حاوی بلوک های پراکنده کد دستگاه و داده های برنامه که از آن (یا از چند ماژول شیء) در آینده با استفاده از ویرایشگر پیوند می تواند توسط یک فایل اجرایی بدست آید.
سلول های حافظه ویژه به طور مستقیم در پردازنده قرار دارند. کار با رجیسترها بسیار سریعتر از سلول های RAM انجام می شود، بنابراین ثبت نام ها به طور فعال در برنامه های زبان اسمبلر و کامپایلرهای زبان های سطح بالا استفاده می شود.
اسامی ثبت نام ها از هدف آنها آغاز می شود:

EAX / AX / AH / AL (ضبط باتری) - باتری؛
EBX / BX / BH / BL (ثبت نام پایه) - ثبت پایگاه داده؛
ECX / CX / CH / CL (شمارنده ثبت نام) - شمارنده؛
EDX / DX / DH / DL (ثبت اطلاعات) - ثبت اطلاعات؛
ESI / SI (ثبت نام شاخص منبع) - شاخص منبع؛
EDI / DI (ثبت نام فهرست مقصد) - شاخص گیرنده (گیرنده)؛
ESP / SP (ثبت نام اشاره گر پشته) - ثبت نام اشاره گر پشته؛
EBP / BP (ثبت نام اشاره گر پایه) - ثبت نام اشاره گر پایه پشته.

دستورات پردازش ردیف
برای کار با ردیف ها، یا زنجیره ای از نمادها یا اعداد (به سادگی صحبت کردن، با آرایه ای از داده های دلخواه) در MP تعدادی از دستورات ویژه وجود دارد:
mOVS - ارسال رشته ها؛
cMPS - مقایسه دو خط؛
دریاها - جستجو در رشته یک عنصر داده شده؛
lODS - بارگذاری باتری (Al یا Ah Registers) از خط؛
sTOS - عنصر ضبط یک رشته از یک باتری (Registers AH یا AL).

کرامت

· زبان اسمبلر به شما اجازه می دهد کد سریعترین و فشرده را بنویسید، که معمولا برای این پردازنده امکان پذیر است.
· سرعت عملیات - با بهینه سازی الگوریتم محاسبات و / یا دسترسی منطقی به RAM (به عنوان مثال، اگر تمام داده های منبع ذخیره شده در ثبت کننده پردازنده، شما می توانید دسترسی غیر ضروری به OP را حذف کنید)، توزیع داده ها، توابع محاسبات جدول ؛
· حجم کد (از جمله استفاده کارآمد نتایج متوسط) کاهش حجم کد نیز سرعت اجرای برنامه را افزایش می دهد.
· اطمینان از حداکثر استفاده از قابلیت های خاص یک پلت فرم خاص، که همچنین به شما امکان می دهد برنامه های کارآمدتر را ایجاد کنید، از جمله منابع کمتر منابع انسانی.
· برنامه نویسی در زبان اسمبلر امکان دسترسی مستقیم به تجهیزات را فراهم می کند، و به ویژه پورت های I / O، پردازنده های پردازنده و غیره در بسیاری از سیستم عامل ها، تماس مستقیم از برنامه های کاربردی برای ثبت ثبت نام تجهیزات جانبی برای اطمینان از سیستم و استثنائات "انجماد" مسدود شده است.
· زبان اسمبلر اغلب برای ایجاد رانندگان سخت افزاری و هسته سیستم عامل استفاده می شود زمانی که توافقنامه کاری موقت مهم است. دستگاه های جانبی از جانب پردازنده مرکزی.
· زبان اسمبلر برای ایجاد "سیستم عامل BIOS" استفاده می شود.
· با کمک زبان اسمبلر، زیرگروه های وابسته به دستگاه کامپایلرها و مترجمان سطح بالا اغلب ایجاد می شوند و سازگاری سیستم عامل ها اجرا می شود.
· با کمک برنامه Disassembler، شما می توانید الگوریتم های عملیاتی برنامه را تحت مطالعه در صورت عدم فهرست در زبان سطح بالا، مطالعه تنها کد های ماشین، اما در برنامه های پیچیده غیر معمول آن بسیار، بسیار دشوار است.

معایب
· به موجب جهت گیری ماشین (سطح پایین "سطح پایین) زبان اسمبلر، یک فرد برای خواندن و درک برنامه در آن در مقایسه با زبان های برنامه نویسی سطح بالا دشوار است. این برنامه شامل عناصر بیش از حد "کوچک" است - دستورات ماشین به ترتیب، برنامه نویسی و اشکال زدایی پیچیده هستند، پیچیدگی و احتمال ایجاد خطا در حال رشد است.
· افزایش کیفیت برنامه نویس برای به دست آوردن کد کیفیت مورد نیاز است: کد نوشته شده توسط برنامه نویس متوسط \u200b\u200bدر زبان اسمبلر معمولا بهتر یا حتی بدتر از کد تولید شده توسط کامپایلر بهینه سازی برای برنامه های قابل مقایسه در زبان سطح بالا نیست.
· یک برنامه سطح بالا می تواند با بهینه سازی خودکار برای ویژگی های پلت فرم جدید هدف، برنامه در زبان اسمبلر در پلت فرم جدید، می تواند از مزایای خود را بدون کد بازنویسی دستی از دست بدهد.
· به عنوان یک قانون، کتابخانه های کمتر در مقایسه با زبان های برنامه نویسی مدرن صنعتی موجود است.
· قابلیت حمل و نقل برنامه های کامپیوتری با یک معماری دیگر و سیستم فرماندهی وجود ندارد.

سازگاری
یک برنامه در نظر گرفته شده برای یک نوع اسمبلر نمی تواند بر روی دیگری بدون تغییر رادیکال یا تبدیل اتوماتیک کامپایل شود! اما حتی در میان مونتاژ "نوع" آنها یک دسته، دلیلی و بسیاری از تفاوت ها وجود دارد: در کلید واژه ها، در قوانین طراحی لیست، در کتابخانه های عرضه شده و فایل های هدر و غیره اگر تنها سازگاری به صراحت نباشد، لازم است برنامه را با همان یک اسمبلر که در نظر گرفته شده است، پخش کنید. در غیر این صورت، آماده شدن برای تغییرات (یعنی پذیرش). تفاوت ها اغلب در مکان های غیر منتظره ای ظاهر می شوند. برخی از مونتاژ ها درک می کنند که "MOV EAX، X" همانند "MOV EAX، [x]" است، برخی از آنها - نه. آنها اشتباه می کنند و خطایی را مطرح می کنند. اما هیچ چیز دیگری! خیلی بدتر از زمانی که مترجم سکوت این طرح را به عنوان "MOV EAX، OFFSET X" تفسیر می کند، که دقیقا همان چیزی نیست! بنابراین هنگام انتقال برنامه شما باید بسیار و بسیار مراقب باشید.

سازگاری سیستم عامل ها. برنامه های MS-DOS-Oriented بدون نه تنها حمل و نقل قابل حمل نیست، بلکه عدم تحمل. برای آنها مشخص است تعامل مستقیم با تجهیزات موجود در NT تنها از سطح هسته ای، به ذکر است که کد 16 بیتی از برنامه های 32 بیتی از طریق DPMI نامیده می شود و سپس بدون truscy نامیده می شود.

بنابراین، قبل از پخش برنامه مونتاژ، لازم است که برای آن مترجم و سیستم عامل آن در نظر گرفته شده است! با قطعات مونتاژ، از زمینه "بومی" گرفتار شده اند، حتی بدتر می شوند. فرض کنید، در برخی مقاله، یک پذیرش ضد حلقه جالب توصیف شده است و یک کد اسمبلر داده شده است، اما چگونه آن را در برنامه خود جاسازی می کند - نمی گوید. وضعیت آشنا، آیا این نیست؟ پخش مستقیم امکان پذیر نیست - مترجم به شدت fissile، اما هیچ چیز نمی گوید.

مونتاژ نرم

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

ASM -\u003e .obj -\u003e .exe / .dll / .com

در مرحله اول (.asm -\u003e .obj) از فایل Assembler با تدوین، فایل های کد مسیحی متوسط \u200b\u200bدارای فرمت پسوند به دست آمده (فایل های اضافی INC می تواند مورد استفاده قرار گیرد). فایل با Extension.OBJ شامل کد دستگاه بهینه شده است که خطاهای نحوی و معنایی برآورده نشده است. اگر خطاها در فایل منبع با برنامه در زبان اسمبلر شناسایی شوند، برنامه نویسی لیستی از خطاهای شناسایی شده که در آن خطاها با شماره خط که در آن شناسایی می شوند، مشخص می شود. برنامه نویس به صورت چرخه ای انجام می شود اقدامات ویرایش و تدوین را تا زمانی که تمام خطاها در فایل منبع حذف شوند، انجام می شود. در این مرحله، در حال حاضر ممکن است یک برنامه آماده تهیه شود، اما اغلب آنها برخی از اجزای آن را ندارند. اگر کامپایلر به هر دلیلی (به اشتباه مسیر به چنین فایل ثبت شده یا فایل از دست رفته است) نمی تواند یک فایل وارز پیدا کند، سپس یک هشدار صادر می شود و فایل OBJ دریافت می شود.

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

به عنوان یک نتیجه از مونتاژ، به اصطلاح "فایل شی" به دست آمده است. به عنوان یک ویژگی اضافی، Assembler می تواند یک فایل لیست برنامه ایجاد کند.

معمولا برای به دست آوردن فایل های کد شی، شما باید برنامه مونتاژ مناسب (مایکروسافت ML.exe و Tasm.exe برنامه های شرکت Borland) را انجام دهید خط فرمان نام فایل با متن برنامه

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

برنامه طرح بندی

مرحله بعدی (.obj -\u003e .exe / .dll / .com) پیوند یا طرح بندی نامیده می شود و برای جایگزینی نام های شخصیتی که توسط یک برنامه نویس به آدرس های واقعی استفاده می شود، جایگزین می شود.

مقایسه محتوای هگزادسیمال OBJ و فایل exeکه شما گرفتید فایل EXE همان دنباله ای از بایت ها را در فایل OBJ دارد. اما به غیر از این هنوز هم وجود دارد: نام فایل مونتاژ، نسخه Assembler، بخش "خود"، و غیره.

این اطلاعات "خدمات" در نظر گرفته شده برای این موارد زمانی که فایل اجرایی شما می خواهید از چندین جمع آوری کنید. هنگام توسعه برنامه های بزرگ متن منبع، به عنوان یک قاعده، از چند ماژول (فایل ها با متون منبع)، به دلیل آن است که ناخوشایند برای ذخیره تمام متون در یک فایل - آنها دشوار است برای حرکت.

هر ماژول به یک فایل جداگانه با کد شیء کامپایل می شود. هر یک از این فایل ها بخش های کد / داده / پشته خود را تجویز می کنند که پس از آن باید به یک ترکیب شوند. و فایل اجرایی ما باید تنها یک - با یک بخش تک کد / داده / پشته دریافت کنیم. این لینک است و: تعریف لینک های آدرس و Unites را تکمیل می کند اگر لازم باشد، چندین ماژول نرم افزاری در یک. و این یکی با ما انجام می شود.

علاوه بر این، لازم است کد دستگاه را به ماژول های ما اضافه کنید که توابع استاندارد های مختلف را اجرا می کنند (به عنوان مثال، محاسبات گنجه یا توابع ریاضی LN). چنین توابع موجود در کتابخانه ها (فایل ها با فرمت استاندارد. lib)، که با کامپایلر عرضه می شوند یا به طور مستقل ایجاد می شوند. بنابراین، روند آماده سازی لزوما شامل مرحله طرح بندی زمانی است که همه ناشناخته ها زمانی تعریف می شوند که آدرس متغیرهای فروپاشی یا توابع تعیین شده تعیین می شود.

فرآیند ترکیبی از ماژول های شی به یک فایل توسط یک برنامه ویژه لینک یا یک برنامه جمع آوری شده (برنامه Link.exe از شرکت Microsoft and Tlink.exe Borland) انجام می شود که اتصال ماژول های شیء و کد ماشین از توابع استاندارد را انجام می دهد آنها در کتابخانه ها، و تولید برنامه کاربردی یک کد اجرایی برای یک پلت فرم خاص است.

کد اجرایی یک برنامه کامل با افزونه COM، DLL یا EXE است که می تواند بر روی یک کامپیوتر با یک سیستم عامل نصب شده اجرا شود که این برنامه ایجاد شده است. نام فایل اجرایی توسط اولین فایل AOBJ تنظیم می شود. برای اتصال شما نیاز به شماره گیری در خط فرمان:

لینک prog1.obj prog2.obj یا tlink prog1.obj prog2.objj

محتویات فایل شیء توسط یک لینکر مورد تجزیه و تحلیل قرار گرفته است. این تعیین می کند که آیا یک برنامه وجود دارد لینک های خارجیبه این معناست که آیا برنامه فرماندهی برنامه شامل در یکی از کتابخانه های ماژول شیء (کتابخانه لینک) است. Linker این پیوندها را در فایل شیء پیدا می کند، روش های لازم را از کتابخانه ها کپی می کند، آنها را با فایل شیء ترکیب می کند و یک فایل اجرایی را ایجاد می کند (فایل اجرایی). مانند ویژگی های اضافی Linker می تواند یک فایل متقابل پیوند حاوی طرح فایل اجرایی دریافتی ایجاد کند.

منابع مورد استفاده
1. https://ru.wikipedia.org/
2. http://natalia.appmat.ru/
3. http://www.codenet.ru/
4. http://wasm.ru/
5. Norton P.، Sauke D. Assembler زبان برای IBM PC. متر: کامپیوتر، 1992.

1. هنگامی که ماشین های سوراخ کردن شمارش را اختراع کرد؟ چه وظایفی بر روی آنها حل شد؟

2. رله الکترومکانیکی چیست؟ هنگامی که ماشین های محاسباتی رله ایجاد شد؟ چه سرعت آنها داشتند؟
3. کجا و چه زمانی اولین کامپیوتر بود؟ چه نامیده شد؟
4. نقش جان فون نومان در ایجاد یک کامپیوتر چیست؟
5. چه کسی طراح اولین کامپیوتر داخلی بود؟
6. در چه چیزی پایه عنصر ماشین های نسل اول را ایجاد کرد؟ ویژگی های اصلی آنها چیست؟
7. کدام پایگاه داده های ابتدایی تولید ماشین های نسل دوم را ایجاد کرد؟ مزایای آنها نسبت به نسل اول کامپیوتر چیست؟
8. مدار یکپارچه چیست؟ هنگامی که اولین رایانه ها در مدارهای مجتمع بودند؟ آنها چه نام کردند؟
9. زمینه های جدید کاربرد کامپیوتر با ظاهر ماشین های نسل سوم چه هستند؟
10. ریزپردازنده چیست؟ وقتی اولین ریزپردازنده بود؟
11. کامپیوتر Microevm و رایانه شخصی چیست؟
12. چه نوع کامپیوتر در جهان رایج است؟
13. ابر رایانه چیست؟
14. سیستم های کامپیوتری خوشه ای چیست؟
15. ویژگی های نسل پنجم رایانه چیست؟

نام اولین دستگاه محاسبات را نام ببرید. Aback Calculator Armitometer نمرات روسیه کدام ایده را در وسط قرار می دهد

چارلز بابابیا، ریاضیدان انگلیسی قرن نوزدهم؟

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

ایده ایجاد تلفن همراه

ایده ایجاد روبات های مدیریت شده توسط کامپیوتر

چه سالی بود و اولین کامپیوتر بر اساس لامپ های الکترونیکی بود؟

1945، ایالات متحده آمریکا

1944، انگلستان

1946، فرانسه

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

طرح های یکپارچه

نیمه هادی ها

لامپ های الکترونیکی

مدارهای مجتمع فوق العاده

نام اولین کامپیوتر شخصی چیست؟

نام دستگاه مرکزی کامپیوتر را نام ببرید.

پرداز

واحد سیستم

منبع تغذیه

مادربرد

پردازشگر اطلاعات ارائه شده را پردازش می کند:

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

به انگلیسی

در روسی

در زبان موتور (در کد دودویی)

برای وارد کردن اطلاعات عددی و متن مورد استفاده

صفحه کلید

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

برای وارد کردن تصاویر تصاویر و اسناد متن

برای طراحی آن یک دسته خاص

حرکت مکان نما بر روی صفحه نمایش مانیتور

تصاویر هولوگرافی

10. چه نوع چاپگر توصیه می شود از اسناد مالی برای چاپ استفاده کنید؟

چاپگر ماتریس

جت چاپگر

پرینتر لیزری

چه نوع چاپگر توصیه می شود برای چاپ مقالات استفاده کنید؟

چاپگر ماتریس

جت چاپگر

پرینتر لیزری

چه نوع چاپگر توصیه می شود از عکس ها برای چاپ استفاده کنید؟

چاپگر ماتریس

جت چاپگر

پرینتر لیزری

با عدم انطباق با نیازهای بهداشتی و بهداشتی کامپیوتر، اثر مضر بر سلامت انسان می تواند ارائه شود ...

نظارت بر یک لوله تابش الکترونیکی

مانیتور بر روی کریستال های مایع

پانل های پلاسما

هنگامی که کامپیوتر خاموش می شود، تمام اطلاعات از ... پاک می شود

حافظه دسترسی تصادفی

هارد دیسک

دیسک لیزری

کدام کامپیوتر در کامپیوتر ذخیره می شود؟

حافظه خارجی;

cPU؛

آهنگ های نوری دارای ضخامت کوچکتر هستند و بیشتر به شدت روی ...

موتور ویدئو دیجیتال (دیسک دی وی دی)

دیسک فشرده (CD - دیسک)

دستگاه های ورودی وارد ...

دستگاه خروجی شامل ...

صفحه کلید، ماوس، جوی استیک، پر نور، اسکنر، دوربین دیجیتالمیکروفون

ستون های صوتی، مانیتور، چاپگر، هدفون

هارد، پردازنده، ماژول های حافظه، مادربرددیسکت

این برنامه نامیده می شود ...

برنامه کامپیوتری اگر این کار را مدیریت کنید، می توانید کار کامپیوتر را مدیریت کنید ...

در رم

در یک دیسک انعطاف پذیر

بر روی هارد دیسک

در CD - دیسک

داده ها ...

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

اطلاعات ارائه شده در فرم دیجیتال و پردازش شده بر روی کامپیوتر

داده های دارای یک نام و ذخیره شده در حافظه بلند مدت

فایل ...

متن چاپ شده بر روی کامپیوتر

اطلاعات ارائه شده در فرم دیجیتال و پردازش شده بر روی کامپیوتر

برنامه یا اطلاعات دارای یک نام و ذخیره شده در حافظه بلند مدت

با قالب بندی سریع یک دیسک انعطاف پذیر ...

پاک کردن دایرکتوری دیسک

تمام داده ها پاک می شوند

Defragmentation دیسک انجام می شود

تأیید سطح دیسک

با قالب بندی کامل یک دیسک انعطاف پذیر ...

تمام داده ها پاک می شوند

چک کامل دیسک انجام می شود.

پاک کردن دایرکتوری دیسک

دیسک سیستمیک می شود

در یک سیستم فایل سلسله مراتبی چند سطح ...

فایل ها در یک سیستم پوشه های توزیع شده ذخیره می شوند.

فایل ها در یک سیستم ذخیره می شوند که یک توالی خطی است

تاریخ توسعه تجهیزات محاسبات:

1. نام اول دستگاه محاسباتی.
1) ABAK
2) ماشین حساب
3) ArithMeter
4) نمرات روسیه

2. چه ایده ای در اواسط قرن نوزدهم، ریاضیدان انگلیسی چارلز بابیگ انگلیسی بود؟
1) ایده ایجاد یک دستگاه قابل شمارش نرم افزاری کنترل شده با یک دستگاه محاسباتی، یک دستگاه کنترل، و همچنین یک دستگاه ورودی و چاپ
2) ایده ایجاد یک تلفن همراه
3) ایده ایجاد روبات های مدیریت شده توسط یک کامپیوتر
3. نام اولین ماشین آلات محاسبات برنامه نویس.
1) HELL LAVLEY
2) سرگئی لتف
3) بیل گیتس
4) سوفیا Kovalevskaya

4. در آن سال و اولین کامپیوتر بر اساس لامپ های الکترونیکی بود؟
1) 1945، ایالات متحده آمریکا
2) 1950، اتحاد جماهیر شوروی
3) 1944، انگلستان
4) 1946، فرانسه

5. چه مبنای نسل سوم تولید شد؟
1) مدارهای مجتمع
2) نیمه هادی ها
3) لامپ های الکترونیکی
4) مدارهای مجتمع فوق العاده بالا

6. اولین رایانه شخصی چیست؟
1) اپل II
2) IBM PC
3) دل
4) Corvette
دستگاه کامپیوتری ......................... 15
1. نام دستگاه مرکزی کامپیوتر را نام ببرید.
1) پردازنده
2) بلوک سیستم
3) منبع تغذیه
4) مادربرد
2. اطلاعات فیزیکی در کامپیوتر ثبت شده و منتقل می شود؟
1) ارقام؛
2) استفاده از برنامه ها؛
3) به شکل سیگنال های الکتریکی ظاهر می شود.

3. پردازنده اطلاعات ارائه شده را پردازش می کند:
1) در سیستم شماره دهدهی
2) به زبان انگلیسی
3) در روسیه
4) در دستگاه (در کد دودویی)
4. برای وارد کردن اطلاعات عددی و متن مورد استفاده
1) صفحه کلید
2) ماوس
3) Trekball
4) دسته
5. مهمترین مشخصه دستگاه های ورودی مختصات رزولوشن است که معمولا 500 DPI (نقطه در هر اینچ - نقطه در هر اینچ (1 اینچ \u003d 2.54 سانتی متر)) است که به معنی ...
1) هنگام حرکت دادن ماوس به یک اینچ، اشاره گر ماوس به 500 امتیاز حرکت می کند
2) هنگام حرکت دادن ماوس با 500 امتیاز، اشاره گر ماوس یک اینچ را حرکت می دهد
6. اسکنر برای ...
1) برای وارد کردن تصاویر و اسناد متن
2) برای کشیدن آن یک دسته خاص
3) حرکت مکان نما بر روی صفحه نمایش مانیتور
4) گرفتن تصاویر هولوگرافی
دستگاه های خروجی اطلاعات ................. 21
1. چه نوع چاپگر مناسب برای استفاده از اسناد مالی برای چاپ مناسب است؟
1) پرینتر ماتریس
2) چاپگر جوهر افشان
3) پرینتر لیزری
2. چه نوع چاپگر توصیه می شود برای استفاده از خلاصه چاپ؟
1) پرینتر ماتریس
2) چاپگر جوهر افشان
3) پرینتر لیزری

1. چه نوع چاپگر توصیه می شود از عکس ها برای چاپ استفاده کنید؟
1) پرینتر ماتریس
2) چاپگر جوهر افشان
3) پرینتر لیزری
2. در صورت عدم انطباق با نیازهای بهداشتی و بهداشتی کامپیوتر، اثر مضر بر سلامت انسان می تواند ارائه شود ...
1) مانیتور بر روی یک لوله تابش الکترونیکی
2) مانیتور بر روی کریستال های مایع
4) پانل های پلاسما
3. دستگاهی که ورودی و خواندن اطلاعات را ارائه می دهد، نامیده می شود ...
1) درایو یا درایو

4. هنگامی که کامپیوتر خاموش می شود، تمام اطلاعات از ...
4) رام
5) هارد دیسک
6) دیسک لیزر
7) رژیم های غذایی
13. کدام رایانه برای اطلاعات ذخیره می شود؟
1) حافظه خارجی؛
2) مانیتور؛
3) پردازنده؛
2. آهنگ های نوری دارای ضخامت کوچکتر هستند و به شدت روی ...
1) موتور ویدئو دیجیتال (دی وی دی - دیسک)
2) دیسک جمع و جور (CD - دیسک)
3) دیسک
3. در کدام اطلاعات دیسک بر روی مسیرهای متمرکز ذخیره می شود، که در آن بخش های مغناطیسی و غیر واژینال جایگزین می شود
1) در یک دیسک
2) در یک دیسک جمع و جور
3) در DVD - دیسک

4. در دستگاه های ورودی شامل ...

1) هارد دیسک، پردازنده، ماژول های حافظه، مادربرد، فلاپی دیسک
5. در دستگاه خروجی شامل ...
1) صفحه کلید، ماوس، جوی استیک، پر نور، اسکنر، دوربین دیجیتال، میکروفون
2) ستون های صوتی، مانیتور، چاپگر، گوشی
3) هارد دیسک، پردازنده، ماژول های حافظه، مادربرد، فلاپی دیسک
6. برنامه نامیده می شود ...

7. برنامه کامپیوتری می تواند کار کامپیوتر را مدیریت کند اگر ...
1) در RAM
2) در یک دیسک انعطاف پذیر
3) در هارد دیسک
4) در CD - دیسک
8. داده ها ...
1) دنباله فرمان که کامپیوتر در طول فرآیند پردازش داده انجام می شود
2) اطلاعات ارائه شده در فرم دیجیتال و پردازش شده بر روی کامپیوتر
3) داده های دارای یک نام و ذخیره شده در حافظه بلند مدت
9. فایل ...
1) متن چاپ شده بر روی کامپیوتر
2) اطلاعات ارائه شده در فرم دیجیتال و پردازش شده بر روی کامپیوتر
3) برنامه یا اطلاعات دارای یک نام و ذخیره شده در حافظه بلند مدت

10. با قالب بندی سریع دیسک انعطاف پذیر ...
1) پاک کردن دایرکتوری دیسک پاک شده است.
2) تمام داده ها پاک می شوند
3) Defragmentation دیسک
4) بررسی کنید


برای شروع، ما اصطلاحات را درک می کنیم.

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

زبان برنامه نویسی سطح پایین (زبان برنامه نویسی سطح پایین) یک زبان برنامه نویسی است، تا حد امکان نزدیک به برنامه نویسی در کد های ماشین. بر خلاف کدهای ماشین، در زبان سطح پایین، هر دستور مربوط به یک عدد نیست، اما نام اختصاری فرمان (Mnemonic). به عنوان مثال، فرمان Add کاهش از کلمه افزودن است. بنابراین، استفاده از یک زبان سطح پایین به طور قابل توجهی ساده سازی برنامه های نوشتن و خواندن را ساده می کند (در مقایسه با برنامه نویسی در کد های ماشین). زبان سطح پایین به یک پردازنده خاص وابسته است. به عنوان مثال، اگر شما یک برنامه را در یک زبان سطح پایین برای پردازنده PIC نوشتید، می توانید مطمئن باشید که با پردازنده AVR کار نخواهد کرد.

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

زبان اسمبلر - این یک زبان برنامه نویسی سطح پایین است که در آن برنامه های خود را بنویسید. برای هر پردازنده، زبان مونتاژ خود وجود دارد.

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

در اکثر موارد، مونتاژ می گوید، و به معنای "زبان اسمبلر" است. حالا شما می دانید که اینها چیزهای مختلفی هستند و بنابراین کاملا درست نیست. اگر چه تمام برنامه نویسان شما را درک خواهند کرد.

مهم!
بر خلاف زبان های سطح بالا، مانند پاسکال، بیسیک، و غیره، زبان مونتاژ خود را برای هر اسمبلر وجود دارد. این قانون به طور اساسی توسط زبان اسمبلر از زبان های سطح بالا متمایز است. متون منبع برنامه (یا به سادگی "منابع") نوشته شده در زبان سطح بالا، شما در اغلب موارد می توانید کامپایلرهای مختلف را برای پردازنده های مختلف و سیستم عامل های مختلف کامپایل کنید. با منابع مونتاژ برای انجام این کار بسیار دشوار است. البته، این تفاوت تقریبا برای مونتاژ های مختلف قابل ملاحظه ای نیست، که برای پردازنده های مشابه در نظر گرفته شده است. اما واقعیت این است که برای هر پردازنده، مونتاژ خود و زبان اسمبلر آن وجود دارد. به این معنا، برنامه در زبان های سطح بالا بسیار ساده تر است. با این حال، تمام لذت ها باید پرداخت شود. در مورد زبان های سطح بالا، ما می توانیم چنین چیزهایی را به عنوان بزرگتر فایل اجرایی، بدترین سرعت و غیره


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

  1. . برنامه خوببه خصوص برای مبتدیان. شامل ویرایشگر منبع و برخی چیزهای مفید دیگر است. در ویندوز کار می کند، اگرچه برنامه ها تحت DOS نوشته شده اند. متأسفانه، برنامه هزینه پول (اما ارزش آن را دارد))). برای جزئیات، سایت http://www.emu8086.com را ببینید.
  2. - مونتاژ توربو از Borland. شما می توانید برنامه های هر دو DOS و برای ویندوز ایجاد کنید. همچنین ارزش پول و در حال حاضر دیگر پشتیبانی نمی شود (و Borland وجود ندارد). به طور کلی، چیز خوب است.
  3. - Assembler از مایکروسافت (رمزگشایی به عنوان یک مونتاژ ماکرو، و نه Microsoft Assembler، به عنوان بسیاری از uninitiated) فکر می کنم. شاید محبوب ترین اسمبلر برای پردازنده های اینتل. تا کنون پشتیبانی می شود. برنامه رایگان رایگان به این ترتیب، اگر شما آن را به طور جداگانه خریداری کنید، هزینه آن خواهد بود. اما این مشترکین MSDN رایگان در دسترس است و وارد بسته نرم افزاری ویژوال استودیو از مایکروسافت می شود.
  4. - اسمبلر از Watcom. مانند همه دیگران، دارای مزایا و معایب است.
  5. - این دارای امکانات کم است، اما دارای یک plus بزرگ است - به مجموعه استاندارد ویندوز وارد می شود. به دنبال آن در پوشه Windows \\ Command یا Windows \\ System32 باشید. اگر شما پیدا نکنید، سپس در سایر پوشه های دایرکتوری ویندوز.
  6. همچنین مطلوب است که هر کدام. مدیر فیلم Dission، مانند فرمانده Wolves (VC) یا فرمانده Norton (NC)، جلوگیری نمی کند. با کمک آنها، شما همچنین می توانید کدهای فایل هگزادسیمال را مشاهده کنید، اما نمی توانید ویرایش کنید. سردبیران هگزادسیمال رایگان در اینترنت بسیار زیاد است. در اینجا یکی از آنهاست: McAfee FileSInight v2.1. همان ویرایشگر را می توان برای کار با متون منبع برنامه ها استفاده کرد. با این حال، من آن را بیشتر دوست دارم این کار را با ویرایشگر زیر انجام دهید:
  7. ویرایشگر متن ما علاقه مند به نوشتن متون منبع برنامه های شما هستیم. من می توانم توصیه کنم ویرایشگر رایگان PSPAD، که از بسیاری از زبان های برنامه نویسی پشتیبانی می کند، از جمله زبان اسمبلر.
تمام برنامه های ارائه شده در این کتاب (و نمونه های برنامه) برای عملکرد مورد آزمایش قرار می گیرند. و این برنامه هایی است که برای اجرای نمونه هایی از برنامه های داده شده در این کتاب استفاده می شود.

و با این حال - کد منبع نوشته شده، به عنوان مثال برای EMU8086، کمی متفاوت از کد نوشته شده، به عنوان مثال، برای TASM. این تفاوت ها مشخص می شود.

اکثر برنامه های نشان داده شده در کتاب نوشته شده است. اول، چون این اسمبلر محبوب ترین و هنوز پشتیبانی می شود. ثانیا، زیرا با MSDN و با بسته نرم افزاری ویژوال استودیو مایکروسافت همراه است. خوب، در سوم، چون من صاحب خوشبختی یک کپی مجاز از MASM هستم.

اگر قبلا هر مونتاژ را که در لیست ذکر شده در بالا ذکر نشده است، باید به طور مستقل با نحو آن مقابله کنید و کتابچه راهنمای کاربر را بخوانید تا یاد بگیرد که چگونه با آن کار کنید. اما توصیه های کلی در این کتاب برای هر یک از (به خوبی یا تقریبا برای هر) عادلانه خواهد بود.

به منظور اینکه دستگاه برای انجام تیم های شخصی در سطح سخت افزاری، لازم باشد که یک دنباله خاصی از اقدامات را در زبان "Nolikov و واحدها" مشخص کنید. دستیار این کسب و کار یک اسمبلر خواهد بود. این یک ابزار است که با انتقال دستورات به زبان ماشین کار می کند. با این حال، نوشتن برنامه یک روند بسیار وقت گیر و پیچیده است. این زبان برای ایجاد ریه ها و اقدامات ساده طراحی نشده است. در حال حاضر، هر زبان برنامه نویسی مورد استفاده (Assembler Works Fine) به شما امکان می دهد تا وظایف خاصی را که به شدت بر عملکرد سخت افزار تاثیر می گذارد، بنویسید. هدف اصلی ایجاد یک میکرو کوموند و کدهای کوچک است. این زبان فرصت های بیشتری را از، به عنوان مثال، پاسکال یا C.

شرح مختصری از زبانهای مونتاژ

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

یکی از ویژگی های متمایز کامپایلر سادگی برای استفاده است. این متفاوت از کسانی است که تنها با سطح بالا کار می کنند. اگر هر گونه زبان برنامه نویسی را در نظر بگیرید، اسمبلر دو برابر سریع و بهتر عمل می کند. به منظور نوشتن یک برنامه نور در آن، زمان زیادی نیازی نیست.

به طور خلاصه در مورد ساختار زبان

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

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

برای هر خط پردازنده، خود را با این وضعیت درست وجود دارد هر فرآیند، از جمله ترجمه شده است

زبان اسمبلر چندین نحو دارد که در مقاله مورد بحث قرار خواهد گرفت.

مزایای زبان

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

رانندگان، سیستم عامل، BIOS، کامپایلرها، مترجمان، و غیره - این همه برنامه در زبان اسمبلر است.

هنگام استفاده از یک disassembler، که یک ترجمه را از دستگاه در یک می سازد، ممکن است به راحتی درک کنید که چگونه یک یا چند کار سیستم کار می کند، حتی اگر هیچ توضیحی وجود ندارد. با این حال، این امکان وجود دارد تنها اگر برنامه ها نور باشند. متأسفانه، در کدهای غیر انتفاعی، درک آن دشوار است.

زبانها

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

به منظور نوشتن حتی بیشتر برنامه سادهبرنامه نویس باید واجد شرایط باشد، و سطح آن دانش بسیار بالا است. به طور متوسط \u200b\u200bمتخصص، متاسفانه، اغلب کدهای بد را می نویسد.

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

تیم زبان

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


استفاده از دستورالعمل ها

میکروکنترلرهای برنامه نویسی در زبان (Assembler این اجازه می دهد تا کاملا با عملکرد) از پایین ترین سطح در اکثر موارد با موفقیت به پایان برسد. بهتر است از پردازنده ها با یک منبع محدود استفاده کنید. برای تجهیزات 32 بیتی این زبان کاملا متناسب است اغلب در کدهای شما می توانید دستورالعمل ها را ببینید. این چیه؟ و آنچه که برای آن استفاده می شود؟

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


منشاء نام

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

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

macrofs

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

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