- Labornetzteil AliExpress         
Ergebnis 1 bis 4 von 4

Thema: Pointer verbiegen in Assembler

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Begeisterter Techniker Avatar von albundy
    Registriert seit
    16.10.2004
    Beiträge
    282

    Pointer verbiegen in Assembler

    Hallo,
    ich will mittels einer Variablen einen Pointer über die 256 Byte Grenze verschieben.

    ldi r16,3 ;über die Variable in r16 soll der Pointer auf Text1,2 oder 3 zeigen

    ldi Zh,High(Text?*2)
    ldi Zl,Low(Text?*2)
    Lpm r17,Z+
    out Porta,r17

    Text1: .db 0,0,0,0,... ;144 Byte
    Text2: .db 0,0,0,0,... ;144 Byte
    Text3: .db 0,0,0,0,... ;144 Byte

    ------------------------------------------------------------------

    in Bascom würde ich einfach schreiben:
    Restore Text1,2 oder 3 ->und damit ist der Pointer gesetzt
    Read Wert
    Porta=Wert

    Aber wie geht das in Assembler ?
    Kann mir einer helfen ?

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.12.2004
    Ort
    LEV
    Beiträge
    505
    Hallo,

    Zeigerarithmetik !
    schreib:

    ldi r16,3
    ldi ZH,HIGH(Textstart<<1)
    ldi ZL, LOW(Textstart<<1)
    ldi r0,144
    mul r0,r16
    add ZL,r0
    adc ZH,r1
    lpm r17,Z+
    ...

    Textstart:
    Text1: .db 0,0,0,0,... ;144 Byte
    Text2: .db 0,0,0,0,... ;144 Byte
    Text3: .db 0,0,0,0,... ;144 Byte
    ...


    Oder wolltest du was anderes erreichen ?

    Gruß Jan

  3. #3
    Erfahrener Benutzer Begeisterter Techniker Avatar von albundy
    Registriert seit
    16.10.2004
    Beiträge
    282
    Danke Jan,
    Zeigerarithmetik !
    sagt mir nicht viel, aber langsam komme ich hinter die Kniffe von Assembler.
    Aber sag mal, das funktioniert doch nur mit r16 = 0,1 oder 2.
    Mit r16 = 3 lande ich doch irgendwo im Nirwana.
    Macht aber nix, ich hab das Prinzip verstanden.

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.12.2004
    Ort
    LEV
    Beiträge
    505
    sag mal, das funktioniert doch nur mit r16 = 0,1 oder 2.
    Ich bin davon ausgegangen, das da noch mehr Texte kommen.

    Text4....
    Text5....
    usw...

    Wenn es nur 3 sind ?? OK.

    Gruß Jan

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests