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
Die clc-Anweisung ist überflüssig, add beachtet den Status des Carry-Flags nicht. Der Rest ist okay, ist IMHO nicht schneller zu bewerkstelligen.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.