РАБОТА С МАШИННЫМИ КОДАМИ_
CALL, DOKE, MON
Теперь расскажем о средствах, которые
предоставляет MegaBasic для отладки программ в машинных кодах и
стыковки их с бейсик-программами.
Для запуска программы в машинных кодах MegaBasic имеет оператор
CALl_z
- где 2 — стартовый адрес программы. Он
вполне заменяет гобой сочетания операторов Spectrum-Бейсика RANDOMIZE
USR z, PRINT USR z и пр., а в силу своей краткости босе удобен в среде
MegaBasic, где ввод операторов осуществляется побуквенно.
Весьма практичен при отладке программ в машинных кодах оператор
DOKE_z,r
Он представляет собой не что иное, как
двухбайтовый РОКЕ. Параметры: z — адрес, г — двухбайтовое
число, заносимое в ячейки с адресами z и z+t.
Однако наиболее мощным средством отладки программ в машинных кодах является встроенный в MegaBasic монитор-отладчик78, представляющий собой вполне самостоятельную
РАБОТА С МАШИННЫМИ КОДАМИ
системную программу. Предусмотрены два способа вызова монитора: или из редактора MegaBasic командой
MON
- или в ходе выполнения программы сочетанием
клавиш Space/F. При этом распахнется окно номер 3 (или окно с номером
w, если ранее был выполнен оператор FX_3,w, переопределивший окно для
монитора), представив фронтальную панель монитора (рис. 20).
Будьте готовы к тому, что монитор работает в шестнадцатеричной системе счисления.
Слева и вверху панели монитора представлены
названия регистров процессора и их текущие значения. В правой части
панели отражается фрагмент памяти: адрес ячейки, ее содержимое и
соответствующий символ. Адрес ячейки памяти, на которую в данный момент
настроен монитор {текущей ячейки),
выделен инверсным цветом. В нижней строке монитора расположена строка,
отмеченная символом >. Она предназначена для ввода и редактирования
команд монитора.
Содержимое текущей ячейки изменяется набором в
командной строке нового значения и нажатием клавиши Enter. После этого
текущей автоматически становится следующая ячейка. Переход к следующему
адресу без изменения содержимого ячейки осуществляется простым нажатием
Enter, а откат на одну ячейку назад — нажатием клавиш SS/J.
Установить текущей произвольную ячейку памяти можно с помощью команды
М <адрес>
Монитор позволяет также изменять содержимое регистров. Делается это командой
R <двухбайтовое число>
Регистр, в который заносится значение, отмечен
звездочкой (*). Перемещается звездочка, и, соответственно, меняется
текущий регистр с помощью клавиши Р.
Регистры flF*FE fiiSiHS
FE7B В6 ?
Ш И I
|J 14Ш I И I
fe80 63 с
im II t
Состояние флагов
Адрес и содержимое текущей ячейки
Рис. 20. Фронтальная панель монитора.
Программа в машинном коде запускается командой
J <адрес>
Монитором предусмотрена возможность расстановки
так называемых точек останова, что позволяет осуществлять отладку
программ. Для указания места останова адрес, по которому нужно
«тормознуть» выполнение программы, устанавливается текущим
и нажимается клавиша S. Отменить точку останова можно клавишей U. После
останова выполнение программы продолжается при нажатии клавиши К.
С помощью специальных команд монитора можно
скопировать блок памяти по произвольному адресу (команда L) или занести
во все ячейки выделенного блока памяти какое-либо значение (команда 1).
Формат этих команд:
L <адрес начала блока> <адрес копирования) <длина блока>
2 <адрес начала блока> <длина блока> <6айт-заполнитель>
Выход из монитора происходит по нажатию Space.
Мы не стали здесь детально описывать приемы
работы с монитором-отладчиком, поскольку эта книга посвящена Бейсику, а
не программированию в машинных кодах*.