-         

Ergebnis 1 bis 7 von 7

Thema: 500 werte in assembler addieren

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    25.11.2004
    Beiträge
    17

    500 werte in assembler addieren

    Anzeige

    sorry, dass ich schon wieder störe....
    aber ich such mir immer das schwerste aus. addieren in assembler.

    programmiere in AVR studios.
    habe schon ein paar kleine codes gefunden um zwei 16bit zahlen zu addieren. aber ich versuche 500 8bit werte zu addieren. maximal kann dabei eine 24bit zahl rauskommen.
    sprich: 500*256 = 128000 entspricht 1 F4 00

    die 500 werte stehen im daten register. mit dem zeiger (x) gehe ich alle werte nacheinander durch. dabei will ich sie addieren.

    Code:
    ld temp, x+
    add r1, temp
    aber was wenn r1 nun überläuft??

    addieren in assembler ist ja schwerer als in der grundschule....

    danke im voraus
    freddy0815

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.11.2003
    Ort
    Alfeld (50km südl. Hannover)
    Alter
    34
    Beiträge
    237
    gibt es da nicht irgendwo ein overflow flag ( asm ist bei mir schon ein bischen her)?

    EDIT:
    Habs gefunden:
    SREG:0 Carry flag, wird bei einem Überlauf gesetzt.
    Open Minds. Open Sources. Open Future

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.11.2003
    Ort
    Alfeld (50km südl. Hannover)
    Alter
    34
    Beiträge
    237
    Hab hier ein Tutorial von Gerhard Paulus gefunden, da ist gut beschrieben wie
    man mit großen Zahlen umgeht. Der Rest ist auch sehr lesenswert.
    Angehängte Dateien Angehängte Dateien
    Open Minds. Open Sources. Open Future

  4. #4
    Gast
    das mit dem carry flag stimmt zwar schon, aber wenn ich z.b. 200 + 200 rechne, dann sollte nach adam riese 400 rauskommen. aber das carry flag hat ja nur '0' und '1'. dann weiss ich ja immernoch nicht, wie gross das 2.byte sein muss.

    naja. ich werd mir mal dieses tutorial reinziehn. das wird ne weile dauern

    danke für den download!
    freddy0815

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.11.2003
    Ort
    Alfeld (50km südl. Hannover)
    Alter
    34
    Beiträge
    237
    schau mal ins Tutorial, da gibts nen Befehl "add with carry", das carry bit steht
    ja dann für die nächstgrößere zahl z.B.

    Code:
     200   11001000
    +200   11001000
    --------------------------------
     400 1 10010000
         ^.......................... Das ist das carry Bit, und muss zum nächsten Byte
                                           dazugerechnet werden. In Byte 1 Steht dann nur noch
                                           400-256=144.
    EDIT: Ist ne ganz schöne Bastellei bis das gut aussieht
    Open Minds. Open Sources. Open Future

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    25.11.2004
    Beiträge
    17
    danke für die tipps. habs so hinbekommen:

    ld temp, x+
    add r1,temp
    adc r2,r4
    adc r3,r4

    die schleife geh ich für die 500 werte durch.

    freddy0815

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.11.2003
    Ort
    Alfeld (50km südl. Hannover)
    Alter
    34
    Beiträge
    237
    jupp, so meinte ich das.
    Open Minds. Open Sources. Open Future

Berechtigungen

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