Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебн пособ по арх и прогр МП.doc
Скачиваний:
64
Добавлен:
10.12.2013
Размер:
1.59 Mб
Скачать

9.1.3. Создание исполняемого файла

Создание исполняемого файла производится программами LINK.EXE или TLINK.EXE, для этих программ исходным является файл типа *.оbj, полученный на предыдущем этапе работы транслятора. Для запуска в командной строке MS DOS ввести строку:

LINK.EXE MYPROG.OBJ

В случае отсутствия ошибок будут получены файл карты памяти *.map и исполняемый файл *.exe. Вашей программы с расширением *.exe. В случае использования LINK.EXE в процессе работы будут заданы несколько запросов об именах файла карты памяти и файлов подключаемых библиотек (можно просто нажимать на ENTER на каждый запрос). После запуска своего EXE-файла вы уже можете судить о правильности написанной программы: если ЭВМ зависнет - что-то неверно. Но завершение исполняемого exe-файла без зависания, о чем свидетельствует возврат в NC , не гарантирует отсутствие ошибок. Семантические (смысловые) ошибки может выявить только программист на этапе отладки программы.

9.1.4.Отладка программы в turbo debugger’е

Для отладки программы ее необходимо загрузить в отладчик TURBO DEBUGGER, где в пошаговом режиме можно проследить работу программы. Инструкция по применению TURBO DEBUGGER приводится в ПРИЛОЖЕНИИ.

9.2. Контрольные вопросы и задания

1. Если регистр AX содержит 1A2BH, то что содержат регистры AL и AH:

1) AH=1A 2) AH=2B 3) AH=0000 4) AH=1A2B

AL=2B AL=1A AL 1A2B AL=0000

2. Какая команда используется для передачи для передачи данных из стека в аккумулятор:

1)MOV AX 2) POP AX 3) PUSH AX 4) STA AX

3. Какая команда используется для передачи для передачи данных из аккумулятора в стек:

1)MOV AX 2) POP AX 3) PUSH AX 4) STA AX

4. Каково назначение директивы DB в следующей записи: TEMP DB ?:

1) Резервирует байт под переменную TEMP;

2) Задает начальное значение переменной TEMP;

5. С помощью каких регистров, в основном, осуществляется доступ к сегменту данных программы:

1)AX, BX, CX, DX 2) DS, ES 3) EAX, EBX 4) BP, IP

6.Какими директивами отмечают конец и начало каждой процедуры:

1)SEGMENT, ENDS 2) ASSUME 3) PROC, ENDP

7. Переменные определены указанным способом. Какую из них можно переопределить в последующем:

1)K EQU 1024 2) K=1024

8. С помощью каких регистров осуществляется доступ к сегменту стека:

1)AX, BX, CX, DX 2) DS, ES 3) EAX, EBX 4) SS

9. Какими директивами отмечают конец и начало каждого сегмента:

1) SEGMENT, ENDS 2) ASSUME 3) PROC, ENDP

Тема 10. Организация ветвлений.

10.1.Флаги и их назначение.

Подавляющее большинство программ имеют вид сложных ветвленных алгоритмов. В такой программе нередко требуется принять решение на основании результата только что исполненной команды. В этом случае используется регистр флагов (признаков) - в него АЛУ МП автоматически записывает некоторые результаты полученные при выполнении операций. Каждый флаг может иметь два значения: истинно (флаг=1) и ложно (флаг=0).

Регистр флагов:

15 7 0

OF

DF

IF

TF

SF

ZF

AF

PF

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

1) Неоперационные - флаги управления МП. Они выставляются программистом с помощью специальных команд. Предназначены для переключения режимов работы МП:

DF - флаг НАПРАВЛЕНИЯ. Устанавливается командами CLD и STD. Используется в командах обработки строк для указания направления продвижения по строке данных. Если DF = 0, то строка сканируется от меньших адресов к большим.

IF - флаг ПРЕРЫВАНИЙ. Устанавливается командами CLI и STI. Используется для запрещения ВНЕШНИХ прерываний (ЗА ИСКЛЮЧЕНИЕМ НЕМАСКИРУЕМЫХ). Если IF = 0, то прерывания не возникают.

TF - флаг ТРАССИРОВКИ. Устанавливается комбинацией команд через стек (смотрите применение команды PUSHF). Используется для перевода микропроцессора в одношаговый режим. Если TF = 1, включен режим трассировки.

2) Операционные - флаги устанавливаются автоматически в зависимости от результата выполнения предыдущей операции. Используются для управления ветвлением в программах:

OF - флаг ПЕРЕПОЛНЕНИЯ. Устанавливается арифметическими операциями. Используется для определения переполнения в операциях с числами, представленными в дополнительном коде. Если OF = 1, то результат арифметической операции вышел за допустимые пределы.

SF - флажок ЗНАКА. Устанавливается арифметическими операциями. Используется для определения знака числа в знаковой арифметике по старшему биту результата операции. Если SF = 1, то результат отрицательный.

ZF - флаг НУЛЯ. Устанавливается арифметическими операциями. Показывает, был ли равен нулю результат последней операции. Если ZF = 1, то результат равен нулю.

AF - флаг ДОПОЛНИТЕЛЬНОГО ПЕРЕНОСА. Устанавливается арифметическими операциями. Используется в командах десятичной арифметики. Фиксирует перенос из младшей тетрады результата в старшую. Если AF = 1, то произошел перенос.

PF- флаг ЧЕТНОСТИ. Устанавливается арифметическими операциями. Используется для контроля правильности передачи данных. Фиксирует наличие четного количества единиц в младших 8 битах результата последней операции. Если PF = 1, то количество единиц четное.

CF - флаг ПЕРЕНОСА. Устанавливается арифметическими операциями. Используется для определения переноса (при сложении) или заема (при вычитании), а также значения выдвигаемого бита после операций сдвигов. Если CF = 1, то произошел перенос (заем).

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

CLC сбросить флаг CF в 0

STC Установить флаг CF в 1

CMC Инвертировать флаг CF

CLD Сбросить флаг DF в 0

STD Установить флаг DF в 1

CLI Сбросить флаг IF в 0

STI Установить флаг IF в 1

Для организации ветвлений используются команды передачи управления или переходов. Их выполнение заключается в изменении содержимого регистров CS и IP.