- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 5 von 5

Thema: Statusregister

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    16.07.2006
    Beiträge
    149

    Statusregister

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo,

    euch wird es trivial vorkommen, aber ich habe ein kleines Problem damit :

    Damals (in den 70ern) hies es, bei einer CPU/MPU spielt sich alles im Akkumulator ab. Die Operationen im Akku beeinflussen auch das Statusregister.

    Seit einiger Zeit beschäftige ich mich mit AVR´s. Hier steht in der Doku, dass der Befehl das Statusregister beeinflusst ?!

    Aus dem Avr-ASM-Tutorial :

    INC R1
    BRNE ...
    INC R2
    BRNE ....

    Geht das bei allen Registern ?

    Und was ist bei Verschachtelungen, behält der Processor da den Überblick ?

    INC R1
    INC R2
    BRNE .....
    BRNE .....


    Gruss

    Wolfgang
    "Jedes hinreichend mächtige formale System ist entweder widersprüchlich oder unvollständig"
    Kurt Gödel

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Wenn du von den 70-ern sprichst, bist du wohl ein Altgedienter.
    Bei den RISC-Kisten beeinflussen nicht alle Befehle die Statusbits.
    Beim Instructionset (überblick und detailliert) steht immer dabei, welche Flags "affected" sind.
    Man gewöhnt sich dran, und es hat schon seinen Sinn
    Je nach deinem Level, vielleicht hilft das was:
    https://www.roboternetz.de/wissen/in...Cr_Bascom-User

    EDIT: Mit der Verschachtelung isses sooo nix. Das hätt aber ein alter 2650 oder Z80 auch nicht gemacht.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    16.07.2006
    Beiträge
    149
    @PicNick

    Vielen Dank, der Link hat mir weitergeholfen. Die Ausarbeitung hat mir gefallen und war sehr hilfreich.

    Ich hätte da noch eine letzte Frage :

    Wenn ich in Bascom zu einem Ziel springe --> GOTO Label

    und dieses Ziel in ASM definiere -->

    $asm
    Label :
    ........
    findet der Compiler dann das Ziel ?


    EDIT : Den Z80 hätte ich über den Akku programmiert.
    Übrigens war der Z80 damals ein HighTec Teil. An der Schule hatten wir ein Teil von Siemens, gross wie ein Fenster, auf Rollen , mit einer 7-Segment-Anzeige und Hex-Tastatur. Das Ganze war noch diskret aufgebaut.


    Gruss

    Wolfgang
    "Jedes hinreichend mächtige formale System ist entweder widersprüchlich oder unvollständig"
    Kurt Gödel

  4. #4
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    .. gross wie ein Fenster, auf Rollen ..
    Is ja noch schlimmer mit dir als angenommen

    Mit den Label im Programmspeicher muß man aufpassen: Der µC hat da zwei Begriffe: Worte und Bytes.
    Instructions brauchen ja immer 16-Bit, also zwei Byte, während irgendwelche Daten (im Prog-speicher) nur auf Byte ausgerichtet sind.
    Konkret:
    wenn du schreibst
    Code:
    $asm
        rcall     labello           
        ...
    labello:
        ret
    $end asm
    klappt das tadellos

    Bascom gibt aber immer die Byteaddresse zurück
    Code:
    DIM addr AS WORD
    DIM dat   AS BYTE
            addr = loadlabel (labello)           ' byteaddresse
            dat = CPEEK(addr)                  ' dat = &H41
       ......
    labello:
         DATA    &H41
    Wenn du aber dort hinjumpen willst, mußt du addr / 2 nehmen (->wortadresse)
    Code:
    DIM addr AS WORD
            addr = LOADLABEL (labello)           ' byteaddresse
    
         $ASM
     '-----   variable "addr" in register "Z" laden -----
          LOADADR  addr, X       ' variable "addr" (SRAM)
          LD     zl, X+               '  Reg z  load
          LD     zh, X+             
     '-----   register "Z" / 2 -----
          LSR   zh               
          ROR  zl  
     '-----   Call  register "Z" -----
          ICALL                      ' call  Z
         $END ASM
        
    
       ......
    labello:
        ..
        return
    Verständlich oder kryptisch ?

    BTW: ob der label innerhalb "$ASM" definiert wird oder ein "bascomlabel" ist, ist egal
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    16.07.2006
    Beiträge
    149
    @PicNick

    ich danke Dir für die Ausführungen und wünsche Dir noch einen schönen Tag.


    Grüsse aus Köln

    Wolfgang
    "Jedes hinreichend mächtige formale System ist entweder widersprüchlich oder unvollständig"
    Kurt Gödel

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad