Hallo, könnt ihr mir helfen? Wie negiert man? also von 0000 0001 zu 1111 1110 zum Beispiel. "NEG" geht nicht bei mir in Assembler ? Hat mir jemand ne inc datei dafür oder kann mir helfen wie ich negiere?
- Man muss zuerst wissen welchen uC man verwendet. - zu diesem uC gibt es Datenblätter. - in einem dieser Datenblätter sind die Assembler Befehle aufegführt - mit einem der aufgeführten Assember Befehle kann man negieren => Ganz einfach!
Lass mich raten: Es ist ein AT89C5131 Suchst du den Befehl "CPL? BTW: Unter negieren versteht man normalerweise das 2er-Komplement.
:
Bearbeitet durch User
Max H. schrieb: > Lass mich raten: Es ist ein AT89C5131 > Suchst du den Befehl "CPL? > > BTW: Unter negieren versteht man normalerweise das 2er-Komplement. Jap, ist genau dieser.
123abc schrieb: > - zu diesem uC gibt es Datenblätter. > - in einem dieser Datenblätter sind die Assembler Befehle aufegführt Was haben die als Mnemonic für den Assembler verwendeten Buchstabenkombinationen mit dem Datenblatt des µC zu tun? Da kann jeder Assembler, i.e. das Programm, dass die Umsetzung von Buchstabenkürzeln in Hex-Code macht, sein eigenen Süppchen kochen. Wenn im Datenblatt Mnemonics auftauchen, ist das genauso wie mit Beispielschaltplänen in anderen IC-Datenblättern: Es sind Vorschläge, um die Phantasie der Entwickler zu inspirieren oder um der Phantasielosigkeit anderer Anwender auf die Sprünge zu Helfen. Es bleiben Vorschläge, was man machen könnte, aber zwingend ist da überhaupt nichts.
456def schrieb: > 123abc schrieb: >> - zu diesem uC gibt es Datenblätter. >> - in einem dieser Datenblätter sind die Assembler Befehle aufegführt > > Was haben die als Mnemonic für den Assembler verwendeten > Buchstabenkombinationen mit dem Datenblatt des µC zu tun? Da kann jeder > Assembler, i.e. das Programm, dass die Umsetzung von Buchstabenkürzeln > in Hex-Code macht, sein eigenen Süppchen kochen. Im Prinzip richtig. Nur hat jeder µC-Hersteller auch seinen eigenen Leib und Magen Assembler, an dem sich dann auch andere Hersteller meistens orientieren, wenn sie für einen bestimmten µC einen Assembler schreiben. Benutzt man von vorne herein, den Assembler des µC-Herstellers dann gelten auch seine Unterlagen. Benutzt man einen anderen, dann gelten eben die Unterlage dieses Herstellers. Die Grundaussage ist aber nach wie vor dieselbe: Das alles ist irgendwo dokumentiert und um das Studium dieser Doku kommt man nicht herum. Selbst wenn das einen überhaupt nicht freut.
Danke, funktioniert glaube ich :) Nun ne andere Frage: habe eine 3x4 Matrix tastatur angeschlossen in Reihe 1 kommen nun als Dezimal: "1"er in Reihe 2: "2"er in Reihe 3: "4"er in Reihe 4: "8er" Wie löse ich es das die Tasten kommen? (0,1,2,3,4,5,6,7,8,9,*,0,#)
Max H. schrieb: > Unter negieren versteht man normalerweise das 2er-Komplement. Ich habe schon immer geahnt, dass ich unnormal bin. Ich verstehe unter Negieren das Einer-Komplement. NOT(0) = 1 NOT(1) = 0 NOT(01001111) = 10110000 Das Zweierkomplement ist im Gegensatz dazu eben das Zweierkomplement.
Possetitjel schrieb: > Ich habe schon immer geahnt, dass ich unnormal bin. Ich > verstehe unter Negieren das Einer-Komplement. Richtig erkannt. Beim AVR und beim PIC(18 & 24) ist es z.B. so dass der ASM-Befehl fürs 2er-Komplement NEG bzw. NEGF und der fürs 1er-Komplement COM bzw. COMF heißt. "NEG" steht zumindest beim PIC für negate (engl. für negieren).
Hallo Leute,
bevor ihr euch jetzt noch verhaut, sollten wir die Begriffe klären.
Max hat völlig recht, wenn er sagt:
> Unter negieren versteht man normalerweise das 2er-Komplement.
Mit negieren macht man aus positiven Zahlen Negative und umgekehrt, dazu
verwendet man das 2er-Komplement (X NICHT +1). Z.B: 1=0000001 ->
-1=11111111.
So wie ich das sehe will Julian aber invertieren, also einfach jede "0"
zu "1" und jede "1" zu "0" (00000001 -> 11111110). Dazu verwendet man
das 1er-Komplement (X NICHT).
Max H. schrieb: > Beim AVR und beim PIC(18 & 24) ist es z.B. so dass der > ASM-Befehl fürs 2er-Komplement NEG bzw. NEGF und der > fürs 1er-Komplement COM bzw. COMF heißt. Ahh. Ja. Das ist absolut logisch. Wenn wir das (Zweier-)Komplement berechnen, nennen wir den Befehl "NEG". Wenn wir bitweise negieren, heißt der Befehl konsequenterweise "COM" (wie "complement"). Tut mir leid, dass ich daran gezweifelt habe. > "NEG" steht zumindest beim PIC für negate (engl. für negieren). Und berechnet wird selbstverständlich das (Zweier-)Komplement, nicht wahr? Die Sprachverschandler sind überall. Dass der USB gar kein Bus ist, obwohl er so heißt, war erst der Auftakt... Wobei... das ging schon früher los, fällt mir gerade ein. Legendär ist ja der "integrierte Coprozessor". Nunja.
TomA schrieb: > Max hat völlig recht, wenn er sagt: > >> Unter negieren versteht man normalerweise das 2er-Komplement. Nein, hat er nicht. > Mit negieren macht man aus positiven Zahlen Negative und umgekehrt, Nein. Mit negieren macht man aus "Falsch" --> "Wahr" bzw. aus "Wahr" --> "Falsch". Die Negation ist eine Operation auf Wahrheitswerten bzw. Binärzahlen; sie kann in offensichtlicher Weise auf Binärvektoren verallgemeinert werden. > dazu verwendet man das 2er-Komplement (X NICHT +1). > Z.B: 1=0000001 -> -1=11111111. Die Negation ist die Negation (das Einerkomplement). Das Zweierkomplement ist das Zweierkomplement. Zumindest ist und bleibt das in meinem Universum so; und die Wikipedia ist damit kompatibel. Das langt mir; ich muss euch nicht überzeugen.
Possetitjel schrieb: >> "NEG" steht zumindest beim PIC für negate (engl. für negieren). > > Und berechnet wird selbstverständlich das (Zweier-)Komplement, > nicht wahr? Korrekt :-) Wenn's um einzelne bits geht verwende ich auch gerne "negiert" für das log. NOT, weil es da zu keine Missverständnisse führt. Wenn's aber um Zahlen/Register in der ASM-Ebene geht, steht "negate", wie ich ober gezeigt habe, für das 2er-Komplement, das 1er-Komplement wird mit "complement" bezeichnet. Possetitjel schrieb: > und die > Wikipedia ist damit kompatibel Hast du Beispiele? Possetitjel schrieb: > Das langt mir; ich muss euch > nicht überzeugen. Na gut, wenn das in deinem Universum anders ist, dann passt schon. Man sollte ich aber un verwechlungsgefahr zu verhinder auf eine Ausbrucksweise eingien die in diesem Universum verwendet wird.
:
Bearbeitet durch User
@ Possetitjel: Seltsames Universum, dein Universum. Ist aber nicht mein Problem und ich mache es auch nicht zu meinem Problem. Ich hoffe Julian hilft es etwas weiter. Bei MCS51 heist der Befehl zum invertieren "CPL A" und invertiert die einzelnen Bit einer im Akku befindlichen Binärzahl. Dabei steht "CPL" für Complement und meint das 1er-Komplement.
Julian Schnee schrieb: > Danke, funktioniert glaube ich :) > > Nun ne andere Frage: > > habe eine 3x4 Matrix tastatur angeschlossen > > in Reihe 1 kommen nun als Dezimal: "1"er > > in Reihe 2: "2"er > > in Reihe 3: "4"er > > in Reihe 4: "8er" > > Wie löse ich es das die Tasten kommen? > > (0,1,2,3,4,5,6,7,8,9,*,0,#) Zurück zur frage: Wir haben das einlesen eine Matrixtastatur in der Schule ungefähr so gelöst: Wir haben die Tasten einzeln nacheinander abgefragt und nebenbei nach jeder Taste den Akkumulator inkrementiert. Sobald eine Taste gedrückt war sind wir aus der Subroutine zurückgesprungen. Im Akku stand dann die Zahl die der gedrückten Taste entspricht. Wenn keine gedrückt war haben wir nach dem Return 0xFF in den Akku geschrieben.
Mh, also alle Tasten gehen. Problem ist nur ich muss die Spalten nur irgendwie unterscheiden können? Kann ich irgendwie initialisieren dass, da wo Spalte1 & Reihe1 angeschlossen sind, wenn da ein Spannungswechsel vorliegt (Spannungswechsel alles geklärt) dass ich dies irgendwie auf Dez:1 ; 0000 0001b setzen kann? So dann alle Tasten durch, dann wäre weiteres ein Kinderspiel. Würde sowas gehen? zB so (ist halt kein assembler sondern ne idee) if(p2.0 && p1.0 == 1) { mov a,#0000 0001b } sowas in der ART? Gruß :)
Max H. schrieb: > Wenn's um einzelne bits geht verwende ich auch gerne > "negiert" für das log. NOT, Naja, von den theoretischen Grundlagen her fußt die ganze Computerei ja auf der mathematischen Logik. UND, ODER, NICHT ist halt die Grundlage; ob ich die Operationen auf logische Variablen (die einen Wahrheitswert haben), auf einzelne Bits oder auf Binärvektoren ("Register") anwende, ist erstmal egal. > wenn's aber um Zahlen/Register in der ASM-Ebene geht, steht > negieren, wie ich ober gezeigt habe, für das 2er-Komplement, > das 1er-Komplement wird mit "complement" bezeichnet. Ich habe es eben für den Z80-Assembler geprüft, weil ich der Meinung war, es sei dort anders. Zu meinem namenlosen Entsetzen gilt dort jedoch auch: CPL -- Einerkomplement (=bitweise Negation), NEG -- Zweierkomplement. Völlig krank. Ich sage ja: Die Sprachverschandler sitzen überall. Warum - bitte - muss man einen Befehl, der bitweise negiert, "CPL" nennen? Und warum heißt ein Befehl, der das Zweierkomplement bestimmt, "NEG"? Aber schön... Du hast ja nicht behauptet, dass es vernünftig ist, sondern nur, es sei üblich. Ich gestehe also zu: Offenbar ist es tatsächlich üblich. Die Amis nennen die Operation, die das Komplement berechnet, "Negation", und die, die die Negation berechnet, "Complement". Ich nehme es zur Kenntnis. Verstehen muss ich's ja nicht. >> Wikipedia ist damit kompatibel > Hast du Beispiele? Nein... das war ein Irrtum: Einer- und Zweierkomplement werden dort korrekt erklärt (aber das war ja nicht unser Diskussionspunkt). Der Begriff "Negation" taucht überhaupt nicht auf. Und im Artikel "Negation" tauchen die Computer nicht auf. Ein Schelm, wer Arges dabei denkt.... :)
TomA schrieb: > Seltsames Universum, dein Universum Ein Universum, in dem der Befehl für das Komplement "CPL" heißt und der Befehl für die Negation "NEG" ist seltsam? Das ist wohl zu einfach und eines Assemblerprogrammierers nicht würdig, oder wie?
Hallo Julian, ich weiß nicht wie deine Tasten verschaltet sind, ist aber auch nicht wichtig. Ich würde mir, im Programmspeicher, eine Tabelle mit den Tastencodes anlegen und aus Spalte und Zeile einen Offset auf den entsprechenden Code in der Tabelle erzeugen. Funktioniert mit DPTR als Zeiger auf die Tabelle und Akku als Offset (Befehl: MOVC A,@A+DPTR). Damit kannst du auf einfache Weise jeder Position der Tastatur einen beliebigen Code zuordnen und diesen, falls nötig, schnell ändern. Aber nicht vergessen die Tasten zu entprellen! Gruß. Tom
Julian Schnee schrieb: > Problem ist nur ich muss die Spalten nur irgendwie unterscheiden können? Das macht man normalerweise so: Man aktiviert nur eine Spalte und fragt alle Tasten dieser Spalte ab, dann deaktiviert man sie wieder, aktiviert die Nächste fragt die Tasten diese Spalte ab und so weiter. Hast du vllt. einen Schaltplan dann kann man gewisse Sachen besser erklären... Possetitjel schrieb: > CPL -- Einerkomplement (=bitweise Negation), > NEG -- Zweierkomplement. Korrekt Wieso muss man darüber eigentlich diskutieren? In der ASM-Welt steht CPL/COM fürs 1er- und NEG fürs 2er-Komplement, ob's dir gefällt oder nicht. Wenn jeder anfange würde die Begriffe neu zu definieren, wäre eine Kommunikation nur erschwert möglich...
:
Bearbeitet durch User
Max H. schrieb: > Possetitjel schrieb: >> CPL -- Einerkomplement (=bitweise Negation), >> NEG -- Zweierkomplement. > Korrekt, Offenbar üblich, aber sprachlicher Schwachsinn. > und wenn du die Begriffe Stop. "CPL" und "NEG" sind keine Begriffe, sondern Assemblermnemonics. > für dich anders Definierst Tue ich nicht. Dass man Binärvariablen negieren kann, ist ja wohl unstrittig. Dass man Binärvektoren ("Register") komponentenweise (sprich: bitweise) negieren kann, ist wohl auch unstrittig, oder? Warum es üblich ist, die bitweise Negation eines Binärvektors mit "CPL" abzukürzen, die Berechnung des Zweierkomplementes aber mit "NEG", erschließt sich mir nicht. Ich habe nun gelernt, dass diese Zuordnung üblich ist. Du gestattest mir aber bitte, meine Meinung über diese Üblichkeit zu äußern. Diese lautet: Völlig blödsinnig. > als die meisten Menschen Findest Du es nicht etwas mutig, das tapfere Häuflein der Assemblerprogrammierer als "die meisten Menschen" zu bezeichnen? Davon abgesehen: Ich bin noch nie missverstanden worden, wenn ich von Komplement oder Negation gesprochen habe; deswegen bin ich nicht auf die Idee gekommen, die Mnemonics könnten exakt entgegengesetzt zugeordnet sein.
Mein Kollege sagt immer: A steht für Assembler und Affen. C für Champagner und Chopin. a = b ^ 0xff; So, die Schlacht ist eröffnet ;-)
Possetitjel schrieb: > "CPL" und "NEG" sind keine Begriffe Ok, dann "Complement" und "Negaten" > Findest Du es nicht etwas mutig, das tapfere Häuflein > der Assemblerprogrammierer als "die meisten Menschen" > zu bezeichnen? Ok, dann die meinsten Menschen die sich mit diesem Thema beschäftigen. > Warum es üblich ist, die bitweise Negation eines Binärvektors > mit "CPL" abzukürzen, die Berechnung des Zweierkomplementes > aber mit "NEG", erschließt sich mir nicht. Schon mal auf die Idee gekommen, das Negieren etwas mit Negativ zu tun habe könnten (das 2er-Komplement macht aus einer positiven eine negative Zahl). Wenn nur Complement steht kann man nicht wissen ob das 1er- oder das 2er-Komplement gemeint ist, das wurde nun mal so festgelegt. Anscheinend gehörst du nicht zu dem ASM-Programmierern da du bis heute nicht gemerkt hast, dass das Mnemonic für das 2er-Komplement NEG und das für das 1er CPL ist > Meinung über diese Üblichkeit > zu äußern. Diese lautet: Völlig blödsinnig. Da sind wir anscheinen anderer Meinung, ich finde es gut so wie es ist.
Easylife schrieb: > Mein Kollege sagt immer: > A steht für Assembler und Affen. > C für Champagner und Chopin. Wow, in einem Wörterbuch findet man zu jedem Buchstaben noch viieel mehr Wörter... Wenn du gut suchst findest du vllt. ein Paar die noch weniger miteinander zu tun haben.
:
Bearbeitet durch User
Könnte mir bitte jemand ausführlich erklären wie es bei einer 3x4 Tastatur sein muss oder sein Code einfügen? Wäre super zB p2.0, p2.1 p2.2 die spalten p1.0 p1.1 p1.2 p1.3 die reihen setzte alles auf high außer die eine spalte+reihe clr p2.3 bis p2.6 (low setzen) setb p2.1 setb p2.2 clr p2.0 clr p1.0 bis p1.3 JB p1.0, sichern dass dan für jede taste. würde es so gehen oder wie ?
Eine Tasten Matrix fragt man in etwa so ab: Alle Spalten als Eingang Alle Zeilen außer zeile 0 auf 1 An den Spalten alle Taster von Zeile 0 einlesen Alle Zeilen außer Zeile 1 auf 1 An dem Spalten alle Tasten der 2. Zeile einlesen ...
:
Bearbeitet durch User
Vorbemerkung: Bitte unterlasse das ständige nachträgliche Ändern Deiner Beiträge. Max H. schrieb: > Possetitjel schrieb: >> CPL -- Einerkomplement (=bitweise Negation), >> NEG -- Zweierkomplement. > Korrekt > Wieso muss man darüber eigentlich diskutieren? Man muss nicht. Ich tue es aber, und Du tust es auch. > In der ASM-Welt steht CPL/COM fürs 1er- und NEG > fürs 2er-Komplement, Ist wohl so. Außerhalb der engen ASM-Welt steht die Negation eines Binärvektors ("Register") für das Einerkomplement. Das Einerkomplement ist ja gerade als bitweise Negation definiert. Muss ich für die Berechnung des Einerkomplementes erst Quellen bringen, oder sind wir uns da einig? Und eben weil das Einerkomplement als bitweise Negation definiert ist, verwenden die Bewohner der ASM-Welt die Abkürzung "NEG" für - TUSCH! - das Zweierkomplement. Alles klar. Keine weiteren Fragen. > Wenn jeder anfange würde die Begriffe neu zu definieren, Jetzt halt aber die Luft an. Warum muss man von einer "Instanz" reden, wenn man ein Exemplar meint? Warum muss man von einer "Statemachine" reden, wenn ein simpler endlicher Automat gemeint ist?
Max H. schrieb: >> Warum es üblich ist, die bitweise Negation eines Binärvektors >> mit "CPL" abzukürzen, die Berechnung des Zweierkomplementes >> aber mit "NEG", erschließt sich mir nicht. > > Schon mal auf die Idee gekommen, das Negieren etwas mit Negativ > zu tun habe könnten (das 2er-Komplement macht aus einer positiven > eine negative Zahl). Ja, schon mal auf die Idee gekommen. Vorhin. Ich denke, dass das die Erklärung ist. Ich finde das nach wie vor unschön, denn AND oder XOR sind ja auch bitweise definiert, also warum gilt das für NOT (=NEG) nicht? > Wenn nur Complement steht kann man nicht wissen ob das 1er- oder > das 2er-Komplement gemeint ist, Naja, ich kenne das eben anders: Da das Einerkomplement gerade die bitweise Negation ist, braucht man den Begriff "Einerkomplement" nicht. (Ich habe den Begriff "Einerkomplement" tatsächlich sehr viel später kennengelernt als das "Zweierkomplement".) Das "Komplement" ist (in dieser Sichtweise) das Zweierkomplement, und die Negation ist die Negation. Wozu zwei Begriffe für dieselbe Sache? > das wurde nun mal so festgelegt. Nee. Sprache wird von den Sprechenden geschaffen. Hier wird versucht, die Konventionen der amerikanischen Assemblerprogrammierer zum verbindlichen Standard für die Allgemeinheit zu erklären. Das stört mich. > Anscheinend gehörst du nicht zu dem ASM-Programmierern Sicher. Weil ich keinerlei Ahnung von Assembler habe, habe ich Dir bestätigt, dass es beim Z80-Assembler auch so ist, wie Du behauptet hast. Du weißt doch, was ein Z80 ist, oder? > da du bis heute nicht gemerkt hast, dass das Mnemonic für > das 2er-Komplement NEG und das für das 1er CPL ist Dass ich diese Befehle einfach nicht benötigt habe, ist unmöglich, ja? >> Meinung über diese Üblichkeit zu äußern. Diese lautet: >> Völlig blödsinnig. > Da sind wir anscheinen anderer Meinung, ich finde es gut so > wie es ist. Zugestanden. Ist a) Gewohnheit und b) Deine Privatsache. Ich finde es zum Kotzen. Das ist a) Gewohnheit und b) meine Privatsache.
Schon auf die Idee gekommen dass sich das negieren aufs Vorzeichen und nicht auf die einzelnen bits bezieht? Man spricht ja auch vom negieren der Zahl/des Registers und nich vom bitweisen negieren... Sehen wir das ganze mal als Zahl: Wie würdest du auf die Frage "Negiere -17" antworten: [ ] 17 [ ] 16 Possetitjel schrieb: > Zugestanden. Ist a) Gewohnheit und b) Deine Privatsache. Ich finde es > zum Kotzen. Das ist a) Gewohnheit und b) meine Privatsache. c) Konvention, zumindest in der ASM Welt.
:
Bearbeitet durch User
Possetitjel schrieb: > Zugestanden. Ist a) Gewohnheit und b) Deine Privatsache. > Ich finde es zum Kotzen. Das ist a) Gewohnheit und b) meine > Privatsache. Dann mal Butter bei die Fische. Welches Assembler Memnonic schlägst du denn für das 2-er Komplement vor? es ist eine Sache etwas zum Kotzen zu finden. Es ist aber eine ganz andere Sache, ein Kürzel zu finden, welches genau den gewünschten Sachverhalt unmissverständlich ausdrückt. Ein "Branch if Zero" nach einem "Compare" ist genauso unintuitiv für "Sprung wenn gleich", solange man nicht weiß, dass ein Compare nichts anderes als eine Subtraktion ist, von der nur die Flags übrig bleiben. Im übrigen: kannst du den Schwachsinn jetzt bitte gut sein lassen. Das bringt niemanden weiter. Die beiden Kürzel NEG und CPL werden ganz einfach so verwendet wie sie es werden. Da muss man jetzt keine Staatsaffäre draus machen. > Hier wird versucht, die Konventionen der amerikanischen > Assemblerprogrammierer zum verbindlichen Standard für die > Allgemeinheit zu erklären. Das stört mich. Wer etwas baut hat nun mal Namensrecht. Warum haben die meisten Sterne die Eigennamen haben, arabische Namen? Weil es die Araber waren, die sie ihnen gegeben haben und damals eine blühende astronomische Kultur hatten, während sich der Rest der bekannten Welt die Schädel eingeschlagen hat. Es gibt quer durch alle Fachbereiche immer eine Fachsprache. Du kannst die natürlich ignorieren und deine eigene schaffen. Aber dann mach das bitte in deinem Universum. Da ist es dann dem Rest der Welt egal, ob sie dich verstehen oder ob du durch die Verwendung deiner eigenen Sprache Verwirrung schaffst.
:
Bearbeitet durch User
Julian Schnee schrieb: > Wie löse ich es das die Tasten kommen? Indem Du die Frage nicht ständig neu stellst, sondern endlich mal die vielen bereits gegebenen Erklärungen liest. Und wenn Dir dabei etwas unklar ist, dann frage dazu konkret.
Karl Heinz schrieb: > Die beiden Kürzel NEG und CPL werden ganz > einfach so verwendet wie sie es werden. So isses. COM ist eine logische Operation (wie AND, OR), d.h. bitweise. NEG ist eine arithmetische Operation (wie ADD, SUB), d.h. byteweise.
Wo ihr euch doch so schön um Sprache streitet, wie wäre es damit? Ist leider schon etwas älter, aber dafür komplett deutsch und dementsprechend leicht verständlich. http://bitsavers.trailing-edge.com/pdf/aeg-telefunken/tr440/RD441_InstructionSet_Oct70.pdf Die Maschine arbeitete mit Einerkomplementdarstellung, weshalb sich euer Problem der Unterscheidung von logischem und arithmetischem Komplement in Luft auflöst. Aber ist ein Befehl wie QBR = "beQuemes Bringen aller Register" nicht eine zeitlose Schönheit?
:
Bearbeitet durch User
So ganz verständlich ist mir dieser ellenlange Disput aber nicht. Der TO hatte ja mit dem Beispiel klargestellt, dass er die bitweise Negation, resp. das Komplement, nicht aber ein Zweierkomplement meinte.
A. K. schrieb: > Die Maschine arbeitete mit Einerkomplementdarstellung, weshalb sich euer > Problem der Unterscheidung von logischem und arithmetischem Komplement > in Luft auflöst. Ist das diese Variante mit den zwei Nullen? +0 = 00000000 und -0 = 11111111 Zum Thema "Negieren" halte ich es so: negieren = aus einer positiven eine negative Zahl machen invertieren = alle Bits umdrehen Julian Schnee schrieb: > Könnte mir bitte jemand ausführlich erklären wie es bei einer 3x4 > Tastatur sein muss oder sein Code einfügen? Wie ist denn deine Hardware angeschlossen? BTW: irgendwie verwirrend, wenn zwei Threads in einem stecken. Du hättest da besser einen neuen angefangen... BTW2: ich fände es eine gute Idee, wenn du die Tastenabfrage selber machst. Den zugrundeliegenden Prozess nennt man "Lernen".
Lothar Miller schrieb: > Ist das diese Variante mit den zwei Nullen? > +0 = 00000000 und > -0 = 11111111 Ja, wobei bei Arithmetik oft die negative 0 rauskam, weil hier die Subtraktion als Addition des Komplements implementiert war. Andere Rechner mit dieser Darstellungsart implementierten die Addition als Subtraktion des Komplements, damit eine positive 0 rauskam.
:
Bearbeitet durch User
Possetitjel schrieb: > Max H. schrieb: >>> CPL -- Einerkomplement (=bitweise Negation), >>> NEG -- Zweierkomplement. >> Korrekt, > > Offenbar üblich, aber sprachlicher Schwachsinn. > >> und wenn du die Begriffe > > Stop. "CPL" und "NEG" sind keine Begriffe, sondern > Assemblermnemonics. Und sie stehen für Begriffe. Genau gesagt für englische(!) Verben: CPL = (to) complement NEG = (to) negate Das deutsche Verb negieren ist übrigens viel weniger präzise als die beiden englischen Verben oben. Denn je nach Kontext kann es die logische Invertierung meinen oder die arithmetische. Ich für mein Teil bin jedenfalls froh, daß Assembler-Mnemonics auf den i.d.R. präziseren englischen Begriffen beruhen. XL
Axel Schwenke schrieb: > Ich für mein Teil bin jedenfalls froh, daß Assembler-Mnemonics auf den > i.d.R. präziseren englischen Begriffen beruhen. Nja... Wenn ich einen Wert aus einem Register in ein anderes kopiere, weshalb verwende ich dann MOV(E) statt COPY? Und wenn ich auf einer Z80 einen Wert aus dem Register in den Speicher schreibe, weshalb verwende ich dafür LD (=load)?
:
Bearbeitet durch User
A. K. schrieb: > Axel Schwenke schrieb: >> Ich für mein Teil bin jedenfalls froh, daß Assembler-Mnemonics auf den >> i.d.R. präziseren englischen Begriffen beruhen. > > Nja... Wenn ich einen Wert aus einem Register in ein anderes kopiere, > weshalb verwende ich dann MOV(E) statt COPY? Und wenn ich auf einer Z80 > einen Wert aus dem Register in den Speicher schreibe, weshalb verwende > ich dafür LD (=load)? Hehe. Ich hätte es wissen sollen ;) MOV finde ich auch ziemlich dämlich. Mit LD für load komme ich klar. Es funktioniert halt in beide Richtungen: LD A, (HL) und LD (HL), A. Es gefällt mir sogar besser, die Richtung in den Operanden zu codieren als zwei verschiedene Menmonics a'la LD und ST zu verwenden. Und was copy angeht: das CP war halt schon vergeben für compare. Ich stelle mir aber gerade vor, wie deutsche Assemblermnemonics aussehen würden. Statt ADD hätten wir ZUS (zusammenzählen), aus SUB würde ABZ, aus BREQ würde SWG usw. Das Carry-Flag hieße nicht C sondern Ü, was uns so tolle Mnemonics wie ZUSMÜ und ABZMÜ bescheren würde. usw. usf. SCNR, XL
Axel Schwenke schrieb: > Ich stelle mir aber gerade vor, wie deutsche Assemblermnemonics aussehen > würden. Eine reale Variante davon hatte ich oben schon verlinkt: http://bitsavers.trailing-edge.com/pdf/aeg-telefunken/tr440/RD441_InstructionSet_Oct70.pdf ZUS für Addition geht nicht, weil das für Zusammensetzen gebraucht wird. Die komplett deutsche Beschreibung der CPU findet sich hier: http://www.textfiles.com/bitsavers/pdf/aeg-telefunken/tr440/RD441_CPU_Descr_Apr70.pdf Interrupts werden dort als "Eingriffe" bezeichnet.
:
Bearbeitet durch User
Possetitjel schrieb: > Ich habe schon immer geahnt, dass ich unnormal bin. Ich > verstehe unter Negieren das Einer-Komplement. Possetitjel schrieb: > Wenn wir das (Zweier-)Komplement > berechnen, nennen wir den Befehl "NEG". Wenn wir bitweise > negieren, heißt der Befehl konsequenterweise "COM" (wie > "complement"). Possetitjel schrieb: >> Max hat völlig recht, wenn er sagt: >> >>> Unter negieren versteht man normalerweise das 2er-Komplement. > > Nein, hat er nicht. Entschuldigung, aber so oft wie du deine Meinung wechselst, solltest du in die Politik gehen :-)
npn schrieb: > Possetitjel schrieb: >> Ich habe schon immer geahnt, dass ich unnormal bin. Ich >> verstehe unter Negieren das Einer-Komplement. > […] > Entschuldigung, aber so oft wie du deine Meinung wechselst, solltest du > in die Politik gehen :-) Mit dem ersten Statement lag er richtig und wenn man mal gewählt ist kann man dann sowieso jeden Blödsinn erzählen.
:
Bearbeitet durch User
Ich mache ja nichts mit ASM, aber es ist doch immer wieder lustig wie hier "Krümel zerkaut" werden. Wie gut, dass es in C so einfach geht.
F. Fo schrieb: > Wie gut, dass es in C so einfach geht. Wenn man sich nur ein bisschen in ASM auskennt, dann ist es auch ganz einfach. NEG 2er Komplement CPL/COM 1er Komplement Und wenn das beim verwendeten µC so ist, dann gibts da nix zu diskutieren. Oder würdest du darüber diskutieren wieso es in C "if" und nicht "when" heißt?
Max H. schrieb: > F. Fo schrieb: >> Wie gut, dass es in C so einfach geht. > Wenn man sich nur ein bisschen in ASM auskennt, dann ist es auch ganz > einfach. > NEG 2er Komplement > CPL/COM 1er Komplement > Und wenn das beim verwendeten µC so ist, dann gibts da nix zu > diskutieren. > Oder würdest du darüber diskutieren wieso es in C "if" und nicht "when" > heißt? Das sollte ja mein Post aussagen. Wenn jemand fragt wie das Wort für Zustimmung und das Wort für Ablehnung heißt, dann würde man "Ja" und "Nein" antworten. Unsere Sprache ist natürlich viel vielfältiger, aber in einer Computersprache ist das doch ziemlich eindeutig.
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.