Hallo ... ich habe bitte eine Frage was die beiden Befehle angeht ... ich weiss dass ANL bewirkt eine UND Verknüpfung und Swap die LB mit HB tauscht ... aber kann mir bitte jemand sagen, wozu ich ANL und Swap brauche in einer Beispiel !? vielen Dank im Voraus ...
:
Gesperrt durch User
Hallo, Ein Swap vertauscht das Obere mit den Oberen 'Nibble' Unteres Nibble = Bit 0 - 3 Oberes Nibble = Bit 4 - 7 [ Bei 8 Bit ] Das brauch man wenn man man zum Beispiel wenn man ein 8 Bit Datenwort in 4 Byte Paketen verschicken möchte und man auf der anderen Seite einen FIFO Puffer hat. Als erstes die Unteren 4 Bit und dann die Oberen 4 Bit...und werden dann zusammen zu den alten 8 Bit Datenwort verpackt.
Also die Akademie für Naturschutz und Landschaftspflege (kurz ANL) kümmert sich dem Namen nach um Naturschutz und Landschaftspflege. Dabei werden sicherlich auch Pflanzen umgesetzt und ausgestauscht. (SWAP). Ich hoffe das klär Deine Frage abschliessend.
Scheint 8051 zu sein, aber die Grundbefehle (wenn auch etwas anderst geschrieben) hat jeder µC. Daher könnte auch AVR helfen: http://www.avr-asm-tutorial.net/avr_de/beginner/index.html Hier swap bzw. and anklicken. avr
Hallo .. ja 8051... aber, kannst Du mir die Mathe dahinter erklären? wozu brauche ich SWAP bzw ANL ? mathematisch gesehen !?
Kannst Du bitte die Frage neu formulieren? Das Problem ist, das Du wegen "And" etwa fragst, was denn die Mathematik hinter der Addition ist. Das kann man sicherlich erklären, aber willst Du das wirklich? Es ist entweder trivial oder nur für Zahlentheoretiker interessant. Das mit dem Swap merk Dir einfach. Wenn Du den Wunsch hast in einem Byte die niblles zu tauschen, dann denk wieder dran.
Hi Kuckuck .. ok ... das Problem ist folgendes : ich will 16 Werte der Länge 16Bit in 8051 Addieren und den Mittelwert ausgeben ... das geht leider nicht (Länge>8) also muss man HB zusammen addieren und die LB zusammen addieren .... es taucht in der Lösung aber SWAP und dann ANL ... ich verstehe nicht genau was da gemacht wurde, aber ich wäre jetzt dankbar wenn jemand mir sagt wie ich 2 Werte der Länge 16Bit addiere und den Mittelwert ausrechne ... Das Problem ist immer dass die Länge der summierten Werte grösser 8Bit ist .. also wie geht das? und wird wirklich hier die Befehle irgendwie benutzt ?
Swap ist hilfreich, wenn man z.B als Inhalt eines 8-Bit Registers zwei 4-bit-Zahlen hat und diese beiden Zahlen nacheinander in 4-bit-Form ausgeben möchte: in r16,tcnt0 ;Zählerstand nach r16 einlesen andi r16,0x0F ;obere vier bit löschen ( Maskieren) out portb,r16 ;auf den unteren vier bit von portb wird die untere Ziffer ausgegeben (0..F) in r16,tcnt0 ;Zählerstand nochmals lesen andi r16,0xf0 ;untere vier bit löschen swap r16 ;obere zu untere bits machen out portb,r16 ;auf den unteren vier bit von portb wird die obere Ziffer ausgegeben (0..F Meistens braucht man swap, um mehrstellige BCD-Zahlen, bei denen ja jede Ziffer aus vier bit besteht, in 8- oder 16-bit-Registern unterzubringen
Danke Peter ... tooles Beispiel ... nur noch ein ANL Beispiel ;) danke
Also ehrlich. Ich mag ja auch helfen, aber immer gegen Strich striegeln, nervt. >das geht leider nicht (Länge>8) also muss man HB zusammen addieren und >die LB zusammen addieren .... HB gibts nicht mehr. Die Werbung mit dem in die Luft gehenden Männchen habe ich auch schon eine Weile nicht mehr gesehen. LB? Was hat die Landesbank damit zu tun? Welchen Landes? Die Glaskugel ächzt, meint aber, das "HB" wohl das High-Byte sein soll und "LB" das Low-Byte. Ist das so? Und wenn ja, warum schreibst Du das nicht? Ist die die Antwort sowenig wert, das es sich nicht gelohnt hätte, 13 Zeichen mehr zu tippen? Oder ist das ein Versuch, den Slang nachzuahmen? Kenne das. War sehr faszinierend, dann auch Witze darin zu machen. Als Anfänger aber kannst Du Profis nicht mit Slang kommen. Meine Glaskugel ist leider nicht in der Lage Deinen Quellcode zu reproduzieren. Wahrscheinlich ist die Batterie etwas schwächlich. Könntest Du mir da BITTE aushelfen. Das wäre sehr nett.
Dann schreib doch gleich was du willst. Oder noch besser poste den Code den du nicht verstehst. Wenn du 16 Werte hast und den Mittelwert brauchst addierst du alle auf ( ergibt einen Wert mit 20 Bit). Den teilst du dann durch 16. Das Teilen durch Potenzen von 2 ist mit Schieben realisierbar. Geteilt durch 2 = 2^1 -> 1 x ROR Geteilt durch 4 = 2^2 -> 2 x ROR etc. Mit Swap werden die oberen 4 Bit zu den unteren 4 Bit so als ob sie geschoben wurden. Die oberen enthalten jetz jedoch Werte die nicht gebraucht werden. Diese kann man durch ein ANL 0x0f löschen. So oder ähnlich wir in deinem fall wohl die Berechnung aussehen. (8051 in Assembler ist schon etwas her ;)) avr
Im Addieren von 16 Werten steckt die Multiplikation mit 16. Für den Mittelwert aus 16 muss man nach der Addition durch 16 dividieren. Dem entspricht ein Verschieben um vier Stellen nch rechts. Wenn man nicht viermal die 24-bit-Kette des Resultats um eine Stelle nach rechts verschieben will, kann man vier-bit-weise umgruppieren, da ist dann swap eine Hilfe. Mit ldi r17,0x0f und anschließendem anl r16,r17 kann man eine vier-Bit-Gruppe in r16 isolieren. (ich geb das ganze in avr-code an, den 8051-code müsste ich nachschlagen, aber das ist mir im Moment zu viel)
@ Kuckuck : DU NERVST ...ok!? ich habe nicht versucht den Slang nachzuahmen !!! ich dachte wenn man mit Profis zu tun hat, dann verstehen sie auf jeden Fall was gemeint ist... oder soll ich jedes Mal Spannung,Strom, Widerstand schreibe, wo ich einfach nur U,I, oder R schreiben kann !!! um ehrlich zu sein deine Hilfe hat nichts gebracht, einfach nur labern, tut mir leid hilft ja auch nicht, also Gute Nacht ... aber trotzdem vielen Dank für deine Zeit und tut mir Leid dass ich deine Gedanken belastet habe ... @AVR danke ... ich wollte nur im allg. verstehen was ANL & Swap bewirken ...nicht nur in einem speziell Fall, aber danke für das Beispiel ... @Peter DANKE DANKE DANKE -- das ist genau was ich brauchte ...
>@ Kuckuck : DU NERVST ...ok!?
Das war Absicht. Hoffentlich läßt Du Dich hier nicht wieder blicken.
>Das Forum gehört dir nicht Du Idiot
Niedlich. Soll das Computerslang sein?
>Ach geh schlafen alte Oma ... >was willst Du hier noch ... Interessant, das es immer die selben Sprüche sind, wenn den unterbelichteten Script-Kiddies nichts mehr einfällt.
hahahahaha ... hast Du das schon Mal gehört ? und es liegt an uns !? hahahahaahahahahaha .. Du arme Seele ... Es ist nicht verboten dass man frägt wenn man lernen will ... es ist nur eine Schande wenn man solche Leute wie Du treffen muss... Schande ...