Ja to wszystko rozumiem.
Tylko nie mogę pojąć dlaczego
mogę zrobić tak
ld a,(zmienna)
a nie mogę zrobić
ld e,(zmienna)
Trochę jest to zaskakujące.
Moim zdaniem nie jest zaskakujące. Rejestr A to tzw. akumulator - rejestr wyróżniony. Oferuje on więcej operacji na swojej zawartości, niż inne rejestry. Jest to konstrukcyjna zaszłość jeszcze z epoki kalkulatorów, która spokojnie przetrwała burzliwy rozwój mikroprocesorów, począwszy od Intel 4004, 4040, 8008, potem 8080 i dochodzimy do Z80.
Natomiast definiowanie zmiennych (etykiet):
zmienna db wartość
nie określa typu czy jest to 8-bit czy 16-bit, dlatego występuje błąd "value out of range".
Przykładem może być zmienna kolor (8-bit) a zmienna pocz (16-bit).
Nie wiem jak dziś, kiedyś w assemblerze było rozróżnienie na DB (8-bit) i DW (16-bit), odpowiednio "Declare Byte" i "Declare Word".
Być może nowsze assemblery rozpoznają większe wartości/łańcuchy po "DB" i rezerwują większą liczbę bajtów, nie wiem.
Prawdopodobnie akumulator obcina wartość do 8-bit.
Z moich obserwacji.
Skoro akumulator jest 8-bitowy, to nie może robić inaczej - nie przechowa więcej bitów