EQU определяет константы.
Ужас!!! Откуда вы взяли, что Z80 может заслать константу в ячейку памяти без использования регистров вообще?!
Можно-то можно, только не понятно у тебя что такое date. Это именно массив из четырех чисел (букв)? Тогда обращения будут ld a,(data), ld a,(data + 1) и так далее.
А что за данные? Вообще, присваиваешь им метку и перечисляешь их после db, dw. Если данных много и они во внешнем файле на PC (например, картинка или музыка), подключаешь их INCBIN'ом с меткой. Просто в обычной памяти, для начала, желательно после #6000 = 24576.
Да, стек не для этого придуман. Стек нужен для временного запоминания неиспользуемых в данный момент регистров чтобы можно было загрузитьв них что-то более нужное в данный момент. Ну и да, в стеке хранятся адреса возврата из подпрограмм. Большие данные в стеке хранить вообще говоря не запрещено, но это нетривиально и черевато ошибками.
Последний раз редактировалось Alex Rider; 15.11.2013 в 10:41.
Спектрумист, более менее умеющий форматировать дискеты на реале.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
А вот rst #10 - как раз тот самый "волшебный" вызов, который не портит hl, de и bc, и сохранять их не обязательно![]()
Всем спасибо за ответы. RST #10 не собирался использовать, просто для примера написал.
Andrew771, пытаюсь свой велосипед изобрести, так что за пример спасибо.
Из всего вышеперечисленного сделал полезный вывод, что очень часто при вызовах подпрограмм надо сохранять регистры. Почему то раньше мне не приходило это в голову.
Ну и с переменными разобрался.
Еще про константы equ хочу добавить: я их использую, как правило, только в самом начале программ. Обычно в них всяческие значения параметров и настроек. Удобно их задавать, даже если в коде используется один раз (а если много раз, то тем более). Если потом нужно будет поменять значение константы, то не надо будет лазить и искать ее по коду, а просто поменять в начале в директиве equ.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)