ZX Review
#5-6
04 ноября 1997 |
|
Форум - Особенности ассемблера ZX ASM 3.0.
(c) Иван Рощин, г.Москва, 1997 Изучение и отладка @-файлов с помощью STS 5.1 Известно, что монитор-отлад- чик STS позволяет свободно заг- ружать и отлаживать @-файлы, за- нимающие все 48 килобайт. Это делает STS незаменимым для хак- кера. Я предлагаю небольшое усовер- шенствование STS, смысл которо- го заключается в следующем: пос- ле загрузки @-файла в память, указания некоторого параметра и нажатия комбинации клавиш "SS+U" значения всех регистров процес- сора станут такими, какими они были в момент нажатия кнопки MAGIC. После этого можно, напри- мер, продолжить выполнение ис- следуемой программы в пошаговом режиме. Такая возможность пригодится вам не только для исследования чужих программ, но и для отлад- ки своих собственных. Допустим, вы написали программу, запусти- ли ее, а она "зависла". В таком случае можно нажать кнопку "MAGIC", записать содержимое па- мяти на диск, а потом загрузить полученный @-файл в STS и выяс- нить, в чем причина неправильной работы программы. WARNING! Все нижесказанное относится ТОЛЬКО к STS 5.1! Для преобразования STS 5.1 необходимо выполнить следующее: 1) Убедиться, что на диске при- сутствуют файлы "STS5.1" (этот файл также может назы- ваться "STS5.1AL", "STS5.1XX" и т.п.),"sts5.1a", "sts5.1b". 2) Запустить файл "STS5.1". 140. 3) Нажать клавишу "U". Адрес в верхней части экрана должен стать равным #FE2A. 4) С адреса #FE2A ввести коман- ду ассемблера JP #FE74 (что- бы можно было вызывать под- программу, устанавливающую значения регистров, при нажа- тии "SS+U"). 5) Начиная с адреса #FE71, вве- дите программу: #FE71: JP #F86A LD HL,#FEB1 CALL #E354 LD HL,(#FEE6) CALL #E33D PUSH DE PUSH HL LD HL,#DC7B SET 0,(HL) BIT 2,E JR NZ,#FE8D RES 0,(HL) POP HL LD IX,#FEBF CALL #E33D LD A,(IX+#00) INC IX LD (#FE9F),A LD (#FE00),DE CP #E4 JR NZ,#FE92 LD (#FEFE),DE LD (#FEE6),HL POP AF LD (#FEF4),A RET LD DE,(#E33B) LD A,D OUT (C),E LD E,(HL) INC HL LD D,(HL) INC HL OUT (C),A RET 5) Со следующего адреса (#FEBF) введите блок кодов: #FEBF: #F4,#FC,#F6,#F8,#FA,#EA,#E8,#EC #EE,#F0,#F2,#E4 6) По приведенному дампу памяти проверьте, правильно ли внесены изменения: #FE71 #C3,#6A,#F8,#21,#B1,#FE,#CD,#54 #FE79 #E3,#2A,#E6,#FE,#CD,#3D,#E3,#D5 #FE81 #E5,#21,#7B,#DC,#CB,#C6,#CB,#53 #FE89 #20,#02,#CB,#86,#E1,#DD,#21,#BF #FE91 #FE,#CD,#3D,#E3,#DD,#7E,#00,#DD #FE99 #23,#32,#9F,#FE,#ED,#53,#00,#FE #FEA1 #FE,#E4,#20,#ED,#ED,#53,#FE,#FE #FEA9 #22,#E6,#FE,#F1,#32,#F4,#FE,#C9 #FEB1 #ED,#5B,#3B,#E3,#7A,#ED,#59,#5E #FEB9 #23,#56,#23,#ED,#79,#C9,#F4,#FC #FEC1 #F6,#F8,#FA,#EA,#E8,#EC,#EE,#F0 #FEC9 #F2,#E4 2 После того, как вы набрали эту программу, необходимо сохра- нить ее на диске. Это можно сде- лать двумя путями: 1) Записать весь STS вместе с внесенными изменениями на диск. Этот вариант является оптимальным, если вам часто приходится заниматься отлад- кой @-файлов. Для записи нуж- но сначала с помощью клавиши "B" установить Bank=#18, за- тем нажать клавишу "E" и пос- ле появления меню "Setup" выбрать пункт "Config Save". 2) Записать в отдельном файле только внесенные изменения. Для этого нажмите клавишу 'S', укажите имя файла, на- пример, "@VIEW", затем стар- товый адрес (#FE2A) и длину (#A1 байт). Учтите, что при каждом следующем запуске STS для работы с @-файлами при- дется загружать файл с изме- нениями. Перед загрузкой это- го файла необходимо нажать 'U', а после нее установить Bank=#18. Теперь я расскажу об особен- ностях загрузки @-файлов. Преж- де всего, перед загрузкой необ- ходимо правильно установить зна- чение Bank во избежание затира- ния STS. Обычно Bank=#18. После указания имени загружаемого @-файла STS выдает в строках Start и Len информацию из ката- лога. Значение параметра Start нужно запомнить (т.к. на самом деле это не адрес начала загруз- ки, а адрес вершины стека в @-файле). Для правильной загруз- ки вы должны указать Start = #4000, Len = #C000. После за- грузки вспомните значение пара- метра Start, записанное в ката- логе диска, и укажите его в ре- гистре SP. Затем нажмите комби- нацию клавиш 'SS+U', и регистры примут соответствующие значения. Далее можете отлаживать @-файл. Учтите, что фрагмент про- граммы, устанавливающий значения регистров для @-файла, занимает область памяти, в которой раньше была процедура дизассемблирова- ния с метками (при отладке @-файлов она и не нужна). Фун- кция пользователя, которая вызы- вается по "SS+U", вначале со- стоит из одной команды JP #FE74, но после того, как значения ре- гистров @-файла установлены, эту функцию можно изменить. * * *
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября