Это что за 10 секунд почти 5 тысяч спрайтов выводит ?

Вот этот для сравнения проверь.

Скрытый текст


;==========================================================
;Вывод квадратика 24x24 точки в сразу в три плоскости для статичных объектов
; вход HL - куда на экран выводить DE - адрес графики
SpriteC3qa:
PUSH H
PUSH D
PUSH B

MOV A,H ; сохраняем начало столбик X плоскость (1) куда выводим графику
STA pozic_xP1
MOV A,L
STA pozic_y; сохраняем начало строки Y куда выводим графику
mvi a,3
STA PLAST

LXI B,2000h
;====================== строка 1
fumbingo:
LDAX D ; загружаем акумулятор А содержимым графики
MOV M,A ; выводим в экран по адресу "HL" байт графики
INX D ; DE=DE+1 увеличиваем адрес откуда брать графику
DAD B ; адрес плоскости 2
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 3
LDAX D
MOV M,A
INX D

DCR L ; ==================== строка 2
LDA pozic_xP1
MOV H,A ; адрес плоскости 1
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 2
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 3
LDAX D
MOV M,A
INX D

DCR L ; ==================== строка 3
LDA pozic_xP1
MOV H,A ; адрес плоскости 1
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 2
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 3
LDAX D
MOV M,A
INX D

DCR L ; ==================== строка 4
LDA pozic_xP1
MOV H,A ; адрес плоскости 1
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 2
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 3
LDAX D
MOV M,A
INX D

DCR L ; ==================== строка 5
LDA pozic_xP1
MOV H,A ; адрес плоскости 1
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 2
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 3
LDAX D
MOV M,A
INX D

DCR L ; ==================== строка 6
LDA pozic_xP1
MOV H,A ; адрес плоскости 1
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 2
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 3
LDAX D
MOV M,A
INX D

DCR L ; ==================== строка 7
LDA pozic_xP1
MOV H,A ; адрес плоскости 1
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 2
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 3
LDAX D
MOV M,A
INX D

DCR L ; ==================== строка 8
LDA pozic_xP1
MOV H,A ; адрес плоскости 1
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 2
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 3
LDAX D
MOV M,A
INX D

DCR L ; ==================== строка 9
LDA pozic_xP1
MOV H,A ; адрес плоскости 1
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 2
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 3
LDAX D
MOV M,A
INX D

DCR L ; ==================== строка 10
LDA pozic_xP1
MOV H,A ; адрес плоскости 1
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 2
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 3
LDAX D
MOV M,A
INX D

DCR L ; ==================== строка 11
LDA pozic_xP1
MOV H,A ; адрес плоскости 1
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 2
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 3
LDAX D
MOV M,A
INX D

DCR L ; ==================== строка 12
LDA pozic_xP1
MOV H,A ; адрес плоскости 1
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 2
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 3
LDAX D
MOV M,A
INX D

DCR L ; ==================== строка 13
LDA pozic_xP1
MOV H,A ; адрес плоскости 1
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 2
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 3
LDAX D
MOV M,A
INX D

DCR L ; ==================== строка 14
LDA pozic_xP1
MOV H,A ; адрес плоскости 1
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 2
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 3
LDAX D
MOV M,A
INX D

DCR L ; ==================== строка 15
LDA pozic_xP1
MOV H,A ; адрес плоскости 1
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 2
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 3
LDAX D
MOV M,A
INX D

DCR L ; ==================== строка 16
LDA pozic_xP1
MOV H,A ; адрес плоскости 1
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 2
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 3
LDAX D
MOV M,A
INX D

DCR L ; ==================== строка 17
LDA pozic_xP1
MOV H,A ; адрес плоскости 1
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 2
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 3
LDAX D
MOV M,A
INX D

DCR L ; ==================== строка 18
LDA pozic_xP1
MOV H,A ; адрес плоскости 1
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 2
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 3
LDAX D
MOV M,A
INX D

DCR L ; ==================== строка 19
LDA pozic_xP1
MOV H,A ; адрес плоскости 1
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 2
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 3
LDAX D
MOV M,A
INX D

DCR L ; ==================== строка 20
LDA pozic_xP1
MOV H,A ; адрес плоскости 1
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 2
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 3
LDAX D
MOV M,A
INX D

DCR L ; ==================== строка 21
LDA pozic_xP1
MOV H,A ; адрес плоскости 1
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 2
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 3
LDAX D
MOV M,A
INX D

DCR L ; ==================== строка 22
LDA pozic_xP1
MOV H,A ; адрес плоскости 1
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 2
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 3
LDAX D
MOV M,A
INX D

DCR L ; ==================== строка 23
LDA pozic_xP1
MOV H,A ; адрес плоскости 1
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 2
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 3
LDAX D
MOV M,A
INX D

DCR L ; ==================== строка 24
LDA pozic_xP1
MOV H,A ; адрес плоскости 1
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 2
LDAX D
MOV M,A
INX D
DAD B ; адрес плоскости 3
LDAX D
MOV M,A
INX D

LDA PLAST ; счётчик столбиков (всего 3)
dcr a
jz rimikoq ; если все три столбика нарисованы выходим из подпрограммы

STA PLAST
; следующий столбец X
LXI H,pozic_xP1
inr M
mov H,M
LDA pozic_y
MOV L,A ; восстанавливаем Y
jmp fumbingo

rimikoq:
;=============
POP B
POP D
POP H

RET ;иначе - выйти из п/п вывода квадратиков
[свернуть]