PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Binärzahl umdrehen. Aus 24 mach 42 ???



Import-Script
05.11.2003, 01:12
Hallo, <BR> <BR>wie kann ich aus der Zahl: 00011000 = 24 Dez. <BR>die Zahl: 00101010 = 42 Dez. machen ??? <BR> <BR>in Assembler nat&uuml;rlich ? :-&#41; <BR> <BR>Danke <BR> <BR>Gruß Euro.

Import-Script
05.11.2003, 01:37
war ein schöner Artikel hier drin bez&uuml;glich Zahl &#34;komplett&#34; umdrehen --&#62; dreh sie einfach in 4 Bit Etappen: <BR> <BR>for i = 1 to 4 <BR>rotate rechts ins carry und schaufel von links wieder rein in eine Speicherzelle, <BR>for i = 1 to 4 <BR>rotate... <BR> <BR>einfacher geght´s wenn Du das Ding <BR>AND Zahl, #$0F &#40;unteres Nibble maskieren&#41; <BR>ASl #4 &#40;arithmetic shift left um 4 Stellen&#41; <BR>CLC &#40;je nach Prozessor Carry clearen&#41; <BR>ADD Zahl,Akku &#40;ohne Carry&#41; <BR>und jetzt wird´s blöd... weil Du wahrscheinlich keinen 68000 oder einen 6809 mit 2 Akkus oder Register to Register hast. <BR>68000 hat 8 Regs kein Thema... <BR> <BR>Move.B Zahl, D0 <BR>AND #$0F,D0 <BR>Move.B Zahl, D1 <BR>AND #$0F, D1 <BR>ASl D0,4 ;&#40;4 Stelen links&#41; <BR>ADD D1 <BR>Move irgendwohin... <BR> <BR>egal, das geht auf jeder CPU; nicht unterkriegen lassen...<img src="http://progshop.com/elektronik/diskussion/clipart/smile.gif" border=0>

Import-Script
05.11.2003, 08:25
Ich w&uuml;rds nach dezimal konvertieren, vertauschen und wieder zur&uuml;ck nach binär: <BR> <BR>mov a, #24 ;A = Zahl &#40;24&#41; <BR>mov b, #10 <BR>div ab ;A = 2, B = 4 <BR>mov r7, a <BR>mov a, #10 <BR>mul ab <BR>add a, r7 ;a = 42 <BR> <BR> <BR>Peter <BR>

Import-Script
05.11.2003, 08:55
Hallo, <BR> <BR>danke schon mal ! <BR>Jetzt muss ich nur blöd fragen: <BR> <BR>&#34; Wenn die Zahl 24 dynamisch ist, also mal 12, 20, 28 ist wie kann ich dann die Binärzahl in eine Dezimalzahl konvertieren. <BR> <BR>Gruß Euro.

Import-Script
05.11.2003, 09:05
<i>wie kann ich dann die Binärzahl in eine Dezimalzahl konvertieren</i> <BR> <BR>... die ersten drei Zeilen von Peter&#39;s Beispiel gelesen ?

Import-Script
05.11.2003, 10:28
@Peter: Als 80xx Newbie muss ich mal blöd fragen: <BR>Dieses &#34;div ab&#34; - das macht doch die CPU nicht wirklich? - Ist das ggf. ein Makro oder so???, also eine Funktion des Assemblers. <BR>Hab hier schon mehrere solcher Konstrukte gesehen, gerade auch was die Verständlichkeit bzw. Nachvollziehbarkeit des Batronix-Assemblers angeht; das ist doch irgendwie kein Assembler mehr, eher eine Hochsprache... oder bin ich hier im falschen Film?

Import-Script
05.11.2003, 12:35
Sicher hat Batronix noch ein paar gute Befehle auf Lager, die der 8052 nicht selber kann. Aber DIV AB ist ein absoluter Urbefehl des 8052. Das macht dieses Teil ja auch so intressant. <BR> <BR>Such mal im Google eine Seite, mit allen Befehlen des 8052. Dann kannst du in Zukunft auch mitreden, was dieses gute Teil alles kann und was nicht. <BR> <BR>Gr&uuml;essli <BR>Thedy <BR>

Import-Script
05.11.2003, 15:07
@Thedy: Das geht total unter die G&uuml;rtellinie!!! <BR>--&#62; guckst Du mal, was der Hyperthreading P4 / MMX usw. alles kann; dann können wir weiterreden!!! <BR> <BR>Ich hab gesagt &#34;Als Newbie muss ich mal blöd fragen&#34; - aber eine so blöde Antwort hab ich echt nicht erwartet, nicht hier im Forum!

