Wie zu tun Spaltung in ARM?

Ich m versuchen, herauszufinden, wie eine Trennung in ARM, da es keine DIV Befehl. Wenn das getan werden kann, durch Multiplikation der float-Zahl [/9 = *0.09] durch Subtraktion oder durch die Nutzung einer Bibliothek. Jede Art und Weise tun würde.

Momentan mache ich division mit der Subtraktion mit einer Schleife wie diesem, aber ich lose die Nachkommastellen:

MOV R0,#70 ;Fahrenheit Temperature
SUB R1,R0,#32 ; Subtracting 32
MOV R4,#0 ;Counter

LOOP 

   ADD R4,R4,#1; Counter+1 ->Is the answer of the division without decimals
   SUB R1,#9
   CMP R1,#0
   BPL LOOP
   MOV R1,R4

Also im Grunde das, was ich Tue ist, dass ich die Temperatur auf 70, ich subtrahieren Sie 32 und ich bekomme 38. Dann in der Schleife nehme ich 9 jeder Zeit, bis die Erinnerung ist kleiner als 9. Die Antwort mit der normalen division ist 4.22222. Hier bekomme ich 5. Also mein Ergebnis ist nicht so genau.

  • mögliche Duplikate von Schnell-Division auf GCC/ARM
  • Besser ist es sich zu vermehren durch so etwas wie (2^16/9~=7282) und dann bei gedrückter Umschalttaste durch 2^16 auf das Ergebnis. Sie haben, um zu wissen, die Werte und das funktioniert nur für einen festen division.
  • Andere Verwandte quesions: Integer division auf ARM, Montage-mod-Algorithmus, schauen Sie auf der zugehörigen Liste auf der Seite der Frage.
  • Mein ARM hat eine Abteilung Anweisung...warum nicht deins? Ist es vielleicht ein wenig mehr Informationen könntest du uns geben?
  • homepage.cs.uiowa.edu/~jones/bcd/divide.html und nur das tun, jede andere Zahl. ja, Sie können Feste oder float multiplizieren von 1/9. zum Beispiel.
Schreibe einen Kommentar