
; Listing2i.s

Begin:
	lea	$dff000,a0	; Geef $dff000 in a0
Waitmouse:
	move.w	6(a0),$180(a0)	; Geef de .W-Waarde van $dff006 in COLOR0
				; 6(a0)=$dff000+6, $180(a0)=$dff000+$180
	btst	#6,$bfe001	; linker Muisknop gedrukt?
	bne.s	Waitmouse	; zo niet, terug naar Waitmouse.
	rts			; Einde

	END

In deze variant worden de offsets gebruikt. In a0 komt adress $dff000,en dan
worden de offsets aangegeven. Ik heb $dff000 gekozen omdat het een 'mooi'
getal is. Dit had ook elk ander getal kunnen zijn. Zolang het resultaat
maar $dff006 en $dff180 is. Had ik $dff013 in a0 geladen,dan was $16d(a0)
de goede offset geweest voor Color00. Let erop dat register a0 hierbij niet
verandert!

OPMERKING: Let op het verschil tussen de LEA en de MOVE instructie als u
offset gebruikt:

	MOVE.L	$100(a0),a1

kopieërt het longword dat op adres a0 plus $100 bytes staat in register a1.
DUS: Tel het adres in a0 op met $100 en kopieër de inhoud van dat adres naar
a1.

Terwijl:

	LEA	$100(a0),a1

Geeft in a1 het adres a0+$100 zelf,niet de inhoud daarvan, want LEA kan
uitsluitend adressen laden,geen inhoud!

Het bevel:

	LEA	$100(a1),a1

Is gelijk aan:

	ADD.W	#$100,a1

in a1 komt net zo goed adres a1+$100.

OPMERKING: Offsets kunt u in Decimaal of in Hexadecimaal (met het $ teken) 
schrijven, net zoals het u uitkomt. U kunt ook nog berekeningen toepassen:

	LEA	$10*3(a1),a2	; dit wordt als LEA $30(a1),a2 geassembleert
				; want * staat voor Vermenigvuldigen.
				; U kunt ook +,- en / (voor delen) gebruiken
				; Gebruik geen Sinus of iets dergelijks.
				; Dat kent de processor niet. Alleen dus
				; Optellen,aftrekken,vermenigvuldigen of
				; delen!

