Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2012- СИСПРОГ на МАСМ.doc
Скачиваний:
21
Добавлен:
09.11.2019
Размер:
553.47 Кб
Скачать

3.2 Теоретические сведения

Представление машинной программы возможно на разных уровнях, приспособленных для различного использования (табл.3.1):

Таблица 3.1 – Уровни представления компьютерных программ

Условное название

Физическое представление

Логический уровень

Кем (чем) используется

Высокий уровень

Структурированные тексты и таблицы

Язык высокого уровня (ЯВУ)

Разработчики, студенты, преподаватели

Низкий уровень

Строки текстовой записи мнемоник машинных команд

Ассемблер

Разработчики, исследователи, хакеры

Машинный уровень

Числа – машинные команды в оперативной памяти

Исполняемый код

Операционная система и процессор

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

Отладка и развитие полученных таким образом программ сразу наталкиваются на значительные трудности и неудобства. Это связано с тем, что программирование на уровне машинных команд (пусть даже записываемых понятными мнемониками) очень трудоёмко в силу его чрезмерной детальности – любые действия приходится описывать очень большим числом очень мелких инструкций. Именно этот факт в сочетании с очень быстрым ростом объема и сложности разработок стимулировал развитие языков высокого уровня (ЯВУ).

Впрочем, довольно быстро выяснилось, что компиляторы ЯВУ производят код, неоптимальный либо по быстродействию, либо по объему, причем это для ЯВУ является, по-видимому, неустранимым фактором. Причины лежат в самой архитектуре ЯВУ, которые манипулируют сущностями высокого уровня абстракции. Отображение этих абстракций на машинный код в процессе компиляции и компоновки является энтропийным процессом, связанным с неизбежной потерей части информации, а это, в общем, и порождает все проблемы.

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

С.Хатчисон в \MASM32\help\masm32.chm пишет следующее.

«Существует миф, что истинные ассемблерные программы низкого уровня написаны исключительно на мнемоническом уровне, а все прочие - для людей, которые не понимают, что такое низкоуровневое программирование. Проблема же состоит в том, что адепты такой точки зрения сами, как правило, никогда не пишут объемных программ, поэтому высказанное не имеет большого значения.

Для людей, которые имеют желание писать, как они считают, РЕАЛЬНЫМ кодом низкого уровня, редактор MASM32 предоставит возможность писать непосредственно шестнадцатеричный машинный код и сохранять его на диске в виде двоичного файла. Для остальных, кто захочет писать быстро и надежно код минимального размера и сделать это в течение одной жизни, MASM предоставит синтаксис высокого уровня, который будет точно соответствовать коду, написанному старым трудным путем, но зато без ошибок, сбоев и необходимости отлавливать таинственные и неустранимые ошибки» .

Возможность ассемблерного программирования с соблюдением этих условий обеспечивает программная технология макропрограммирования, которую в той или иной степени применяют все ассемблеры. Бегло ознакомимся с тем, как это делается в МАСМ.