Модели программ, компиляция и отладка
На практике различают несколько моделей, используемых при написании программ. Существенное отличие моделей состоит в том, что каждая из них предполагает наличие различного числа сегментов и способов группирования программных сегментов и сегментов данных. Ниже перечислены используемые модели и даны их краткие характеристики (код – означает программный сегмент):
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 в программах на ассемблере?
Дата добавления: 2015-12-22; просмотров: 1088;