Schon mal Rechnen mit 3 Registern gelesen? Das ist fast das gleiche Thema.
Nabend liebe Gemeinde!!
Ich habe lange gesucht, aber leider nichts gefunden .
Ich möchte in Assembler eine Zahl die in
r16 und r17 steht, durch eine zahl die in r18 und r19 steht teilen.
z.b. 60000/20000
Ich habe einfach keine ahnung wie ich da überhaupt vorgehen muss.
Finde auch leider nichts dazu.
mit welchem register muss ich was machen?
mfg, Philipp
DANKESCHÖN!!!!!!!!!
Schon mal Rechnen mit 3 Registern gelesen? Das ist fast das gleiche Thema.
Disclaimer: none. Sue me.
Ja, ich bin sogar der Verfasser des Rechnen mit 3 Registern.
Allerdings wurde es immer mit sehr viel code erklärt, was mich doch
verwirrt hat.
Habe daher immernoch das gleiche Problem mit rechnen von Dualzahlen
die über 1 Register hinausgehen.
Ist dir lieber, wenn wir dir code ohne Erklärung schicken? Ich denke, dort wurde alles ausführlich in verschiedenen Varianten erklärt.
lg
Alex
Hi Alex
erst nochmal vielen vieln Dank für dir Mühe!!!
Nein, das bei dem Code Erklärungen dabei waren war super,
nur konnte ich die langen Code`s nicht ganz nachvollziehen.
Ist es vielleicht bei 2x8bit / 2x8bit leichter zu verstehen?
Ich möchte nämlich gerne einen Tacho für mein Hamsterrad programmieren . der Kilometerzähler davon funktioniert schon .
Gruß, Philipp
Es wäre auch sehr hilfreich wenn ich wüsste wie man das ganze
schriftlich auf dem Papier realisiert.
Kennt ihr vielleicht eine Adresse wo dies erklärt ist?
Danke!!
Also auf Papier fängst du am besten mit normaler Division an, wie du sie in der Grundschule gelernt hast. Einfach mit Dezimalzahlen. Das passende Untereinanderschreiben ist ein Shift im Dezimalsystem um x Stellen, also Multiplikation mit 10^x.
Mit Binärzahlen geht es genauso... Ein Shift (Schieben) um x Stellen ist da ne Multiplikation mit 2^x.
Disclaimer: none. Sue me.
Code:Beispiel: 1111 ---- 110 Der Nenner wird erst nach links geschoben, bis das obere Bit mit dem Zähler übereinstimmt: 1111 Q=0 ---- 1100 Der Nenner ist kleiner als der Zähler, passt also genau 1x rein und kann abgezogen werden. Aber wir ziehen nicht den Nenner ab, sondern 2^1 mal den Nenner, weil wir ihn einmal nach links geschoben haben. Diese 2 wird zum Quotenten Q dazugezählt, also Bit 1 von Q gesetzt 0011 Q=10 ---- 1100 Der Nenner kann jetzt nicht mehr reinpassen (wegen Zweiersystem) und wird 1 nach rechts geschoben 0011 Q=10 ---- 110 er passt nicht rein, Bit 0 von Q bleibt also 0 Bei einer Ganzzahldivision sind wir schon fertig. Der Quotient ist 2 und der Rest ist 3 (Zähler) Test: 15 = 2*6+3 Wenn wir aber weitermachen: 0011 Q=10 ---- 11 Passt der Nenner wieder rein. Wir sind jetzt bei Bit -1 von Q, also bei der ersten Nachkommastelle. Nenner abziehen und Bit -1 von Q setzen, bzw 2^(1/2) zu Q addieren: 0000 Q=10.1 ---- 11 Wir sind fertig, weil der Rest 0 ist: Q=2.5 Test: 15 = 2.5*6
Disclaimer: none. Sue me.
Dank für das Bsp,
Aber ich dachte eigentlich an eine Schriftl. Lösung von 2X8 / 2X8 Bit.
z.b.
11101010, 01100000 = 60000
------------------------------------
10011100, 00100000 = 20000
Aus der Division der Beiden Zahlen (2x8 Bit / 2x8 Bit) sollte 3 rauskommen.
Nur wie stelle ich das am besten an?
Trotzdem vielen vielen dank für eure Mühen !!!!!!!
Für mehr bits geht es doch genauso. Wenn du das kleine Beispiel verstanden hast, wirst du es auch mit grösseren Zahlen verstehen.
20000 = 01001110 00100000, vielleicht war das dein Fehler?
Disclaimer: none. Sue me.
Lesezeichen