Ассемблирование и отладка программы. Ассемблер Х8085.exe. Редактор связей link.exe. Эмулятор –emu80.exe

Страницы работы

Фрагмент текста работы

Клавишами PgUp и PgDn производится переход на страницу (окно) вверх или вниз, а сочетаниями клавишами Ctrl-PgUp или Ctrl-PgDn к началу или концу памяти. Кроме того, для отображения в окне любого сегмента памяти, необходимо набрать начальный адрес сегмента в любой строке области адреса и нажать клавишу ENTER.

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

Если в области адреса были записаны изменения, то выйти в область данных можно лишь введя (ENTER) или отменив (ESC) их. Аналогичные условия надо выполнить при переходе из области данных в область адресов.

Когда курсор находится в области данных, в соответствующей его положению строке области адреса в инверсном цвете указывается адрес ячейки, на которую показывает курсор. На рис. 4 курсор находится в ячейке с адресом 000Fh. В ячейки 000Ch и 000Eh записаны (но не введены) значения CCh иEEh соответственно и они выделены инверсным цветом.

Выполнение прерываний.


Прерывания, если они разрешены, можно выполнить как в пошаговом, так и непрерывном режиме. Для разрешения прерываний в программе должна быть выполнена команда EI. При запуске эмулятора устанавливается режим запрещения прерываний. Прерывание вводится в любой момент времени вводом Alt-<номер вектора прерывания>. Например, если при удерживаемой в нажатом состоянии клавише Alt нажать цифровую клавишу 5 (выполнить Alt-5), то выполнится прерывание RST5, содержимое программного счетчика запомнится в стеке, а в программный счетчик запишется адрес 0028h, соответствующий этому прерыванию. На рис. 5 показано состояние эмулятора после выполнения прерывания RST5. Состояние перед выполнением прерывания приведено на рис. 4. Для наглядности на рис.5 область стека отображена в окне «ПАМЯТЬ». Как видно из рис.5, в стек записан адрес 010Bh, с которого и будет продолжено выполнение прерванной программы и содержимое указателя стека SP соответственно изменилось с 1000hна 0FFEh. В микропроцессоре 580ВМ80 при записи двухбайтовых чисел в память по старшему адресу записывается старший байт. Стек заполняется в сторону уменьшения адресов.

Отладка программы

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

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

Эмулятор надо запустить в шаговом режиме, сопоставляя содержимое регистров и ячеек памяти в контрольных точках с расчетными значениями. В случае появления отклонений, проанализировать причину их появления. Если они вызваны ошибками программы, то их можно исправить в эмуляторе.

Для коррекции программы необходимо перейти в режим редактирования памяти и исправить содержимое ячеек памяти, соответствующие ошибочным командам. Адреса ячеек памяти можно определить в окне «ФАЙЛ».

Если необходимо заменить одну команду другой, имеющей меньшее число байт, то лишние байты надо заполнить нулями, т.е. ввести  команду NOP. Если ситуация противоположная, то нужно поставить «заплатку» - ввести команду безусловного перехода JMP <B2,B3> в конец программы (трехбайтовая команда, <В2,В3> - адрес первой свободной ячейки памяти после окончания программы). Если заменяется однобайтовая команда, то команда безусловного перехода может занять ячейки одной или двух следующих команд. Их нужно переписать в конец программы, заполнив нулями оставшиеся не занятыми байты после записи команды JMP. Таким способом можно ввести новые фрагменты программы. В конце фрагмента командой безусловного перехода нужно вернуться

Похожие материалы

Информация о работе