Chciałbym umieścić często używane i przydatne procedury w jednym miejscu.
W większości będą przepisane z książek, znalezione gdzieś na forach, w gazetach itp.
Oczywiście nie muszę wspominać, że chętnie ujrzymy zoptymalizowane, szybsze odpowiedniki tych procedurek.
Osoby uczące się, lub chcące nauczyć się asemblera prosi się o komentowanie i zadawanie pytań
Zacznę od prostego czyszczenia ekranu przy pomocy LDIR
Niszczone: A
Wyjście: BC=0, DE=5800h, HL=57FFh (lub inne wartości DE, HL użyte przez nas)
LD HL,4000h
LD BC,17FFh
LD (HL),L
LD D,H
LD E,1
LDIR
RET
Użycie LD (HL),L (dopóki L=0) jest szybsze i zajmuje mniej pamięci niż LD (HL),0
Procedurkę można dostosować do czyszczenia jednej, dwóch części , czy całego ekranu.
Poniżej odpowiednie przydatne wartości HL i BC
| Adres w HL |
Góra | 4000h |
Środek | 4800h |
Dół | 5000h |
| Wartość dla BC |
1 część część | 07FFh |
1 i 2 część ekranu | 0FFFh |
cały ekran | 17FFh |
Dla przykładu, jeśli chcemy wyczyścić dwie dolne tercje użyjemy
LD HL,4800h
LD BC,0FFFh
PS. Jeśli posiadamy jakieś ważne warości w rejestrach A, B, C, D, E, H, L możemy odłożyć je na stosie poprzez użycie PUSH xx (gdzie xx to para rejestrów np. BC),
a następnie po powrocie z procedurki ściągamy je komendą POP xx