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