ENGLISH VERSION |
|
Links | | | Forum | | | Kommentare | | | News melden |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
amiga-news.de Forum > Programmierung > Assembler Listing - wer kann helfen? | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
-1- | [ - Beitrag schreiben - ] |
17.02.2005, 23:30 Uhr Repo01 Posts: 12 Nutzer |
Hallo, ich habe angefangen in Assembler zu programmieren. In diesem Listing hier verstehe ich nicht die folgende Sachen: ADD.W #$100,4(a0) ADD.W #$100,12(a0) Wenn ich es richtig verstanden habe wird die 100 in a0 (da befindet sich ja die Copperliste) hinzuaddiert. Wie kommt man aber auf die Zahlen 4 und 12? Diese beiden Zahlen ändern ja die Zeilen dc.w $200f,$fffe und dc.w $220f,$fffe in der Copperliste. Jedoch weiß ich nicht wie man auf diese Zahlen kommt. Bei dem Listing handelt es sich um einen Balken der sich von aben nach unten bewegt. Wer kann helfen? Schonmal Danke! Gruß Repo01 Hier das ganze Listing: Execbase = 4 Openlibrary = -552 CIAapra = $BFE001 Cop1lc = $DFF080 Forbid = -132 Permit = -138 Start: move.l Execbase,a6 ; Vorbereitungen fuer Forbid und ; Openlibrary. jsr Forbid(a6) ; Forbid clr.l d0 ; Versionsnummer Egal lea gfxname,a1 ; Name der zu oeffnenden Lib nach A1 jsr Openlibrary(a6) ; Graphics.library oeffnen move.l d0,gfxbase ; Adresse der Lib merken move.l #copperliste,Cop1lc ; Adresse der Copperliste nach Cop1lc LEA COPPERLISTE,A0 MOVE.W #$5000,D0 Wait: DBF D0,WAIT ADD.W #$100,4(a0) ADD.W #$100,12(a0) Btst #6,CIAapra ; Kennt ihr schon Bne.s wait Move.l gfxbase,a0 ; Basisadresse nach a0 Move.l 38(a0),Cop1lc ; 38. sten wert einfach nach Cop1lc ; schreiben Jsr Permit(a6) ; Multitasking erlauben Clr.l d0 ; kein returncode Rts Gfxname: dc.b "graphics.library",0 even Gfxbase: dc.l 0 Copperliste: dc.w $0180,$0000 dc.w $200f,$fffe dc.w $0180,$0f00 dc.w $220f,$fffe dc.w $0180,$0000 copperlistenende: dc.l $-2 ; ende der copperliste , -2 = $fffffffe End: [ - Antworten - Zitieren - Direktlink - ] |
17.02.2005, 23:48 Uhr fisch08 Posts: 692 Nutzer |
Zitat: Die Zahl $100 wird auf den Inhalt der Speicherstelle addiert auf die a0 zeigt, wenn zu a0 4 (oder 12) hinzuaddiert werden. Nennt sich ARI mit Adressdistanz. Auf 4 und 12 kommt man deshalb, weil man mit 0 anfängt zu zählen. So zweigt (a0) auf das erste Byte in der Copperliste, der $01, 1(a0) auf $80 usw. Somit zeigt 4(a0) auf $20. Bedenke: Du hast zwar eine .W (also Wort) Breite, allerdings zählt alles noch in Byte Schritte. Die 4 sind also Bytes und nicht, wie man vielleicht denken kann, Worte (also 8 Bytes). BTW: Warum lernt man heute noch Assembler? Und dann auf ein M68K? Spaß an der Sache oder ein ernsthaften Hintergrund? Gruß Fisch08 -- Um den Spamfilter zu umgehen: Bei direkter Antwort per Mail bitte "[Amiga]" ins Subject: Nur so 100%ige Garantie, dass man nicht im Filter landet! [ - Antworten - Zitieren - Direktlink - ] |
18.02.2005, 11:11 Uhr Repo01 Posts: 12 Nutzer |
Hi, danke für deine schnelle Antwort. Du hast mir sehr geholfen. Ich lerne Assembler weil ich Intros oder Demos programmieren möchte. Da ich noch keinen PPC Rechner habe, fange ich erstmal mit dem 68k an. Nochmals danke! Gruß Repo01 [ - Antworten - Zitieren - Direktlink - ] |
18.02.2005, 16:33 Uhr DariusBrewka Posts: 899 [Benutzer gesperrt] |
Finde ich lustig, auch wenn es wohl ein wenig zu spät ist damit jetzt anzufangen. Habe aber vor 15 jahren auch damit angefangen und somit fällt mir auf, dass dein Programm bei 99% der Usern nicht laufen würde, da deine Copperliste bei fast Allen im FastMem landen würde. Du solltest vor der Copperliste ein SECTION DATA,CHIP oder wie das ging einfügen. [ - Antworten - Zitieren - Direktlink - ] |
18.02.2005, 19:48 Uhr fisch08 Posts: 692 Nutzer |
Zitat: Jo, bitte, war gerade wach... Zitat: Hm...treibe es nicht zu weit mit dem Assembler programmieren. Es lohnt sich zwar immer, Assembler zu verstehen und gerade den 68K Assembler mag ich besonders, weil er in sich logischer und strukturierter erscheint (alleine schon das move quelle,ziel macht mehr Sinn als das x86 mov ziel,quelle), aber denke daran, dass du dir das Leben auch unnötig schwer machst. Das erschlägst du folgendermaßen: Du programmierst in C und bindest an engen Stellen Assembler ein. Du besorgst dir einen Haufen Quelltexte in Assembler und nimmst einiges in dein Repertoire auf. Viel Spaß mit Demos Coden... Gruß Fisch08 -- Um den Spamfilter zu umgehen: Bei direkter Antwort per Mail bitte "[Amiga]" ins Subject: Nur so 100%ige Garantie, dass man nicht im Filter landet! [ - Antworten - Zitieren - Direktlink - ] |
19.02.2005, 14:59 Uhr Repo01 Posts: 12 Nutzer |
@ Darius: Ok danke, ich schau mir das mal an. @ Fisch08: Danke für deine Tips. Gruß Repo01 [ - Antworten - Zitieren - Direktlink - ] |
-1- | [ - Beitrag schreiben - ] |
amiga-news.de Forum > Programmierung > Assembler Listing - wer kann helfen? | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten. |