Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CП_Ответы.doc
Скачиваний:
15
Добавлен:
27.09.2019
Размер:
281.09 Кб
Скачать
  1. Перечислите этапы создания программы на языке ассемблера. Опишите результат, получаемый на каждом этапе от редактирования до отладки. Отобразите на схеме все этапы процесса разработки программы.

Этапы создания программ:

  • Редактирование

  • Исходный файл Ассемблера *.ASM

  • Ассемблирование

  • Объектный файл *.OBJ

  • Компоновка

  • Выполняемый файл *.EXE

  • Выполнение

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

Компоновка программы

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

  1. Перечислите способы передачи аргументов в процедуру. Опишите способ передачи аргументов через общую память. Перечислите достоинства и недостатки данного способа. Приведите пример передачи аргументов в процедуру через общую память.

Способы передачи аргументов в процедуру: через область памяти, через стек, через регистры, и с помощью extern и public.Передача аргументов через общую область памяти предполагает, что вызывающая и вызываемая программы условились использовать некоторую область памяти как общую. Транслятор предоставляет специальное средство для организации такой области памяти. Это директивы сегментации и их атрибуты. Один из них — атрибут комбинирования сегментов. Наличие этого атрибута указывает компоновщику, как нужно комбинировать сегменты, имеющие одно имя. Достоинством является: разделение на модули, отделение интерфейса от реализации. Недостатком этого способа в реальном режиме работы процессора является отсутствие средств защиты данных от разрушения, так как нельзя проконтролировать соблюдение правил доступа к этим данным.

  1. Дайте определение понятия “операнд”. Приведите классификацию операндов, поддерживаемых транслятором ассемблера. Поясните на примерах каждый перечисленный пункт классификации.

Операнд – объект, над которым выполняется действие. Классификацию операндов:

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

mov     ax,0000h

mov     ds,ax

mov     ax,ds:0000h     ;записать слово в ax из области памяти по физическому адресу 0000:0000

  • Перемещаемые операнды — любые символьные имена, представляющие некоторые адреса памяти.

  • Считчик адреса — специфический вид операнда. Он обозначается знаком $.

jmp $+3 ;безусловный переход на команду mov

cld ;длина команды cld составляет 1 байт

mov al,1

  • Базовый и индексный операнды. Этот тип операндов используется для реали­зации косвенной базовой, косвенной индексной адресации или их комбина­ций и расширений.

  • Регистровый операнд - это просто имя регистра. В программе на ассемблере можно использовать имена всех регистров общего назначения и большинства системных регистров.

mov al,4 ;константу 4 заносим в регистр al

mov dl,pass+4 ;байт по адресу pass+4 в регистр

dl

add al,dl ;команда с регистровыми операндами

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

  • Записи - используются для доступа к битовому полю некоторой записи.

  1. Дайте определение понятиям «макроопределение» и «макрокоманда», «макрорасширение» и «макрогенерация». Назовите цели использования макрокоманды в создании текста программы на ассемблере. Опишите принцип организации работы макрокоманды. Опишите синтаксис задания формальных и фактических параметров в макроопределении. Дайте сравнительную характеристику организации работы макрокоманд и процедур в ассемблере.

Макроопределение представляет собой блок исходных предложений, начинающийся директивой MACRO и заканчивающийся директивой ENDM. Формат макроопределения:

имя MACRO [[формальный параметр,...]]

предложения

ENDM

Макрокоманда - оформляемые определ образом предложения текста программы, замещаемые во время трансляции с генерированным кодом согласно алгоритму макроса.

Макрорасширение - это подстановка тела макроса из макроопределения на место макровызова с заменой фиктивных параметров на фактические.

Использование макрокоманд позволяет:- упростить и сократить исходный текст программы;

- сделать программу более понятной;- уменьшить число возможных ошибок кодирования.

Различие процедур и макросов:

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

Текст процедуры статичен и неизменен в то время, как состав макрорасширения может зависеть от параметров макрокоманды. Следует помнить, что параметры макрокоманды - это значения времени ассемблирования, а параметры процедуры принимают какие-то определенные значения лишь в процессе выполнения программы.

Синтаксис фактических параметров: имя [[фактический параметр,...]]

Синтаксис формальных параметров: имя [[формальный параметр,...]]

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