Тема 4.1. Этапы создания программы на ассемблере

Все языки программирования условно можно разделить на три уровня:

- машинный код;

- автокод (язык ассемблера);

- языки высокого уровня (процедурные языки - BASIC, FORTRAN, PASCAL, C, MODULA-2, ADA; и языки искусственного интеллекта - LISP, PROLOG, SMALLTALK, OCCAM).

Ассемблер (от англ. assemble — собирать) — компилятор с языка ассемблера в команды машинного языка. Язык ассемблера (автокод) — язык программирования низкого уровня. В отличие от языка машинных кодов, позволяет использовать более удобные для человека мнемонические (символьные) обозначения команд. При этом для перевода программы с языка ассемблера в понимаемый процессором машинный код требуется специальная программа, называемая ассемблером.

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

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

Операционная система при выполнении может разместить программу в любом подходящем месте памяти и освобождает разработчика от необходимости думать, куда ее поместить. Но чтобы этим воспользоваться, надо преобразовать оттранслированную программу в вид, позволяющий ее перемещение. Такие программы называются перемещаемыми. Они создаются с помощью компоновщика - программы LINK, которая обязательно входит в комплект поставки ассемблера.

Обычно объектным модулем называется файл, содержащий результат трансляции программы ассемблером. А файл, содержащий перемещаемую версию оттранслированной программы, называется исполняемым модулем. Таким образом, функцией компоновщика LINK является создание исполняемого модуля из объектного модуля.

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

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

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

Рис. 29 Этапы разработки программ на ассемблере


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: