Справочник по системным программам для компьютера ZX Spectrum 1991 г.

Описание MONS4 - замечания по использованию точек останова.


1.2. Замечания по использованию точек останова:
........ •

Когда встречается точка останова, MONS4 будет выдавать зву-
ковой сигнал и ожидать вашего нажатия клавиши перед возвратом к
Ф.П. MONS4 использует область в конце самого себя, которая перво-
начально содержит перемещаемые адреса для сохранения информа-
ции о точках останова. Это означает, что вы можете установить
столько точек останова, сколько позволит память. Каждая точка
останова требует 5 байтов памяти. Когда останов произошел, MONS4
автоматически восстанавливает значения памяти, которые сущест-
вовали до этой точки останова.

Отметим, что команда <Т> использует эту область, поэтому при
работе команды <Т> все точки останова потеряются. Точки останова
могут быть установлены только в ОЗУ. Так как точка останова состо-
ит из трехбайтовой инструкции, то в определенных случаях необхо-
димо проявить предусмотрительность.

Например:

Предполагаемый код:

8000

ЗЕ

8008

00

8001

01

8009

00

8002

18

800А

06

8003

06

800В

02

8004

AF

800С

18

8005

800D

F7

8006

FF

800Е

06

8007

01

800F

44

Если вы установили точку останова по #8004 и затем начали
выполнение с ячейки #8000, то регистр А будет загружен значением
1, выполнение переместится на #800А, регистр В загрузится значе-
нием 2 и выполнение переместится на 8005. Но в #8005 помещается
младший байт вызова точки останова и, таким образом, мы испортим
код и появятся непредсказуемые результаты. Эта ситуация нетипич-
на, но вы должны оградить себя от нее - в этом случае единственный
выход использовать пошаговый проход (см. Команду Z ниже с под-
робным описанием пошагового прохода).

24. <Х>

Используется для обновления MP по назначению абсолютного
вызова подпрограммы или по инструкции JP. <Х> берет 16-разряд-
ный адрес, определяемый байтом, на который указывает MP, и бай-
том МР+1, и затем обновляет отображение памяти на экране таким
образом, что отображаются адреса, близлежащие к данному адресу.
Помните, что младшая половина адреса определяется первым бай-
том, а старшая вторым (формат INTEL).

Например:

Вы хотите посмотреть подпрограмму, которая вызывается кодом
CD0563. Установите MP (используя <М>) так, что он адресует к коду
05 внутри инструкции вызова и нажмите <Х>. Отображение памяти
будет обновлено и отобразятся ячейки с адресами, близкими к #6305
(см. Также команду <V>).

25. <Y>

Ввод ASCII. <Y> дает вам новую строку, которую вы можете
ввести символами ASCII прямо с клавиатуры. Эти символы попадают
на эхо-печать и их 16-ричное эквиваленты вводятся в память, начи-
ная с текущего значения MP. Строка символов должна заканчиваться
<EDIT>. <DELETE> «CAPS SHIFT> О) может быть использована
для удаления символов из строки.

Когда вы закончите ввод символов ASCII (и введете <EDIT>), то
экран обновится и MP спозиционируется на конец строки, введенной
в память.

26. <SYMBOL SHIFT> Z

Перед использованием "Z" (или "Т") PC должен быть установ-
лен на адрес инструкции, которую вы хотите выполнить.

"Z" просто выполняет текущую инструкцию и обновляет Ф.П.,
чтобы отобразить изменения, вызванные выполнением данной инст-
рукции.

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

Рабочий пример:

Давайте предположим, что у нас в машине есть 3 секции кода,
приведенного ниже. Первая секция - программа, которая загружает
HL и DE числами и затем вызывает подпрограмму для их перемно-
жения (вторая секция) с результатом в HL и затем дважды вызывает
подпрограмму для вывода результатов умножения на экран (3-я сек-
ция) . Текст секций:

