home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #6 / amigamamagazinepolishissue1998.iso / coders / assembler-kurs / listings / listing2c.s < prev    next >
Text File  |  1977-12-31  |  4KB  |  90 lines

  1.  
  2. ; Listing2c.s
  3.  
  4. Anfang:
  5.     LEA    HUND,a0
  6.     MOVE.L    #HUND,a1
  7.     MOVE.L    HUND,a2
  8.     move.l    a0,KATZE1
  9.     move.l    a1,KATZE2
  10.     move.l    a2,KATZE3
  11.     rts
  12.  
  13. HUND:
  14.     dc.l    $12345678
  15.  
  16. KATZE1:
  17.     dc.l    0
  18.  
  19. KATZE2:
  20.     dc.l    0
  21.  
  22. KATZE3:
  23.     dc.l    0
  24.  
  25.     END
  26.  
  27.  
  28. Assembliert, macht ein D Anfang um zu kontrollieren auf  welchen  Adressen
  29. die  Label  liegen, dann führt mit J aus. Ihr werdet feststellen, daß nach
  30. dem J die Liste der Register auch negative Ziffern anführt:
  31.  
  32. D0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  33. A0: ZIFFER   ZIFFER   12345678 00000000 00000000 00000000 00000000 ZIFFER (SP)
  34. SSP= ..... USP= SR.....   
  35.  
  36. Jedes  Mal,  wenn  ein  Listing  ausgeführt  wird,  werden  alle  Register
  37. angezeigt: Die erste Zeile ist die der D0,D1,D2,D3,D4,D5,D6,D7, die zweite
  38. die der a0,a1,a2,a3,a4,a5,a6,a7. Darunter befinden sich Register, über die
  39. wir später reden werden. Die Ziffer in  A7  ist  der  aktuelle  SP  (Stack
  40. Pointer),  er  interessiert uns im Moment nicht. Kontrolliert hingegen die
  41. Ziffern in A0, A1 und A2: die ersten  sind  zwei  identische  Ziffern,  in
  42. diesem Fall die Adresse von HUND:, denn die zwei Befehle
  43.  
  44.     LEA    HUND,a0    ; Schneller als MOVE.L #HUND,A! So ist´s richtig!
  45.     MOVE.L    #HUND,a1
  46.  
  47. tun das Gleiche, sie kopieren die Adresse der Label in ein Register. In A3
  48. hingegen  ist  ein  12345678 zu finden, also den Inhalt des Longword HUND:
  49. der Befehl MOVE.L HUND,a2 hat den Inhalt  von  HUND  in  a2  gegeben.  Für
  50. weitere  Kontrollen,  macht  ein  M  HUND  nach  dem  J,  und  ihr  werdet
  51. feststellen, daß HUND auf der gleichen Adresse ist wie die, die in a0  und
  52. a1 aufscheint. Danach könnt ihr auch mit M KATZE1 und M KATZE2 prüfen, daß
  53. diese zwei Longword die Adresse von KATZE enthalten, denn die wird mit den
  54. zwei Befehlen
  55.  
  56.     MOVE.L    a0,KATZE1
  57.     MOVE.L    a1,KATZE2
  58.  
  59. kopiert. Zum Schluß, mit M KATZE3, kann verifiziert werden,  daß  sie  den
  60. Inhalt des Longword KATZE enthält, $12345678. Um diese drei Kontrollen auf
  61. einmal zu erledigen, könnt ihr ein M KATZE1 tippen und des öfteren  RETURN
  62. drücken:  in den ersten 4 Bytes werdet ihr die Adresse von HUND vorfinden,
  63. in den nächsten 4 die gleiche  Adresse,  in  den  folgenden  4  Bytes  den
  64. .L-Inhalt  von HUND. eben $12345678. Wenn man dieses Spiel fortführt, wird
  65. man Ziffern antreffen, die keinen Simm ergeben:  entweder  ist  es  leerer
  66. Speicher oder er ist von weiß Gott was besetzt. Wenn ihr einige Änderungen
  67. vornehmen wollt, dann könnt ihr vor dem RTS diese Zeilen einfügen:
  68.  
  69.     MOVE.L    A0,D0
  70.     MOVE.L    A1,D1
  71.     MOVE.L    A2,D2
  72.  
  73. Ihr  werdet  nach  dem  J  auch  eine  Änderung   in   den   ersten   drei
  74. DATEN-Registern  erhalten. Bemerkung: Wie ihr gesehen habt, ist es besser,
  75. ein LEA als ein MOVE #LABEL,a0 zu verwenden, aber Achtung!! Lea  kann  nur
  76. dazu  verwendet  werden,  eine Adresse in ein ADRESSREGISTER zu geben!! Es
  77. geht nicht z.B. ein LEA LABEL,d0 zu machen!! Um die Adresse  eines  Labels
  78. in  ein  Datenregister oder ein anderes Label zu geben, müßen nach wie vor
  79. MOVE.L #LABEL,Bestimmungsort verwendet werden!  Bemerkung2:  Normalerweise
  80. gibt  man  in  a0,  a1, a2 Adressen, und in d0, d1, d2 verschiedene Daten,
  81. aber es kann  schon  mal  vorkommen,  daß  Daten  in  Adressregistern  und
  82. Adressen in Datenregistern landen. Um euch eine Idee davon zu verschaffen,
  83. für was sie gut sind: es sind wie Notizzettel, auf denen ihr eine  gewisse
  84. Anzahl  von  Telefonnummern Platz habt und auf denen ihr festhält, wieviel
  85. ihr ausgegeben habt, um euch ein Eis zu kaufen, sie sind also nützlich und
  86. SCHNELL!  Sie  können  verwendet  werden,  wie  man  will, hauptsache, man
  87. erinnert sich, was wo drin ist!!!
  88.  
  89.  
  90.