Предлагаемая версия CD’E’ (The Code Debugger ’Evmolay’) позволяет осуществить прогон программ в машинных кодах, пошаговое исполнение, индикацию ассемблерного текста (дизассемблирование) и внесение в него изменений. Кроме того, CD’E’ реализует все функции исходного монитора «Специалиста». Содержит удобный строчный редактор и может с успехом использоваться для создания несложных программ на Ассемблере.
Директивы CD’E’ представляют собой полные английские слова или их сокращения, которые обозначают производимые действия. Причем CD’E’ размещается в верхних адресах пользовательского ОЗУ, оставляя тем самым почти всю свободную память (0000—7FFF) для написания программ пользователя.
Код отладчика приведен в таблице.
Работа с программой, думается, не вызовет каких-то особых затруднений. После правильного ввода и запуска CD’Е’ на экране появится символ ’ОК’ и мигающий курсор, приглашающий к работе.
Для ввода команд и данных служит строчный редактор, управляемый следующими клавишами: курсор влево ← и, соответственно, вправо →. Для очистки строки или отмены команды служит \ . Левый пробел — удаление символа над курсором; <3Б> есть не что иное, как забой символа слева от курсора, а <ВК> — ввод команды. Если команда или данные введены неверно, то CD’Е’ возвращает курсор в начало строки, предлагая отредактировать ее и повторить ввод.
Параметры для команд должны представляться в шестнадцатеричном виде. Причем двухбайтовая константа вводится четырьмя символами, включая незначащие нули, а однобайтовая — двумя.
I. КОМАНДЫ ОБЩЕГО НАЗНАЧЕНИЯ
1. CLS — очистка экрана.
2. LOAD — загрузка программ с магнитной ленты.
3. SAVE <адрес1> <адрес2> — запись на магнитную ленту массива данных с <адрес1> по <адрес2> .
4. VERIFY — сравнение массива данных, записанных на ленту, с массивом, находящимся в памяти по начальному адресу, указанному в заголовке ленточных данных.
5. QUTT — выход из CD’E’. Указатель стека устанавливается на прежний адрес (CD’E’ организует свой стек). Возвращаются значения регистров, и происходит выход в вызвавшую CD’E’ программу.
II. КОМАНДЫ МОНИТОРА
1. RESET <адрес> — позволяет изменять содержимое ячеек памяти начиная с <адрес> . Например,
RESET 0000
0000 FF WITH —
По адресу 0000 находится значение FF. Предлагается его изменить. Если произойдет неверный ввод, или вдруг будет нажата клавиша <ВК>, то содержимое ячейки не изменится. А редактирование перейдет к ячейке со следующим адресом.
2. FILL <адрес1> <адрес2> <байт> — заполняет область памяти с <адрес1> по <адрес2> значением <байт>: FILL 9000 BFFF FF
3. DUMP <адрес> — выводит на экран в шестнадцатеричном и КОИ-7 кодах содержимое ячеек памяти, начиная с <адрес>.
DUMP С000
0000 С3 03 СО 31 FF 3F 41 41 42 …!. ААВ
Если выводимый код не входит в диапазон печатных символов КОИ-7, то вместо него печатается точка.
4. COPY <адрес1> <адрес2> <адрес3> — копирует последовательность байт, расположенных с <адрес1> по <адрес2>, в область памяти, начиная с <адрес3>: COPY С000 C0FF 9000
5. SEARCH <адрес1> <адрес2> <байт> — ищет в блоке памяти с <адрес1> по <адрес2> ячейку со значением <байт>. Если такая имеется, то на экран выводится содержимое пяти байт: двух — до искомого байта и двух — после: SEARCH С000 С010 С3 BFFE 00 00 С3 03 С0 …..
После нажатия любой клавиши поиск в блоке продолжается.
КОД ОТЛАДЧИКА
Как свидетельствует редакционная почта, в условиях почти полного отсутствия доступной литературы по программированию на низкоуровневых языках единственным методом самообразования для многих читателей и подписчиков нашего журнала остается подчас изучение программных продуктов, созданных профессиональными программистами и публикуемых в нашем журнале. Неплохо может зарекомендовать себя в этом плане и материал о CD’E’, печатать который журнал начал в № 10’94 г.
Несомненным плюсом материала о CD’E’ является сравнительно небольшой его объем при достаточном для указанных целей наборе реализуемых функций. Кроме того, возможно использование отдельных подпрограмм CD’E’. Например, использование БЕЙСИКОМ редактора CD’E’, которое хотя и требует незначительного изменения БЕЙСИК-интерпретатора, зато существенно облегчает ввод и редактирование программ.
III. Команды отладчика
1. ASM <адрес> — команда оперативного ассемблирования. Она позволяет разместить в памяти, начиная с <адрес>, коды команд. Именно те, которые соответствуют мнемоническим обозначениям МП КР580.
Для упрощения алгоритма ассемблирования в мнемонику команд внесены несущественные изменения. В частности, регистр указателя стека SP кодируется как S, а регистровая пара PSW — как F. Поэтому вместо LXI SP, nnnn следует вводить LXI S, nnnn
___»___ DAD SP ___»___ DAD S
___»___ PUSH PSW ___»___ PUSH F
___»___ POP PSW ___»___ POP F
2. DASM <адрес> — переводит расположенный начиная с <адрес> код команд МП КР580 в их мнемонические обозначения. А раз ассемблирование и дизассемблирование используют одни и те же таблицы, значит — упомянутые выше мнемонические особенности ASM сохраняются и для DASM. То есть,
DASM С000
С000 С303С0 JMP С003
С0003 31FF3F LXI S, 3FFF
Неисполняемые коды процессора печатаются в виде NOUSED n, где n — шестнадцатиричный номер неисполняемого кода.
NOUSED 0 08
NOUSED 1 10
…
NOUSED В FD
3. В CD’E’ имеется возможность задания содержимого регистровых пар процессора для последующей их передачи в опции RUN, TRACE и QUIT. Например,
AF = 4000
HL = 9000
SP = 3FFF
ВС = 0000
DE = 0101
4. REG — команда просмотра данных, которые будут переданы в регистры при выполнении команд TRACE, RUN, QUIT. Одновременно индицируются значащие биты регистра признаков:
REG
РС=7000 SP=3FFF AF=4000 S Z А Р С
HL=0000 DE=4000 BC=FFFF 0 0 0 0 0
5. RUN <адрес> — запускает на исполнение тестируемую программу, расположенную по <адрес>. С предварительной передачей в регистры заданных значений, которые можно проверить командой REG.
6. BREAK <адрес> — устанавливает на <адрес> так называемую «точку останова». По данной команде, начиная с указанного адреса, изымаются и сохраняются три последовательно расположенных байта. Вместо них устанавливается переход в область CD’E’. При достижении «точки останова» в исполняемой программе управление передается отладчику. А он восстанавливает изъятые ранее байты и запоминает текущие значения регистров. После этого результат работы исследуемой программы можно просмотреть командой REG.
Возможна установка только одной «точки останова». При установке новой точки старая удаляется.
7. TRACE <адрес> — позволяет «покомандно» исполнять программу. Причем начиная с <адрес>. Особенность здесь такова, что при нажатии любой клавиши исполняется текущая команда.
Помимо своего основного назначения (отладки программ), CD’E’ можно также рекомендовать для изучения приемов программирования. В частности, путем исследования программ, созданных высококвалифицированными специалистами. Эта возможность обеспечивается совместным использованием дизассемблирования, трассировки, индикации содержимого регистров процессора и памяти (области стека, системных переменных и т.п.).
Ю. МЕТЛИЦКИЙ, Брестская обл.