Import-Script
05.11.2003, 18:50
Also ich kann machen was ich will wenn ich: <BR> <BR>MOV A,00011000b <BR>MOV B,#10 <BR>DIV A,B <BR>MOV R1,A <BR>MOV R2,B <BR> <BR>steht bei mir in R1 &#34;0&#34; und in R2 &#34;4&#34;. Die 4 stimmt ja weil 24:10 ja Rest 4 hat. Aber in R1 m&uuml;sste doch 2 stehen. Ich kann mahcne was ich will da steht immer ne 0 drin. <BR> <BR>Warum denn das ??? <BR> <BR>Hab mir A auch schon mal direkt auf nem LCD ausgeben lassen da steht immer 0 drin.

Import-Script
05.11.2003, 19:32
@Andreas <BR>Es war von Thedy garantiert nicht böse gemeint ! <BR>Du haust manchmal auch derbe Spr&uuml;che heraus , könnte jemand auch missverstehen ... <BR> <BR>Der 8082 ist nicht sooo kompliziert &#40; und schon garnicht wie der P4 &#41; . <BR>Aber DIV AB macht er wirklich in hardware &#40; 4 zyklen &#41; . <BR> <BR>@Axel <BR> <BR>Versuche es hiermit : <BR> <BR>MOV A,#00011000b <BR>MOV B,#10 <BR>DIV AB <BR>MOV R1,A <BR>MOV R2,B

Import-Script
05.11.2003, 19:55
Also kann ja sein das mich jetzt gleich manche hier alles mögliche heisen aber : <BR> <BR>Wenn ich bei mir in A=24 hab und in B=6 und mach DIV AB dann steht in A=4 und in B=0 Richtig ! Juhu. <BR>Wenn ich in A=24 hab und in B=10 und mach DIV AB dann steht in A=0 und in B=4. Kein Scheiss !!! <BR>Hab eben vor der Binärzahl die # vergessen ! Hatte sie aber in meinem Prog. drin ! <BR> <BR>Gruß Euro.

Import-Script
05.11.2003, 20:09
Habe es gerade mit dem Progstudio getestet ... <BR> <BR>Alles bestens , eine 2 im A und R1 , eine 4 im B und R2 ! <BR>

Import-Script
05.11.2003, 20:20
Dann muss ich mir irgendwie was kaputt schiessen ! <BR>Bei mir gehts wirklich nicht. <BR>Sobald ich durch etwas Teile das größer als 6 ist kommt 0 im Akku raus ! Das register B stimmt immer !

Import-Script
05.11.2003, 22:55
@Axel: Geile CPU, oder Assembler oder sonstwas; echt! <img src="http://progshop.com/elektronik/diskussion/clipart/smile.gif" border=0> <BR> <BR>Erinnert mich an ein Statement von Apple bez&uuml;glich Parity-RAM: Wenn man dem Speicher schon nicht traut darf man keinen Computer drumherum bauen!!! <BR>Jetzt mal auf Deine CPU bezogen: TONNE KLOPPEN!!! oder Du machst was anderes falsch, oder ein Programm erledigt das &#34;Falschmachen&#34;!!! <BR>Drum Pr&uuml;fe wer sich ewig bindet... oder so &#40;glaub ich???&#41;

Import-Script
05.11.2003, 23:56
hihi, <BR> <BR>jo weis im moment auch nicht was da falsch läuft ! <BR>Um ne Zeile abzuschreiben und zu schauen was raus kommt halt ich mich eigentlich f&uuml;r schlau genug ! :-&#41; <BR>Allerdings ist das schon verdammt komisch wenn man eine division durch 6 machen kann und es stimmt aber keine division mit 10 hinbekommt ! ??? :-&#41; <BR>Was könnt ich den noch f&uuml;r ein programm verwenden zum testen ???

Import-Script
06.11.2003, 15:42
<i>Was könnt ich den noch f&uuml;r ein programm verwenden zum testen ???</i> <BR> <BR>Schon &#34;Prog-Studio&#34; Software von Batronix probiert ? <BR>Ist sehr gut zum Softwaretesten . <BR>Wenn&#39;s damit geht , dann tut&#39;s auch die hardware ... <BR>&#40; ausser bei hardwareinterrupts ... ? &#41;

