По адресу 0020 стоят команды RST 3 / JMP 005F
Вид для печати
По адресу 0020 стоят команды RST 3 / JMP 005F
Я вижу что RST 3. Не понял, почему по адресу 003Fh сразу не поставили этот JMP на 005F.
---------- Post added at 22:58 ---------- Previous post was at 22:42 ----------
Попробовал EMU. Ставлю в отладчике начальный адрес 0х0000. Нажимаю F8. Отладчик прыгает на 0х005F. Но должен же сначала показать по шагам установку стека и т.д. Может, я чего не так делаю?
То b2m:
Спасибо за разъяснение. Честное слово, считал что справа отображается только текущее состояние регистров и не более. Адрес на 0000h пытался устанавливать через Ctrl + G :)
Ctrl+G это чтобы быстро переместиться в области кода/дампа :) Ну ты понял...
Переключаться между тремя областями можно клавишей Tab
Помогите пожалуйста разобраться. Прохожу в пошаговом режиме монитор 0. Очень быстро попадаю в замкнутый цикл. При чем, получается что внутри этого цикла нет возврата RET из двух прерываний: сначала из RST 6, потом из RST 2. Вот листинг моего "дизассемблирования".
После попадания отладчика эмулятора от b2m на этот RST 4, понял, что сейчас уйду на второй круг :) Допускаю, что где-то спутал код команды с числовой константой. Только непонятно, где именно.Код:.org 0000 ;Стартовый адрес
lxi sp, c3ee ;Вершина стека
mvi a, 11 ;В аккумулятор запись числа 11 hex
jmp 003b ;Безусловный переход на адрес 003b
ei ;Разрешить прерывания по входу INT
sta 9000 ;Вывод аккумулятора на индикатор с адресом 9000
rst 4 ;Переход на 0020
rst 3 ;Переход на 0018
push h ;Запись HL в стек
push psw ;Запись аккумулятора и регистра флагов в стек
lxi h, 6650 ;Запись в HL числа 6650 hex
jmp 0056 ;Безусловный переход на адрес 0056
dcx h ;Уменьшение HL на единицу
mov a, l ;Запись L в аккумулятор
ora h ;Операция ИЛИ между H и аккумулятором
jnz 0056 ;Если результат не ноль то вернуться на 0056
pop psw ;Иначе, восстановить psw из стека
pop h ;И восстановить HL из стека
ret ;Возврат из обработки rst 3 (адрес возврата 0021)
jmp 005f ;Безусловный переход на 005f
in a0 ;Ввод в аккумулятор байта от ВУ с адресом A0
adi 00 ;Сложение аккумулятора с числом 00 hex
jz 005f ;Если результат равен 0, то переход на адрес 005f
cpi 80 ;Иначе, сравнение аккумулятора с числом 80 hex
jz 006e ;Если равенство, переход на адрес 006e
ani 0f ;Иначе, операция И между аккумулятором и числом 0f
ret ;Возврат из обработки rst 4 (адрес возврата 0040)
adi f3 ;Сложение аккумулятора с числом f3
mvi h, 00 ;Запись в H числа 00 hex
mov l, a ;Запись в L из аккумулятора
mov l, m ;Запись в L из памяти с адресом из HL (адрес 00f3, значение 91)
pchl ;Запись в адресный счетчик из HL (переход на адрес 0091)
rst 6 ;Переход на 0030
push psw ;Запись аккумулятора и регистра флагов в стек
rst 2 ;Переход на 0010
push d ;Запись DE в стек
xra a ;Операция ИЛИ-НЕ аккумулятора с аккумулятором
mov d, a ;Запись аккумулятора в D
rst 4 ; WTF ?
Спасибо. Значит в этом круге "ЮТ-88" банально ожидает нажатия на любую клавишу. Нагородили же.
Да нормально там все, вот более удобочитаемый код
Все подпрограммы описаны в FAQ http://zx-pk.ru/showpost.php?p=785281&postcount=21Код:RST2_KEY_GET_CODE:
push d
xra a
mov d,a
rst 4
rlc
jmp SHOW_A
RST3_WAIT_1S:
push h
push psw
lxi h,06650H
jmp WAIT
RST4_KEY_WAIT_PRESS:
rst 3
jmp KEY_SCAN
nop
...
RST6_INP_2BYTE:
push psw
rst 2
mov d,a
rst 2
mov e,a
pop psw
ret
...
KEY_SCAN:
in 0A0H
adi 000H
jz KEY_SCAN
cpi 080H
jz STEP_BACK
ani 00FH
ret
Всем привет.
Собираю ЮТ-88. Нарисовал схему в Altium Designer, там же и развел ее. Подготовил файлы для производства на завод.
https://yadi.sk/i/0dfpK-kbkYDGS
ссылка на pdf схемы.