Language…
8 users online: autisticsceptile1993, Batata Douce, DasFueller, DPBOX, Dzing, eltiolavara9, matthwsan, RZRider - Guests: 277 - Bots: 281
Users: 64,795 (2,377 active)
Latest user: mathew

ASM Tutorial 1.0

Hallo erstmal. Vielleicht hat der eine oder andere mal davon geträumt einen ASM Code zu schreiben, indem Mario einen Block berührt. Durch die Berührung wird er zu Feuer Mario. Viele Tutorials sind zwar schön und gut, aber nicht wirklich hilfreich, weil eben vieles fehlt. Ich versuche hier das so gut wie ich es kann hier zu vermitteln. Sollten irgendwelche Fehler gemacht worden sein, dann sagt mir gleich bescheid, sonst endet das noch in einer Katastrophe(Und 'ner gecrashten SMW ROM)

[==Altes Tutorial gelöscht==]

Das Alte Tutorial wurde gelöscht. Ich habe es nochmal komplett neu geschrieben als PDF Datei:

http://dl.dropbox.com/u/5322563/ASM_Tutorial.pdf

Und hier noch ein Link zu der Erklärung der einzelnen Register:
http://dl.dropbox.com/u/5322563/ASM-Tutorial_Reg.pdf

Schon mal nicht schlecht, und vor dem üblichen Abbruch wegen Lustlosigkeit steht immerhin eine ganze Menge Text.

Was die Erklärung angeht... da würde ich an deiner Stelle einige Sachen anders machen. Ich hab den Text, besonders die letzte Hälfte, eher überflogen, aber trotzdem - vieles scheint zu schnell erklärt, und die Art, in der Dinge aufeinander aufbauen (oder eben nicht) ist auch nicht gerade optimal. Hätte ich glaube ich als Anfänger nicht verstanden.

Echte Fehler:

Quote
Denn man musste die ganze Zeit(von Hand) zu den einzelnen Adressen springen. Aber das wird mit ASM schneller gemacht.

Klingt so, als wäre Maschinencode (Befehle in Hex) was ganz anderes als ASM. ASM ist eine besser lesbare Schreibweise für Maschinencode, mehr nicht.

Quote
8-Bit, zwei Werte?: 2^2 [...] 16-Bit, 4 Werte?: 2^4

2³ ist acht, und das hat miteinander nichts zu tun. Eine Stelle im Hexadezimalsystem entspricht vier Binärstellen, das war's.

Quote
Das DB Register ist eine 8-Bit Zahl, die das High-Byte(In diesem Fall 7E) ersetzt, wenn es weggelassen wird.

Das Data Bank Register hat nicht standardmäßig den Wert $7E, da bin ich mir ziemlich sicher. $7E und $7F sind die Banks, die RAM enthalten, und die Adressen $0000 bis $1FFF in den Banks $00 bis $1F haben dieselben Werte wie die in Bank $7E. Ob man $001DFB, $0A1DFB oder $7E1DFB schreibt, ist egal - und die 16-Bit-Schreibweise $1DFB ist die Kurzform von $001DFB. Es ist nicht so, dass hier das DBR hinzugezählt wird, sondern es wird tatsächlich auf Adresse $001DBF zugegriffen, was aber denselben Wert hat wie $7E1DFB. Das schreibt die SNES so vor. Bei Adressen ab $2000 muss man die Bank explizit angeben, da der Mirror in den Banks $00 bis $1F nur bis zu $1FFF reicht.

Hoffe, das war verständlich, es ist Mitternacht. Angenehme Ruhe.


 
Hi,

habe mir das nicht durchgelesen, sondern es nur überflogen. Die Struktur scheint auf jeden Fall sehr gut zu sein (erinnert mich sogar ein bisschen an mein eigenes, unfertiges Tutorial) und dürfte ziemlich sinnvoll sein. Meinem Tutorial ist es sogar schon dadurch voraus, das hier schon Blocktool angesprochen wird, sogar mit netten Grafiken. Weiter so! ;)
Feel free to visit my website/blog - it's updated rarely, but it looks pretty cool!
Originally posted by WhiteYoshiEgg
Schon mal nicht schlecht, und vor dem üblichen Abbruch wegen Lustlosigkeit steht immerhin eine ganze Menge Text.

