amiga-news 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:
Original von Repo01:
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!


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:
Original von Repo01:
Hi,

danke für deine schnelle Antwort. Du hast mir sehr geholfen.


Jo, bitte, war gerade wach...

Zitat:
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!


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.
.