Вы,надеюсь,знаете стандартную процедуру
очистки памяти через LDIR:
LD HL,addr ;адрес очищаемой области
LD DE,addr+1
LD BC,len-1 ;len:длина этой области
LD (HL),0 ;заполнение её нулём
LDIR ; (очистка)
Но эта процедура довольно медленна, и,
например, за счёт неё, очистить экран за
один фрейм (71680t) не удастся.
Для этого можно воспользоваться стеком.
http://alonecoder.nedopc.com/zx/books/zxg4html/asm4.htm
---------- Post added at 12:45 ---------- Previous post was at 12:36 ----------
А вот почему затирается 0м
Repeats LDI (LD (DE),(HL), then increases DE, HL, and decreases BC) until BC=0. Note that if BC=0 before this instruction is called, it will loop around until BC=0 again.
Перевожу на асм
met1 LD (DE), (HL)
INC DE
INC HL
DEC BC
LD a,b
OR C
JR NZ, met1
т.е. оно последовательно переносить один байт сначала (#8000) записываем 0, потом из 8000, в 8001 переносим его, потом из 8001 в 8002 и так дальше, потому и затирается.




ZXM-Phoenix v.03/2048/FDD/HD/YM-2149F/PS2-kbd;
Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 
