logo search
Программа ГЭ_спец_2012 ответы light

Ассемблер: основные понятия, директивы, команды. Условный и безусловный переходы. Циклы. Массивы. Процедуры. Упакованные данные. Структуры.

Директивы представляют собой команды транслятору языка ассемблера. Эти команды, в основном, определяют параметры трансляции программы. По функциональному назначению, директивы можно разделить на следующие группы:

  1. директивы управления размещением данных;

  2. директивы связи модулей программы;

  3. директивы создания элементов программы;

  4. директивы условной компиляции;

  5. прочие директивы.

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

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

Директивы создания элементов программы позволяют создавать такие элементы программы, как программные сегменты, структуры, процедуры и макросы. Эти директивы используются в любой программе написанной на языке ассемблера.

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

Все директивы ассемблера записываются в виде символьных операторов. Некоторые директивы могут располагаться в любом месте программы, другие – только в определенных местах или между определенными директивами. Директива не преобразуется в машинную команду процессора, а лишь влияет на трансляцию программы и определяет параметры трансляции. Рассмотрим расположение кодов и данных в пределах одного программного сегмента. Особенностью МП 8086 является то, что и коды команд и данные хранятся в одной области памяти размером 1 Мб. Не существует способа определить, является ли какая-либо последовательность байт командой процессора или данными программы. Если в программном сегменте среди команд располагаются и данные, то процессор при выполнении команд может дойти до данных и попытаться «выполнить» эти данные, так как интерпретирует их как команды. Поэтому при размещении данных в одном сегменте с командами следует избегать передачи управления процессора с команд на данные. Это можно выполнить несколькими способами:

  1. перед данными поставить команду безусловного перехода так, чтобы управление передавалось на следующую после данных команду – таким образом, процессор как бы «обходит» данные и приступает к выполнению следующей команды;

  2. разместить данные в конце программного сегмента, а перед ними поставить вызов какой-либо функции DOS, завершающей выполнение программы.