Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Vse_lektsii_po_assembleru.docx
Скачиваний:
8
Добавлен:
25.09.2019
Размер:
2.26 Mб
Скачать

Ассемблеры

Ассемблер – компьютерная программа компилятор исходного текста программы написанный на языке ассемблера в программу на машинном языке.

Ассемблеры как правило специфичны конкретной архитектуре ОС и варианту синтаксиса языка.

Ассемблеры DOS

Наиболее известны ассемблеры ОС DOS являлись:

Borland Turbo Assembler (TASM)

Microsoft Macro Assembler (MASM)

Watcom Assembler (WASM)

Так же в своё время был популярен простой ассемблер А86.

Ассмеблер для Windows

При появление ОС Windows появились расширения TASM, именуемое TASM 5+ позволившее создавать программы для выполнения в среде Windows

Microsoft поддерживает свой продукт под названием Microsoft Macro Assembler (MASM). Кроме того, Стивен Хатчессон создал пакет для программирования на MASM под названием «MASM 32».

Ассемблеры для GNU и GNU/Linux

В состав ОС GNU входит пакет binutils, включающий в себя ассемблер gas (GNU Assembler), использующий AT&T – синтаксис в отличие от большинства других популярных ассемблеров которые используют Intel-синтаксис (поддерживается в версии 2.10).

Переносимые ассемблеры

NASM (Netwide Assembler) - открытый проект ассемблера, версии которого под ассемблера версии которого доступны под различные ОС, и который позволяет получать объектные файлы для этих систем.

YASM – это переписанная с нуля версия NASM под лицензией BSD (с некоторыми исключениями).

FASM (flat assembler) – молодой ассемблер под модифицированной для запрета перелицензирования BSD – лицензий. Есть версии для Linux, DOS и Windows ; используют Intel – синтаксис .

Язык ассемблер

Язык программирования низкого уровня мнемонические команды которого (за редким исключением), соответствуют инструкциям процессора ВС. Трансляция программы в исполняемый машинный код производится программой Ассемблер – транслятором, которая и дала языку ассемблера его название.

Команды языка ассемблера один к одном соответствует командам процессора, фактически, они представляют собой более удобную для человека символьную форму записи (мнемокод) команд и их аргументов.

При этом одной команде языка ассемблера может соответствовать несколько вариантов команд процессора, в зависимости от операндов.

Каждая модель процессоров (или семейств) процессоров имеет набор команд и соответствующий ему язык ассемблера.

Наиболее популярный синтаксисы:

Intel-синтаксис at&t-синтаксис Достоинства языка ассемблера

  • При достаточной квалификации программиста, языка ассемблера позволяет писать самый быстрый компактный код.

  • Если код программы достаточно большой, данные не помещаются целиком в регистрах процессора, то искусный программист, как правило, способен значительно оптимизировать программу по сравнению с высокоурвненвыми трансляторами по одному или нескольким параметрам: скорость работы, объём команды.

  • Обеспечение максимального использования специфических возможностей конкретной платформы, что также позволяет создавать более эффективные программы с меньшими затратами ресурсов.

  • При программировании на языке ассемблера возможен непосредственный доступ к аппаратуре, в том числе портам

ввода-вывода, регистрам процессора и др. Язык ассемблера применяется для создания драйверов и ядра ОС.

  • Язык ассемблера используется для создания «прошивок» BIOS.

  • С помощью языка ассемблера создаются компиляторы и интерпретаторы языков высокого уровня, а также реализуются совместимость платформ.

  • Существует возможность исследования других программ с отсутствующим исходным кодом с помощью дизассемблера.

Недостатки языка ассемблера

  • В СИЛУ МАШИННОЙ ОРИЕНТАЦИИ («низкого уровня») языка ассемблера человек сложнее читать и понимать программу на нём по сравнению с языками программирования высокого уровня; программа состоит из слишком «мелких» машинных команд, соответственно, усложняются программирование и отладка, растет трудоемкость, велика вероятность внесения ошибок.

  • Требуется высокая квалификация программиста

  • Код на ассемблере выполняется быстрее но написанный неопытным программистом обычно оказываются хуже сгенерированного компилятором.

  • Как правило меньшее кол-во доступных библиотек по сравнению с современными языками программирования.

  • Отсутствует переносимость программ на компьютеры с другой архитектурой и системой команд.

Основы 32-битного программирования Windows

Перерисовать схему

Двум стадиям трансляции соответствует две основыне программы: ассемблер ML.EXE и редактор связей LINK.EXE.

Файл с текстом программы на языке ассемблера называется Prog.asm

Тогда трансляции будут выглядеть следующим образом

Стадия 1 – в результате модуль PROG.OBJ

Стадия 2 – в результате появляется исполняемый модуль Prog.exe

Формат конечного модуля зависит от ОС. Установив стандарт на структуру объектного модуля, мы получаем возможность.

  • Использовать уже готовые объектные модули.

  • Стыковать между собой программы написанные на разных языках.

Если стандарт объективного модуля распространить на разные ОС, то можно использовать модули, написанные в разных ОС.

Программы для программирования на ассемблере.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]