7080 2А0072 LD HL, (#7200)

7083 ED5B0272 LD DE, (#7202)

7087 CD0071 CALL MULT

708А 1С LD А, Н

708В CD1D71 CALL AOUT

708Е 7D LD A, L

708F CD1D71 CALL AOUT

7092 210000 LD HL,0

7100 AF MULT XOR A

7101 ED52 SWC HL, DE

7103 19 ADD HL, DE

7104 3001 JR NC, MU1

7106 EB EX DE,HL

7107 B2 MU1 ORD

7108 37 SCF

7109 CO RET NZ
710A B3 OR E
710B 5A LD E,ED
710C 2007 JR NZ, MU4
710E EB EX DE, HL
710F C9 RET

7110 EB MU2 EXDE, HL

7111 19 ADD HL, DE

7112 EB EX DE,HL

7113 29 MU3 ADDHL, HL

7114 DB RET С

7115 IF MU4 RRA

7116 30FB JR NC,MU3

7118 B7 OR A

7119 20F5 JR NZ, MU2
71 IB 19 ADD HL, DE
711С C9 RET

71 ID F5 AOUT PUSH AF

71 IE OF RRCA

71 IF OF RRCA

7120 OF RRCA

7121 OF RRCA

7122 CD671 CALL NIBBLE

7125 F1 POP AF

7126 E60F NIBBLE AND % 1111
7128 c690 ADD A, #90
712A 27 DAA

712В CE40 ADC A, #40

712D 27 DAA

712E FD213A5C LD IY, #5C3A

7132 D7 RST #10

7133 C9 RET

7200 1B2A DEFW 10779

7202 033A DEFW 3

Теперь мы хотим исследовать вышеприведенный код.
Сделаем это со следующим набором команд. Отметим, что по-
шаговый режим - это просто один из способов, он недостаточно эф-
фективен, но весьма иллюстративен:

М: 7080 <ENTER> установить MP на #7080

7080 установить PC на #7080

Z простой шаг

Z простой шаг

Z простой шаг
Следует вызов CALL

М: 7115 <ENTER> пропуск предподготовки чисел

W установка точки останова

К продолжить с #7100 до останова

Z простой шаг

Z простой шаг

Z простой шаг

Z простой шаг

Z простой шаг

Z простой шаг

Z возврат из подпрограммы умножения

Z простой шаг

Z следует вызов CALL
М: 7128 <ENTER> установка MP на нужный байт

W установка точки останова

К продолжить с #711D до останова

Z простой шаг

Z простой шаг

Z простой шаг

Z простой шаг

, просмотр адреса возврата

W установка там точки останова

К продолжение

Z

W

к

Z

т

Пожалуйста, проработайте этот пример. Сначала введите код
подпрограммы (см. Модификация памяти) - можно использовать
GENS4, и затем выполните команды, приведенные выше. Вы высоко
оцените пример в качестве иллюстрации того, как пройти по про-
грамме.

27. <SYMBOL SHIFT> Р

Эта команда аналогична LIST, но вывод вместо экрана идет на
принтер. Помните, что в конце страницы вы нажимаете <EDIT> для
возврата к Ф.П. Или любую другую клавишу для получения другой
страницы.

28. Модификация памяти

Значения ячеек по адресам, которые дает MP, могут быть моди-
фицированы вводом 16-ричного числа, за которым следует ограничи-
тель (см. п.1). Две последние 16-ричные цифры (если одна, то она
дополняется нулем) вводятся в ячейку, на которую указывает MP, и
затем команда (если она есть), определенная ограничителем, выпол-
няется. Если ограничивается незначащая команда, то она игнориру-
ется.

Например:

F2 <ENTER> #F2 вводится и МР:=МР+1

123 APS SHIFT 8 #23 вводится и МР:=МР+1

ЕМ:Е00- #Е0 вводится в текущую ячейку и затем МР:=#Е0.

Пробел ограничивает команду "М"

8С0 #8С вводится и MP обновляется (т.к. использована команда
"0м для назначения относительного смещения #8С)

2A5D- #5D вводится и MP не меняется, т.к. ограничитель про-
бел, а не команда.

Если 16-ричное число вводится в ответ на подсказку и ограни-
чивается точкой, то введенное число будет занесено в текущий ре-
гистр Z80, адресуемый стрелкой.

На входе M0NS4 стрелка м>" указывает на PC, и использование
".", как ограничителя 16-ричного числа, будет модифицировать PC.
Если вы хотите изменить другие регистры, то используйте точку
саму, а не как ограничитель числа. Указатель ">" будет циклически

указывать регистры от PC до AF. Отметим, что невозможно адресо-
вать и изменять SP или IY регистры.

Например:

Предположим, что ">" первоначально указывает на PC:
Указывает на IY
Указывает на IX
0. Устанавливает IX в 0

Указывает на HL
123. HL:=#123

Указывает на DE
Указывает на ВС
Е2А7. ВС:=#Е2А7

Указывает на AF
FF00. AF:=#FF и сбрасывает все флаги

Указывает на PC
8000. РС:=#8000

Отметим, что точка также может использоваться для модифи-
кации адреса альтернативного набора регистров, если он отобража-
ется. Используйте команду "Q" для переключения набора регистров.

Пример отображения фронтальной панели

710С 2007
>РС710С 20
SP DOAF АС

JR
07
70

NZ,
ЕВ
06

#71

С9

03

15
ЕВ
OA

19
03

ЕВ
0D

IYCF6A

0D

И

ОС

0F

09

18

18

IX D09F

04

03

04

00

00

00

IB

HL2A1B

DF

FE

29

28

02

CF

02

DE0000

F3

AF

11

FF

FF

СЗ

СВ

ВС 0004

FF

СЗ

СВ

11

5D

5C

AF0304

>

IR 3F7CON

7100

AF

7108

37

7110

ЕВ

7101

ED

7109

СО

7111

19

7102

52

710А

ВЗ

7112

ЕВ

7103

19

710В

7113

29

7104

30

>7 ЮС

20<

7114

D8

7105

01

710D

07

7115

IF

7106

ЕВ

710F

С9

7117

FB

7107

В2

710F

С9

7117

FB

Выше показано типичное изображение Ф.П. (Одно из изобра-
жений, полученных при пошаговом проходе по п/п MULT примере
использования команды Z).

Первые 9 строк изображения содержат 9 регистров, сначала -
имя регистра (от PC до IR), затем (для PC...ВС) значения содержи-
мого регистров, и затем - содержимое 7 ячеек памяти, начиная с
адреса, находящегося в регистре.

Регистр флагов декодируется, чтобы показать текущие значе-
ния битов флагов, установленных так, как они используются внутри
регистра. Если регистр флагов установлен в #FF, то за отображением
имени AF будет следовать:

OOFF CZ Н UNS

Т.е. знак, ноль, полуноситель, паритет/переполнение, сло-
жить/вычесть и будут установлены все флаги носителей. Справа от
регистров IR находятся слова ON или OFF, которые показывают
текущее состояние внешних прерываний. Указатель регистров ">"
указывает на регистр, который адресуется в данный момент (см.
Раздел 2).

24 байта памяти отображаются ниже отображения регистров.
Отображение состоит из адреса (2 байта, 4 символа), за которым
следует значение (1 байт, 2 символа) памяти по этому адресу. Ото-
бражение размещено вокруг текущего значения MP указываемого

м х» t

Команды вводятся вверху экрана в ответ на подсказку ">".

Отображение обновляется после каждой отработанной коман-
ды.




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Docycon'98 - Отчет о прошедшей в Чехии demo party.
Программистам - The hacker club: Зашита от копирования.
Мысли по поводу - Программистская сказка от дяди Коли.
Головоломки - Год рождения, На рыбалке, Только квадраты, Ну и ножницы.
Новелла - новелла по игре Chess Master.

В этот день...   29 апреля