Forum: Mikrocontroller und Digitale Elektronik 8Bit + 16Bit addition


von Alex (Gast)


Lesenswert?

Hallo zusammen..
Jetzt muss ich mal ganz dumm fragen:
Wie ist eigentlich der richtige ablauf bei einer addition von einer
8bit mit einer 16bit zahl???

in etwa so:

.equ bsp = 10000

ldi r16,low(bsp)    r16 und r17 sollen die 16 Bit Zahl darstellen
ldi r17,high(bsp)

ldi r18, 0xAC     r18 = 8Bit Zahl
clr r19

clc
add r16,r18
adc r17,r19

????????????

ist das richtig so ??
kann man was verbessern oder ist es gänzlich falsch??


danke schon mal im voraus für eure antworten

von wolli (Gast)


Lesenswert?

Die clc-Anweisung ist überflüssig, add beachtet den Status des
Carry-Flags nicht. Der Rest ist okay, ist IMHO nicht schneller zu
bewerkstelligen.

von Dingens (Gast)


Lesenswert?

das clc scheint überflüssig. aber sonst.

von Alex (Gast)


Lesenswert?

danke für die antworten...
ich hätte eigentlich gehofft das an dem code was falsch ist denn ich
habe das problem das ich nach meinen ganzen rechenoperation mein
16bittiges ergäbnis in den BCD_code umwandle und dann über das uart an
mein Hyperterminal sende um dort die ergebnisse zu betrachten.
leider seh ich dort immer nur werte wie z.b 5001 dann 5256 dann 5511
usw. also immer im  abstand von 256 obwohl rein rechnerisch auch werte
wie 5046 usw. rauskommen müssten... ich dachte es liegt an der addition
von 16 mit 8 bit werten... naja da werd ich mal weiter suchen...
gruß alex

von DerInder (Gast)


Lesenswert?

Hallo,
deine Routine funktioniert allerdings nur bei positiven 8Bit Werten,
ansonsten solltest du es wie folgt erweitern

...


ldi r18, 0xAC     r18 = 8Bit Zahl (wenn negativ)
clr r19
sbrc r18, 7
ser r19

...


Gruß
-=jens=-

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.