Was die Erklärung angeht... da würde ich an deiner Stelle einige Sachen anders machen. Ich hab den Text, besonders die letzte Hälfte, eher überflogen, aber trotzdem - vieles scheint zu schnell erklärt, und die Art, in der Dinge aufeinander aufbauen (oder eben nicht) ist auch nicht gerade optimal. Hätte ich glaube ich als Anfänger nicht verstanden.

Echte Fehler:

Quote
Denn man musste die ganze Zeit(von Hand) zu den einzelnen Adressen springen. Aber das wird mit ASM schneller gemacht.

Klingt so, als wäre Maschinencode (Befehle in Hex) was ganz anderes als ASM. ASM ist eine besser lesbare Schreibweise für Maschinencode, mehr nicht.

Quote
8-Bit, zwei Werte?: 2^2 [...] 16-Bit, 4 Werte?: 2^4

2³ ist acht, und das hat miteinander nichts zu tun. Eine Stelle im Hexadezimalsystem entspricht vier Binärstellen, das war's.

Quote
Das DB Register ist eine 8-Bit Zahl, die das High-Byte(In diesem Fall 7E) ersetzt, wenn es weggelassen wird.

Das Data Bank Register hat nicht standardmäßig den Wert $7E, da bin ich mir ziemlich sicher. $7E und $7F sind die Banks, die RAM enthalten, und die Adressen $0000 bis $1FFF in den Banks $00 bis $1F haben dieselben Werte wie die in Bank $7E. Ob man $001DFB, $0A1DFB oder $7E1DFB schreibt, ist egal - und die 16-Bit-Schreibweise $1DFB ist die Kurzform von $001DFB. Es ist nicht so, dass hier das DBR hinzugezählt wird, sondern es wird tatsächlich auf Adresse $001DBF zugegriffen, was aber denselben Wert hat wie $7E1DFB. Das schreibt die SNES so vor. Bei Adressen ab $2000 muss man die Bank explizit angeben, da der Mirror in den Banks $00 bis $1F nur bis zu $1FFF reicht.

Hoffe, das war verständlich, es ist Mitternacht. Angenehme Ruhe.


Beim ersten Zitat ging es mir eben darum, dass man von Hand zu den einzelnen Adressen springen musste und dessen Werte ändern musste. Anders als bei ASM kannst du Sprungbefehle nutzen, bei denen du sofort zu den Adressen springen kannst. Aber wie du bereits gesagt hast, letztendlich gibt es keinen Unterschied. Beides bleibt das gleiche. Nur ASM bringt eben Vorteile mit sich, die man, wenn man das ganze von Hand macht, nicht bekommt. (Wenn ich mich da auch irre, dann weiß ich auch nicht weiter.)


Beim zweiten Zitat habe ich wohl nicht aufgepasst(naja, war ja auch ziemlich spät) und deshalb habe ich dieses Bit Zeugs von den Adressing's weggeholt.

Drittes Zitat: Das weiß ich natürlich auch, deshalb habe ich ja auch geschrieben, in diesem Fall. Heißt aber nicht, dass es immer so ist. Natürlich habe ich auch hinzugefügt, dass es noch 7F Bank gibt. Und verdammt! Wie konnte ich das vergessen. Das war wirklich einer der wichtigsten Sachen und ich habs nicht hin geschrieben. (Damit meine ich das die Mirror in den Banks nur bis $1FFFF gehen dürfen, danach muss man sie explizit angeben, wie du sagtest) Das habe ich sofort hinzugefügt.

Und zu letzt könnte ich mir in den Hintern beißen, aber es wird wohl sein müssen, dass ich das komplette Ding überarbeiten muss. Nächstes mal schreibe ich nicht mehr um 11 Abends oder später irgendwelche Tutorials.

Ah, verstehe.

Ja, bei meiner dritten "Korrektur" hab ich selbst einen Fehler gemacht. $1DFB ist nicht immer dasselbe wie $001DFB, sondern es wird tatsächlich immer das DBR hinzugezählt. Das ist aber trotzdem selten $7E (wenn überhaupt), also greift man, wenn man $1DFB schreibt, so gut wie immer auf $001DFB - $3F1DFB zu, nicht auf $7E1DFB.


 
Originally posted by WhiteYoshiEgg
Ah, verstehe.

