Problem beim Assembler-lernen/verstehen :)

Es gibt 17 Antworten in diesem Thema, welches 1.083 mal aufgerufen wurde. Der letzte Beitrag (18. Januar 2025 um 14:31) ist von WebFritzi.

  • Moin,

    ich versuche mich gerade ein wenig mit Assembler zu beschäftigen :)

    Nun stehe ich vor folgendem Problem.

    Ich möchte mit dem Wert, der in einer Tabelle steht weiter arbeiten. in der Tabelle stehen 16Bit Werte.

    Offset1

    !word $0192,$0194,$0196,$0198,$019A

    Ereichen wollte ich folgendes damit:

    STA Wert_aus_Offset1,x

    als Schleife.

    Ich hoffe ich hab das halbwegs erklären können, was ich suche.

    Gruss

    pachen

    Amiga 500, Amiga 1200 OVP, Turbo Chameleon 64

    2 x C128 D , einige C64, C16 64K OVP

    1541, 1541II, 1571, 1581, 1084, DTV

    Spectrum 16K , Robotron KC 87, Robotron KC 85/3

  • Es ist schwer zu verstehen, was genau du vor hast.

    Ich verstehe deine Frage so, dass du den Wert des A-Registers in $0192+x speichern möchtest?!?

    Also wenn der Index x=2 ist, in $0196.

    Dazu sollest du dir die Bitte melde dich an, um diesen Link zu sehen. Befehle mal ansehen und dann mit dem Y-Register arbeiten.

    Du müßtest deine Adresse dann in Low-Byte & High-Byte aufteilen und erstmal auf eine definierte Adresse der Zero-Page schreiben.

    versuch mal dein Glück.

    Meine VC20 Projekte:

    🕹 Bitte melde dich an, um diesen Link zu sehen. 🕹 Bitte melde dich an, um diesen Link zu sehen. 🕹 Bitte melde dich an, um diesen Link zu sehen. 🕹 Bitte melde dich an, um diesen Link zu sehen.

  • Die Alternative ist den Wert von x zu verdoppeln, aber das kann je nach Code unpraktikabel sein. Und es schränkt dich auf 128 Einträge ein, da x ja nur bis 255 gehen kann.

    C64Studio: Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. --- C64Studio WIP: Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.

  • Beitrag von Mike (18. Januar 2025 um 12:30)

    Dieser Beitrag wurde von 8R0TK4$T3N aus folgendem Grund gelöscht: Auf Wunsch gelöscht (18. Januar 2025 um 14:21).
  • Code
    sta (zp),y          ; speichert den Wert aus dem Akku in $0196 wenn Y=2 ist

    Du meinst: speichert den Wert aus dem Akku in $0198 wenn Y=2 ist ;)

    pachen Mir ist aufgefallen, dass die Werte in deiner Tabelle alle 2 auseinander liegen. Wegen dieser Regelmäßigkeit könntest du dir die Tabelle eigentlich sparen.

    Bitte melde dich an, um diesen Link zu sehen. (Bitte melde dich an, um diesen Link zu sehen.)Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen.

    2 Mal editiert, zuletzt von WebFritzi (18. Januar 2025 um 12:45)

  • STA Wert_aus_Offset1,x

    Meinst du damit, dass du an einer Adresse, die in der Offset-Tabelle steht, etwas speichern willst?

    Dann vielleicht so?

    Bitte melde dich an, um diesen Link zu sehen. - Ratespiel • Bitte melde dich an, um diesen Link zu sehen. - BASIC-Erweiterung • Bitte melde dich an, um diesen Link zu sehen. - Sprite-Editor • Bitte melde dich an, um diesen Link zu sehen. - Zeichensatz-Editor Bitte melde dich an, um diesen Link zu sehen. - 2048 Blöcke

  • Code
    sta (zp),y          ; speichert den Wert aus dem Akku in $0196 wenn Y=2 ist

    Du meinst: speichert den Wert aus dem Akku in $0198 wenn Y=2 ist ;)

    Y=0 -> LB $92

    Y=1 -> LB $94

    Y=2 -> LB $96

    😉

    Meine VC20 Projekte:

    🕹 Bitte melde dich an, um diesen Link zu sehen. 🕹 Bitte melde dich an, um diesen Link zu sehen. 🕹 Bitte melde dich an, um diesen Link zu sehen. 🕹 Bitte melde dich an, um diesen Link zu sehen.

  • Genau :)
    das im Offset sind Adressen, an den ich etwas ablegen will.

    Amiga 500, Amiga 1200 OVP, Turbo Chameleon 64

    2 x C128 D , einige C64, C16 64K OVP

    1541, 1541II, 1571, 1581, 1084, DTV

    Spectrum 16K , Robotron KC 87, Robotron KC 85/3

  • Y=2 -> LB $96

    😉

    Eben! Und bei dir im Code ist Y=2. Also steht die $0196 in der Zeropage. Wenn du nun nochmal Y=2 mit der indirekten Adressierung verwendest, wird das zu $0198. Oder sehe ich mal wieder etwas nicht?

    Bitte melde dich an, um diesen Link zu sehen. (Bitte melde dich an, um diesen Link zu sehen.)Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen.
  • Genau :)
    das im Offset sind Adressen, an den ich etwas ablegen will.

    Ok, dann sollten dir eigentlich die obigen Code-Schnipsel weiterhelfen. Wenn nicht, beschreib doch vielleicht etwas ausführlicher, was du eigentlich vorhast. :)

    Bitte melde dich an, um diesen Link zu sehen. - Ratespiel • Bitte melde dich an, um diesen Link zu sehen. - BASIC-Erweiterung • Bitte melde dich an, um diesen Link zu sehen. - Sprite-Editor • Bitte melde dich an, um diesen Link zu sehen. - Zeichensatz-Editor Bitte melde dich an, um diesen Link zu sehen. - 2048 Blöcke

  • Beitrag von Mike (18. Januar 2025 um 12:51)

    Dieser Beitrag wurde von 8R0TK4$T3N aus folgendem Grund gelöscht: Auf Wunsch gelöscht (18. Januar 2025 um 14:21).
  • Die Werte im Offset sind Adressen, die sich auf den Bildschirmspeicher beziehen.

    Es soll auf den Offsetadressen bestimmte Zeichen ausgegeben werden, also auf dem Bildschirm.

    Amiga 500, Amiga 1200 OVP, Turbo Chameleon 64

    2 x C128 D , einige C64, C16 64K OVP

    1541, 1541II, 1571, 1581, 1084, DTV

    Spectrum 16K , Robotron KC 87, Robotron KC 85/3

  • Y=2 -> LB $96

    😉

    Eben! Und bei dir im Code ist Y=2. Also steht die $0196 in der Zeropage. Wenn du nun nochmal Y=2 mit der indirekten Adressierung verwendest, wird das zu $0198. Oder sehe ich mal wieder etwas nicht?

    Oh, du hast recht. Es ist falsch was ich oben geschrieben habe. Y hätte vor dem Speichern 0 sein müssen.

    Asche auf mein Haupt 😔

    Du bist der einzige dem es aufgefallen ist 👍🏻

    Meine VC20 Projekte:

    🕹 Bitte melde dich an, um diesen Link zu sehen. 🕹 Bitte melde dich an, um diesen Link zu sehen. 🕹 Bitte melde dich an, um diesen Link zu sehen. 🕹 Bitte melde dich an, um diesen Link zu sehen.

  • Danke erstmal :)

    Hat mit dem Beitrag von aitsch geklappt

    Dann arbeite ich mal zum nächsten Problem vor :)

    Amiga 500, Amiga 1200 OVP, Turbo Chameleon 64

    2 x C128 D , einige C64, C16 64K OVP

    1541, 1541II, 1571, 1581, 1084, DTV

    Spectrum 16K , Robotron KC 87, Robotron KC 85/3

  • Beitrag von WebFritzi (18. Januar 2025 um 13:09)

    Dieser Beitrag wurde von 8R0TK4$T3N aus folgendem Grund gelöscht: Auf Wunsch gelöscht (18. Januar 2025 um 13:21).
  • Die Werte im Offset sind Adressen, die sich auf den Bildschirmspeicher beziehen.


    Es soll auf den Offsetadressen bestimmte Zeichen ausgegeben werden, also auf dem Bildschirm.

    Also doch ein Bitte melde dich an, um diesen Link zu sehen.. :(

  • Die Werte im Offset sind Adressen, die sich auf den Bildschirmspeicher beziehen.

    Es soll auf den Offsetadressen bestimmte Zeichen ausgegeben werden, also auf dem Bildschirm.

    Hä? Also ist $0192 bei dir im Bildschirmspeicher? Dann würde dein Bildschirmspeicher bei $0000 beginnen - eine eher unglückliche Wahl. Oder sind in $0192 usw. Zeichen abgelegt, die auf dem Bildschirm erscheinen sollen? In dem Fall wäre deine Beschreibung im Zitat oben nicht korrekt.

    Bitte melde dich an, um diesen Link zu sehen. (Bitte melde dich an, um diesen Link zu sehen.)Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen.
  • Auf die Werte kommt hier noch ein +$0400 dazu.

    Die Werte sind auch nicht alle +2 :)

    Gruss

    Amiga 500, Amiga 1200 OVP, Turbo Chameleon 64

    2 x C128 D , einige C64, C16 64K OVP

    1541, 1541II, 1571, 1581, 1084, DTV

    Spectrum 16K , Robotron KC 87, Robotron KC 85/3

  • Auf die Werte kommt hier noch ein +$0400 dazu.

    Hättest du vielleicht sagen sollen.

    Die Werte sind auch nicht alle +2 :)

    In deinem Eingangspost sehr wohl.

    Nur so als Tipp für dich: Wenn du Hilfe brauchst, ist es für dich selber von Vorteil, dein Problem ganz genau - ohne Widerspruchseventualitäten oder Unklarheiten - zu beschreiben. Erstens erhöht das die Chance, dass du deine Antwort schnell bekommst, und zweitens ist das respektvoll denen gegenüber, die dir gerne helfen wollen.

    Bitte melde dich an, um diesen Link zu sehen. (Bitte melde dich an, um diesen Link zu sehen.)Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen.
  • Das sagt sich so einfach :)
    Das Problem in Worte zu fassen ist nicht immer so einfach,

    wenn man nicht rausbekommt wo es eigentlich klemmt.

    Wie immer es auch sei ....

    Erstmal schönes WE

    Amiga 500, Amiga 1200 OVP, Turbo Chameleon 64

    2 x C128 D , einige C64, C16 64K OVP

    1541, 1541II, 1571, 1581, 1084, DTV

    Spectrum 16K , Robotron KC 87, Robotron KC 85/3