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

  1.  
  2. ; Listing2b.s
  3.  
  4. Anfang:
  5.     Move.L    HUND,KATZE
  6.     rts
  7.  
  8. HUND:
  9.     dc.l    $123456
  10.  
  11. KATZE:
  12.     dc.l    0
  13.  
  14.     END
  15.  
  16. Mit diesem Beispiel kann man verifizieren,  daß,  einmal  assembliert,  an
  17. Stelle  der  Label  die  effektiven  Adressen von HUND: und KATZE: gesetzt
  18. werden. Assembliert mit A, dann tippt ein "D Anfang" und  ihr  werdet  den
  19. Tausch  bemerken.  Nach dem RTS werdet ihr einige ORI.B und andere Befehle
  20. sehen: in Wirklichkeit sind das Versuche von Seiten  des  Assemblers,  die
  21. zwei  Longword  HUND und KATZE zu interpretieren. Nach dem $4e75, dem RTS,
  22. steht $00123456, das erste Longword von uns HUND genannt,  und  $00000000,
  23. unsere  KATZE.  Jetzt führt es mit J aus und macht danach ein M KATZE, und
  24. ihr werdet ein 00  12  34  56  erhalten:  das  Longword,  das  unter  HUND
  25. enthalten  war, wurde unter KATZE kopiert. Nun modifiziert die erste Zeile
  26. zu MOVE.L #HUND,KATZE, assembliert  und  dann  "D  Anfang"...  Auch  jetzt
  27. wurden  die  Label  durch  die  realen  Adressen ersetzt, denn der einzige
  28. Unterschied zu vorhin ist der Lattenzaun (#). Aber der  ändert  alles,  es
  29. ist  ein  Unterschied  wie  Tag  und  Nacht!!!!!!  Wenn  ihr diesmal mit J
  30. ausführt und dann ein M KATZE macht,  werdet  ihr  die  Adresse  von  HUND
  31. erhalten!  Also,  wenn  der  Befehl  als MOVE.L #$34200,$34204 assembliert
  32. worden wäre, dann wäre nachher in $34204 (also  KATZE),  die  FIXE  Nummer
  33. nach  dem  Lattenzaun  (#)  eingefügt  worden,  eben die Adresse von HUND,
  34. $34200.
  35.  
  36.     MOVE.B    $10,$200    ; kopiert den .b-Wert, der in  der Speicher-
  37.                 ; zelle $10 liegt, in die Speicherzelle $200
  38.     MOVE.B    #$10,$200    ; Gibt $10 in die Speicherzelle $200
  39.     MOVE.B    #16,$200    ; Das GLEICHE wie oben, denn $10 = 16!!
  40.     MOVE.B    #%10000,$200    ; Das GLEICHE wie oben, %10000 = 16!!
  41.  
  42. Bemerke: Der ASMONE positioniert (allocate) ein Programm jedesmal irgendwo
  43. anders,  an einer anderen Adresse, genauso wie das Betriebssystem, wenn es
  44. ein Programm lädt, da, wo gerade Speicher  frei  ist.  Das  ist  eine  der
  45. Stärken des Multitaskings des AMIGA. Wenn ihr ein ausführbares File mit WO
  46. abspeichert,  dann  wird  es  im  AMIGADOS-Format  gespeichert,  und   das
  47. Betriebssystem  wird  es  dahin geben, wo es es für richtig hält. Deswegen
  48. schreibe ich "wenn der Befehle als $34200 assembliert worden wäre....": es
  49. kann  in  jedem  Punkt  im  Speicher  liegen.  Ladet  einige  Programme in
  50. Multitasking, bevor  ihr  den  ASMONE  startet,  und  ihr  werdet  weniger
  51. verfügbaren Speicher bei der anfänglichen Wahl (ALLOCATE CHIP/FAST) haben.
  52. Wenn ihr dann ein "D ANFANG" macht, werden die Adressen "höher" sein, weil
  53. der  darunterliegende  Speicher  schon  belegt  ist.  Mit  FIXEN  ADRESSEN
  54. programmieren, also statt Label immer die Adresse angeben, geht  auch  bei
  55. Spielen  und  Demos  nicht,  bei denen man danach zur Workbench aussteigt,
  56. denn wenn z.B. der Grafikbildschirm auf $70000 definiert ist, und man  zur
  57. Workbench  wechselt, die, welch Zufall, auch dort etwas verloren hat, dann
  58. erntet man einen schönen GURU MEDITATION, auch KOMA genannt....  wenn  ihr
  59. also  den  AMIGA  nicht dauernd ins Koma schicken wollt, dann programmiert
  60. wie es dieser Kurs beschreibt. Fixe Adressen kann - und muß -man  manchmal
  61. verwenden,  wenn  man  AUTOBOOT-Spiele oder Demos programmiert, also jene,
  62. die nicht von der Workbench aus starten, sondern  automatisch,  und  deren
  63. Directory  nicht  sichtbar ist (viele Spiele sind so aufgebaut). Bevor wir
  64. aber Autoboot-Spiele machen, ist es, glaube ich, besser zu  lernen,  etwas
  65. auf den Bildschirm zu bringen, deswegen reden wir später noch mal darüber.
  66.  
  67.  
  68.