Import-Script
06.11.2003, 22:02
mit was f&uuml;r einem Compiler arbeitest du denn ? Kann es sein, dass der Probleme mit den verschiedenen Zahlensystemen hat oder etwas andere Schreibkonventionen als wir es hier gewohnt sind ? Wir setzen hier wohl die meisten Batronix ein zum testen und kompilieren. <BR> <BR>Ich kann mir z.B. vorstellen, dass MOV B, #10 als Hex angeschaut wird und dann hier 16 bedeuten w&uuml;rde. Das wäre noch die einzige vern&uuml;nftige Erklärung die mir im Moment noch einfällt. <BR> <BR>@Andreas: Ich will hier sicher niemanden angreiffen, aber der 8051 ist so simpel einfach in Sachen Befehlen, das hast du in einer halben Stunde durchgeackert. Es lohnt sich allemal so eine Seite mal kurz zu &uuml;berfliegen. Der vergleich mit einem P4 hinkt schon ein bisschen. Kannst du mit dem z.B. auch mit vier, f&uuml;nf Zeilen Assembler eine serielle Schnittstelle fix fertig realisieren ? Es macht ja auch keinen Sinn einen Smart mit einem Formel 1 zu vergleichen, obwohl beides Autos sind. <BR> <BR>In diesem Sinne nicht mehr böse sein :-&#41; <BR> <BR>Thedy

Import-Script
06.11.2003, 23:44
@Thedy: Aller guten Dinge sind drei! <img src="http://progshop.com/elektronik/diskussion/clipart/smile.gif" border=0> <BR> <BR>ich greif das nach meiner ebenfalls Entschuldigung in einem Artikel vor einer Minute gepostet noch mal auf. Ich hätte da nämlich auch mal ein echtes Problem&#40;chen&#41; mit dem 8053x. und da könnte ich mal Hilfe gebrauchen, z.B. von Dir. <BR> <BR>Folgendes: Ich hab mir das Buch NILI-Pascal auf 80xxx gekauft. Wie Du / ihr wohl mitbekommen habt betreibe ich 68000er Systeme mit KAT-CE Pascal, respektive eben Pascal in allen Variationen auf so ziemlich allen CPUs. Ich hab den Nili-Compiler noch nicht mal angepackt, und ringe auch schon &uuml;ber ein Jahr mit der Batronix Geschichte; aber das w&uuml;rde ich eher als add-on sehen; Wenn´s nicht muss verzichte ich gerne auf Assembler; meist läuft das ohnehin auf einen Mix heraus zwischen Hochsprache und paar kritischen Routinen. <BR>Kritisch wird das NILI-Buch bereits beim Nachbau; da geht´s schon los mit 12MHz Patch wegen 11,934711 Quartz etc.pp. Dann liebäugel ich halt mit einer Dallas CPU - kriege dann noch vom Peter 130 MIPS Info - - - und und ??? <BR>Also die Verwirrung ist perfekt &#40;fast&#41;. <BR> <BR>Jetzt hab ich noch folgende Idee: Ich schick Dir das Buch mal, und Du sagst mal was dazu; weil ich bräuchte f&uuml;r das Projekt eh eine vorprogrammierte CPU mit dem Runtime drin; der ist dabei auf Diskette, und ich hab auch einen GALEPII, der das angeblich kann, also das Binary in einen 80weissmittlerweilenichtmehrwelchenichnehmensoll usw. hereinschiessen könnte. <BR>Mail mir doch bitte mal - oder halt jemand anderes, der ein bisschen Zeit und Bock auf sowas hätte. Platine wäre kein Ding, auch das irgendwie umzustricken oder halt ein schönes Bastelteil draus zu machen. <BR>Also wer Lust hat: <a href="mailto:A.Seck@t-online.de">A.Seck@t-online.de</a>, ggf. Du Thedy; dann &#34;missverstehen&#34; wir uns vielleicht ein bisschen besser...<img src="http://progshop.com/elektronik/diskussion/clipart/smile.gif" border=0>

Import-Script
07.11.2003, 00:33
@Axel <BR> <BR>Und ich frage jetzt mal saudoof:&#34;Wozu, warum und weswegen soll, muss oder will man diese Zahlen drehen? <BR> <BR>Ja, das ist eine echte Frage und ich w&uuml;rde mich &uuml;ber eine Antwort freuen, auch von anderen Leuten wenn die eine haben. Kann ja sein dass ich nur blöd bin?! <BR> <BR>Gruß Winnie

Import-Script
07.11.2003, 13:55
@Winnie: Ich hab eine Anwendung ganz konkret. Auslesen von Multiplex-Displays &#40;Digitaluhr z.B.&#41;, also per Port an die gemeinsamen Segmente ran und dann je nach aktivierter Anode die Ziffer passend einsortieren. Die machen idR. folgendes, um das Auge ein wenig zu täuschen bzw. den Neon-Effekt zu minimieren. Die Ziffern werden im Zeitmultiplex nicht in 100er 10er 1er nacheinander ausgegeben, sondern 1,100,10,1,100,10 usw. damit da kein Lauflichteffekt entsteht; eben dieser Neon-Effekt, weil Neonröhren ja praktisch wie eine Stroboskoplampe wirken und das Ding anblitzen. Dann liest Du und sortierst dann halt um.

