hi, ich hab 3 BCD ziffern die von 3 andren BCD ziffern abgezogen werden. beispielsweise 243-197. somit wäre 2 die 1.bcd 4. die 2. usw.. die liegen alle ungepackt in registern rum. wie ist das prinzip dafür, dass da das richtige rauskommt? ich las bereits die applicationnotes aber die enthalten nicht das richtige und sind sowieso äußerst fehlerübersäht. gegoogelt hab ich auch schon und nichts gefunden. ich würde es ja in C machen aber mein assembler-programm ist fast fertig und da möcht ich nicht alles in C nochmal schreiben... achja: controller=atmega8 Danke schonmal im vorraus mfg Jemand
Schriftlich subtrahieren mit Übertrag?! Das ganze in Assembler zu Fuß zu machen, wo ist da das konkrete Problem?
Na ja, "Jemand" will das mit BCD-Zahlen machen. Ich würde die Zahl in Hex konvertieren, berechnen und danach wieder BCD draus machen.
Ja, eben BCD, das ist so einfach wie schriftliches Subtrahieren, immer schön Stelle für Stelle, Übertrag beachten, fertig. Man kanns natürlich auch in Binär umwandeln, aber es muss nicht sein.
Genau wie schriftliches Subtrahieren. Das Programm wird nicht komplex, sollte also in max. einer Stunde Programmiert sein. btw: Git's bei atmega auch wie bei 8051 ein DA A? Bei der Konverteirung von BCD nach Binär, hast Du hinterher das Problem der Rückkonvertierung (Teilen duch 10 usw..) Das ist bestimmt schwieriger zu programmieren. alt-f4
Oke, danke für die Ratschläge. Ich bin bloß mit dem übertrag verwirrt. Also beim schriftlichen tu ich ja: Bsp: 12-8 1.: 2-8 = -6 ;;dann steht im Register 6 und dann noch der übertrag oder?? aber wo find ich den??? 2.: 1-0=1 ;;also noch zehn überig 3.: -6+10=4 ;hier dann endeergebniss so da war jetzt natürlich nur mit übertrag ich muss dann quasi nach 1 prüfen ob der da ist(geht aber nicht weil ich nicht weiß wo) und dann 3 nur bei übertrag sonst immer die zahlen in den registern normal also muss ich sonst nichts mehr machen iss meine logik richtig?? Jemand
oke ich hab mittlerweile gemerkt dass sie es nicht ist: 1.:2-8 ;;da minus rauskommen würde geht nicht also übertragen: 12-8 2.:1-0-übertrag(hier 1) so passts dann aber: wie geht das mit dem übertrag? hab ich da flags in statusregister? dass ich sub r1, r2 machen muss und dannach noch die branchanweisung obs minus iss iss mir klar aber wie mach ich dann das mit dem 12? soll ich dann einfach binär 10 zur eigentlichen 1.stelle addieren und dann minus 8 oder wie jetzt?? Jemand
auch bei minus oder wie jetzt?? ich dachte wenn was negatives rasukommt wird das n-bit gesetzt? oke jetzt hab ich mein datenblatt grad wieer gefunden. ich werd jetzt mal versuchen das prog zu schreiben danke schonmal cu Jemand
Vielleicht hilft Dir das hier weiter: http://home.in.tum.de/~doychev/mikropr/index.html Hier noch was über die 'Borgetechnik': http://www.rechenschwaeche.de/pdf/02_schriftl_sub.pdf Ehrlich gesagt ist das gar nicht so einfach und ich habe, dank Taschenrechner, alles vergessen. Gruß Andi
Ja ich hatte gestern abend das skript dann doch nach ner dreiviertel stunde zusammen, was aber ohne den anstoß an die 2.Klasse zurückzudenken nicht gelungen wäre... nun denn habe ich halt das zweite verfahren das ich beschrieben hab angewendet und bald festgestellt, dass ich wenn ich 2Zeilen Code pro ziffer lösche zum selben Ergebnis komme und das war dann wieder das erste Verfahren. komischer zufall Danke nochmal Jemand
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.