Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВЫЧИСЛИТЕЛЬНЫЕ МАШИНЫ, СИСТЕМЫ И СЕТИ.doc
Скачиваний:
34
Добавлен:
06.11.2018
Размер:
2.94 Mб
Скачать

6.5. Модели программ, компиляция и отладка

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

TINY - код и данные в одной группе (com - файлы );

SMALL - код – один сегмент, данные в одной группе;

MEDIUM - код – несколько сегментов, данные в одной группе;

COMPACT - код один сегмент, ссылка на данные – типа far;

LARGE - код – несколько сегментов, данные - типа far;

FLAT - код и данные в одном сегменте (плоская модель).

Для получения исполняемого файла программы составленной на ассемблере надо реализовать, по крайней мере, два этапа – осуществить трансляцию программы и получить объектный модуль с расширением obj, а затем скомпоновать объектные модули в исполняемую программу, с расширением exe (или com). Реализация первого этапа осуществляется с помощью программы MASM (или TASM), а второго – с помощью LINK (или TLINK). В ряде случаев, особенно при разработке сложных программ, состоящих из большого числа модулей, бывает не обойтись без специальных средств отладки, типа турбодебагера td.

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

tasm /z/zi/n simple,simple,simple

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

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

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

Стоящие далее параметры определяют имена файлов: исходного (SIMPLE.ASM), объектного (SIMPLE.OBJ) и листинга (SIMPLE.LST). При желании можно в строке вызова транслятора указать полные имена файлов с их расширениями, однако необходимости в этом нет, так как по умолчанию транслятор использует именно указанные выше расширения.

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

Контрольные вопросы

  1. Может ли регистр использоваться в фактическом параметре макровызова?

  2. Чем отличается команда от директивы?

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

  4. Перечислите модели ассемблерных программ и укажите их особенности и основные отличия.

  5. Перечислите все директивы определения данных и дайте примеры их использования.

  6. Объясните назначение вспомогательной директивы DUP и приведите пример ее использования.

  7. Какая директива определения данных используется под вещественные числа в формате ДВФ?

  8. Приведите примеры использования директивы EQU.

  9. Укажите все возможные способы передачи параметров процедуре.

  10. Как расширились возможности регистров данных в процессоре Pentium, для целей адресации?

  11. Расширилось ли число способов адресации в процессоре Pentium по отношению к Intel 8086 и на сколько?

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

  13. Какие директивы используются для определения данных в формате ВВФ?

  14. Как осуществляется передача параметров в макросах?

  15. В чем отличие в использовании макросов и процедур?

  16. Приведите пример использования макросов – блоков повторения.

  17. Для чего используются директивы условного ассемблирования?

  18. Дайте сравнительную характеристику моделей программ.

  19. Как можно узнать о том, выполняет ли ЦП команды ММХ и SSE?

  20. В каких случаях используется директива PURGE?

  21. Назовите отладчики, которые Вы знаете? Чем они отличаются?

  22. Зачем нужен файл с расширением LST (листинг)?

  23. Какую модель программы Вы использовали при выполнении лабораторных работ и почему?

  24. Для чего служит программа debug.exe?

  25. На каком этапе осуществляется «вставка» библиотечных процедур?

  26. Существуют ли, какие-либо особенности использования команд ММХ и SSE в программах на ассемблере?