Import-Script
07.11.2003, 15:29
Hallo, <BR> <BR>zja ich will die Zahlen eigentlich nicht drehen ! <BR>hab nur auf meinem 89C2051 ein super Problem das ich mir jetzt versuche &uuml;ber Umwege vom Hals zu schaffen. <BR>Ich hab folgende Tests mal durchgespielt. <BR> <BR>Ich hab ein Dallas Temperatussensor dem seine Werte ich &uuml;ber ein LCD mit dem HD44780 Chip ausgebe. <BR> <BR>Ich lade also wie oben schon einige mal erwähnt in das A Register z.B. #22, ins B Register #10 nach der DIV sollte eigentlich in A=2 stehen und in B=2. Da das Display mit 00000010 nix anfangen kann mach ich die ASCI Anpassung. Ich addiere also zu den beiden Werten oben jeweils 00110000. Jetzt sollte das Display also zwei 2 ausgeben. Es gibt aber 0 und 2 aus. <BR>Jetzt kommt aber der Clou. Schreib ich in A eine Zahl kleiner 20 oder größer 20 stimmt das Ergebnis auf dem LCD !!!!!???? <BR> <BR>Also Compiler benutze ich auch das Progstudio. Hab schon 4 verschiedene Microcontroller ausprobiert. Überall das Gleiche !!! <BR> <BR>Wenn jemand interesse hat das Programm mal durch zu schauen sind drei txt-Files schicke sie gerne per Mail zu. <BR> <BR>Gruß Axel.

Import-Script
07.11.2003, 15:41
Warum ne ASCII-Anpassung? Wenn du ne 2 rausschickst &#40;dezimal, so wie es bei dir zu sein scheint&#41;, dann wird automatisch der passende ASCII-Wert rausgeschickt, also 0x32h &#40;??&#41;. <BR>Da brauchst du keine 0x30h mehr dazuaddieren. <BR> <BR>Gruß, ERDI - Soft.

Import-Script
07.11.2003, 15:48
ne oder ??? <BR> <BR>wenn ich bei mir ne 00000010 im register stehen hab und schau auf meine Tabelle vom LCD dann entspricht das nicht na zwei. Ne zwei ist 00110010. Deswegen addier ich immer noch die 00110000 damit ich auf die Werte von der Tabelle komme !

Import-Script
07.11.2003, 16:09
Hm, hast wohl recht. Muß bei mir daheim nochmal nachschauen, wie ich das auf dem AVR mache. Da addiere ich nämlich keine 0x30h, trotzdem kommt die richtige Zahl auf dem Display.

Import-Script
07.11.2003, 21:16
Hi Axel <BR>haste denn in Progstudio die Deutung der Zahlen als Dezimal oder Hex Zahlen eingestellt. Setze notfalls immer ein h dahinter, wenn du eine Hex- Zahl verwendest. Oder vor der Zahl ein %-Zeichen,wenn dezimal sein soll. Hatte ich auch schon oft und hat mich fast in die Verzweiflung getrieben!

Import-Script
09.11.2003, 17:01
Axel, <BR> <BR>Nibbles im Akku vertauschen: <BR>SWAP A <BR> <BR><img src="http://progshop.com/elektronik/diskussion/clipart/happy.gif" border=0>

Import-Script
10.11.2003, 10:39
Hallo, <BR> <BR>bin jetzt zum Entschluss gekommen das das Display kaputt sein muss. Hab noch mal nur einzelne Zahlen aufs Display geschoben und es kommt nur Mist raus. <BR> <BR>@schon: <BR> <BR>wenn ich ein SWAP A mache bringt das meiner Meinung nach nicht wirklich was ! Ich vertausche ja nur die ersten 4 Bit mit den letzten 4 Bit also aus: 00110001 mach ich dann 00010011 oder stimmt das nicht ??? <BR> <BR>@Holger: <BR> <BR>hab im Progstudio zwar nix festgelegt wenn ich aber zahlen in den Akku schreibe mach ich das meistens in der Form #30h oder #00110011b. Ds sollte ja eigentlich zur definition f&uuml;r den Compiler reichen ! :-&#41; <BR> <BR>Gruß Euro.

Import-Script
13.11.2003, 17:10
Hallo, <BR> <BR>um den Thread sauber zu beenden ! :-&#41; <BR>das Display war kaputt. Hab gestern ein neues bekommen rangehängt und es hat alles funktioniert :-&#41; Scheibenkleister ! 1 Woche nem Fehler im Programm nachgelaufen dabei war das LCD hin&uuml;ber ! <BR> <BR>Also danke f&uuml;r die große Unterst&uuml;tzung. <BR> <BR>Hab schon wieder was neues ! :-&#41; <BR> <BR>Gruß Axel.