· Text 937 · w8 · inlagg
Jag har nu för första gången i mitt liv lyckats få en Z80-assembler
att fungera. Anledningen till att det dröjt ända till nu är, förutom
latmasken, att Z80 saknar ordenlig relativ-adressering.
Men när jag väl satte igång så visade det sig att jag är osäkrast på
hur man lämpligast utför 16-bits operationer.
Nu måste jag fråga er som är lite äldre i gamet om råd:
- Hur bör man jämföra innehållet i 16-bits register?
- Hur bör man inkremera en 16-bits variabel i arbetsminnet?
Exempel:
COMPARE:EQU *
; jämför innehållet i HL och DE registren, sätt Z-flag
;Version 1
LD A, D
CP H
RET NZ
LD A, E
CP L A har osäkert innehåll
RET
;Version 2
; PUSH HL A nollställs
; XOR A
; SBC HL, DE
; POP HL
; RET
*H Interupt-rutiner
*E
;
TICK0: EQU * INCREMERA SINCE MED KLOCKAN
PUSH AF
PUSH HL
;
LD HL, (SINCE) Räkna upp Since
INC HL OBS inga flaggor ändras!
;
LD A, H ÄR Since = 0 nu ???
OR L
JR Z, EXIT (Since får inte "slå över".)
LD (SINCE), HL Lagra annars tillbaka Since
;
EXIT: POP HL
POP AF
JPTICK: JP TICK
;