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.
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.
aber was wenn r1 nun überläuft??Code:ld temp, x+ add r1, temp
addieren in assembler ist ja schwerer als in der grundschule....
danke im voraus
freddy0815
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
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.
Open Minds. Open Sources. Open Future
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
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.
EDIT: Ist ne ganz schöne Bastellei bis das gut aussiehtCode: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.
Open Minds. Open Sources. Open Future
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
jupp, so meinte ich das.
Open Minds. Open Sources. Open Future
Lesezeichen