-         
Ergebnis 1 bis 5 von 5

Thema: Rol/ror

  1. #1
    Unregistriert
    Gast

    Rol/ror

    Anzeige

    Hallo Leute,

    ich muss für die in Assembler ein "Lauflicht" über die STK500 (mega16) programmieren.
    Ich habe mich im Internet informiert wie das rol und das ror funktioniert. Ob ich es verstanden habe ist offen.
    Das Programm was ich vorbereitet habe:

    .include "m16def.inc"

    ldi r16, 0xff
    out ddrb,r16
    ldi r17, 0x00
    out ddrd,r17
    ldi r17,0xfe
    ldi r16,0xfe
    ldi r20,0xff
    ldi r21,0xff

    loop:

    in r18,pind
    cp r17,r18
    breq lable1

    cpi r18,0x7f
    brne ende

    ror r16
    out portb,r16

    warteschleife1:
    nop
    dec r20
    brne warteschleife1

    nop
    dec r21
    brne warteschleife1

    rjmp loop

    lable1:

    out portb,r16
    rol r16

    warteschleife2:

    nop
    dec r20
    brne warteschleife2

    nop
    dec r21
    brne warteschleife2
    out portb,r16

    ende:
    rjmp loop

    die Warteschleifen könnt ihr erst mal ignorieren.
    Das Ziel ist: Bei jedem Tastendruck soll eine bzw. die nächste LED leuchten.
    Wenn ich ROL oder ROR benutze macht er das nicht.
    Zb. 1111 1110 wird zu 1111 1100 wenn ich rol benutze.
    Sollte es nicht 1111 1101 werden?

    Ich danke schon mal für die Antworten.

    - - - Aktualisiert - - -

    Zitat Zitat von Unregistriert Beitrag anzeigen
    Zb. 1111 1110 wird zu 1111 1100 wenn ich rol benutze.
    Sollte es nicht 1111 1101 werden?
    rol holt Bit 0 aus dem Carry Flag. Carry Flag wird 0 gewesen sein und Carry ist dann nach dem ersten rol 1, da Bit 7 ins Carry geschoben wird. Ohne jetzt den ganzen unkommentierten und unerklärten Code durchzugehen, könnte ein SEC (Set Carry) an der richtigen Stelle das Problem lösen. Allerdings wird irgendwann die 0 im Bitmuster im Carry "unsichtbar" werden ...

  2. #2
    Unregistrierter
    Gast
    Zitat Zitat von Unregistriert Beitrag anzeigen
    Ich habe mich im Internet informiert wie das rol und das ror funktioniert. Ob ich es verstanden habe ist offen.
    Die richtige Informationsquelle wäre hier:
    http://www.atmel.com/Images/Atmel-08...Set-Manual.pdf

  3. #3
    Unregistriert
    Gast
    "Die richtige Informationsquelle wäre hier:
    http://www.atmel.com/Images/Atmel-08...Set-Manual.pdf"

    das habe ich schon gesehen, aber da ich schlecht in Englisch bin hilft mir das wenig weiter.

    danke aber trotzdem =)

  4. #4
    Unregistrierter
    Gast
    Zitat Zitat von Unregistriert Beitrag anzeigen
    - - - Aktualisiert - - -
    Zb. 1111 1110 wird zu 1111 1100 wenn ich rol benutze.
    Sollte es nicht 1111 1101 werden?
    rol holt Bit 0 aus dem Carry Flag. Carry Flag wird 0 gewesen sein und Carry ist dann nach dem ersten rol 1, da Bit 7 ins Carry geschoben wird. Ohne jetzt den ganzen unkommentierten und unerklärten Code durchzugehen, könnte ein SEC (Set Carry) an der richtigen Stelle das Problem lösen. Allerdings wird irgendwann die 0 im Bitmuster im Carry "unsichtbar" werden ...
    Hast du das auch gesehen?

  5. #5
    Unregistriert
    Gast
    ohh nein hatte ich nicht gesehen!
    Vielen dank!
    hat mir sehr weiter geholfen.

Benutzer, die dieses Thema gelesen haben: 0

Derzeit gibt es keine Benutzer zum Anzeigen.

Berechtigungen

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