Ja, bei meiner dritten "Korrektur" hab ich selbst einen Fehler gemacht. $1DFB ist nicht immer dasselbe wie $001DFB, sondern es wird tatsächlich immer das DBR hinzugezählt. Das ist aber trotzdem selten $7E (wenn überhaupt), also greift man, wenn man $1DFB schreibt, so gut wie immer auf $001DFB - $3F1DFB zu, nicht auf $7E1DFB.


Schließlich sind ja Fehler da, um sie zu korrigieren, sonst gäbe es weder Mensch noch irgendwas. Alles hat Fehler, die korrigiert werden müssen.

Hängt es also von der Wahrscheinlichkeit ab wann das DBR mal mitarbeitet? (Also was $1DFB betrifft)

Wenn das DBR über $3F und nicht $7E ist, dann klappt die Kurzschreibweise nicht, nehme ich mal an. Ist es aber in SMW von selbst nie, das müsste man schon mit Absicht machen.


 
Hallo, ich war nicht so wirklich zufrieden mit diesen Tutorial (und andere auch nicht) und deshalb habe ich es nochmal komplett in einem Textdokument neu geschrieben. Es ist diesmal ausführlicher und hoffentlich auch besser als das alte das ich hier gepostet habe. Es ist noch nicht fertig, dennoch möchte ich gerne ein Feedback von euch bekommen, da ich mir sicher bin, dass mir der eine oder andere Fehler unterlaufen ist.

Die Textdatei findet ihr auf dem Hauptbeitrag.

ODT? Ist vielleicht nicht gerade das beste Format, da man das nur mit Open Office öffnen kann. Wie wär es stattdessen mit RTF?
Feel free to visit my website/blog - it's updated rarely, but it looks pretty cool!
Originally posted by RPG Hacker
ODT? Ist vielleicht nicht gerade das beste Format, da man das nur mit Open Office öffnen kann. Wie wär es stattdessen mit RTF?


Ok, habs in RTF Format gemacht. Es scheinen keine Formatierungen schiefgegangen zu sein, da hatte ich mal wieder Glück.

Hallo, ich musste gerade nochmal bei Dropbox hochladen, da seit 3 Tagen irgendwie die ASM Tutorial.rtf datei nicht mehr ging.

Sollte jetzt problemlos funktionieren.

Update:
Hab jetzt PDF Dateien gemacht. (Wieso bin ich eigentlich nicht früher darauf gekommen)

Ich werde unter anderem noch Prinzipien erklären, wie bestimmte Hijacks, und so'n Zeug gemacht werden.

Tarek brichst du eigentlich alle tuts ab die du machst? xD
Scheint dezent einfacher zu sein als mips lol
My Channel - http://www.youtube.com/skilllux64
Quote
Posted on 04-02-2013 21:36:02

Quote
Posted on 13-06-2013 16:40:53

Ooookaaaaayyyyy#ab{:S}.
(Wäre ich ein Moderator, hätte ich was gemacht.)
Originally posted by MarioFanGamer659
(Wäre ich ein Moderator, hätte ich was gemacht.)

ich nicht.

In so inaktiven Unterforen wie diesen kann man auf das Alter des Threads einen Dreck geben. Es zählt, wie weit oben er in der Liste ist, und das kann nicht allzu wenig gewesen sein.


 
Hallo, zusammen.
Ich werde evtl. das ASM Tutorial im Abschnitt "xkas" noch erweitern und ein bisschen mehr ein paar Sachen erklären.

Vielleicht füge ich dann auch noch "Übungsabschnitte" dazu, bei denen ich jeweils den Übenden Aufgaben stelle, die entweder zu einem Abschnitt gehören oder auch eine "große" Übungsaufgabe, bei der mehrere Abschnitte einbezogen werden. (Bspw. ein kleines ASM-Projekt mit Blöcken, usw.)

Ich bin derzeitig schwer am Arbeiten mit dem MIPS Prozessor, der um einiges anspruchsvoller als 65C816 ASM ist. Deshalb weiß ich nicht, wann ich das ganze hier erweitere.

Aber lassen wir diese Nachricht als ein "Ich bin immernoch da" gelten und lassen den Anderen zeigen, dass ein Update dieses Dokumentes in Sicht ist.

MfG,
Tarek701.


Hab dein Tutorial vor ein paar Monaten gelesen, da es eines der wenigen, deutschen, von der Größe her ansprechenden ASM-Tuts ist, war ganz gut. Finde toll, dass du das immer noch erweitern möchtest #smw{:peace:}
Bottom Text