015
09.02.2007, 18:19 Uhr
spakko
|
Hier der versprochene Lösungsansatz (noch ungetestet). Ausgelegt für das Finden eines UP, Programmende bleibt hier unberücksichtigt, kann aber nach dem gleichen Schema ermittelt werden. Dummerweise läßt sich der Befehlszählerstand nicht direkt auslesen, deshalb der "kleine Umweg"
Quellcode: | ;dynamische Speichernutzung .org %0
srp #%10 ld r0,#%08 ;Startadresse festlegen ld r1,#%12 ;z.B.beim U883 ab %812 ld r2,#%08 ;Dummy ld r3,#%12 ;Dummy Losgehts: ldc r4,@rr0 ;Lade Wert von Adresse in r0/1 nach r4 cp r4,#%24 ;Vergleiche ob "$" jr Z,IstUP ;Ja, dann weiterprüfen NixGefunden: ;Nein,... incw rr0 ;...Adresse erhöhen ld r2,r0 ;Dummy ld r3,r1 ;Dummy jr Losgehts IstUP: ;Prüfe, ob die gesammte Kennung stimmt incw rr2 ;Dummy erhöhen ldc r4,@rr2 cp r4,#%55 ;U jr NZ,NixGefunden incw rr2 ;Dummy erhöhen ldc r4,@rr2 cp r4,#%50 ;P jr NZ,NixGefunden incw rr2 ;Dummy erhöhen ldc r4,@rr2 cp r4,#%52 ;R jr NZ,NixGefunden incw rr2 ;Dummy erhöhen ldc r4,@rr2 cp r4,#%4F ;O jr NZ,NixGefunden incw rr2 ;Dummy erhöhen ldc r4,@rr2 cp r4,#%24 ;$ jr NZ,NixGefunden ;Unterprogramm gefunden incw rr2 ld r6,r2 ;gefundene Adresse H-Teil ld r7,r3 ;gefundene Adresse L-Teil NormalerStart: call @rr6 jr NormalerStart
Unterprogramm: .ascii "$UPRO$" nop ret .end
|
|