2016-06-06 8 views
1

Die Vorlesung Folien sagt, dass CMN führt einen Vergleich durch "Hinzufügen" der Zweierkomplement des 2. Operanden zum ersten Operanden, und CMP führt Vergleich durch "Subtrahieren" der 2. Operand von der ersten Operand. Aber nach dem, was ich bisher gelernt habe, führt die Armanweisung innerhalb des Prozessors nur Additionen durch, und die Subtraktion wird erreicht, indem ein Zweierkomplement des zweiten Operanden ausgeführt wird (bitte sagen Sie mir, ob das korrekt ist oder nicht). Also machen CMN und CMP im Grunde nicht dasselbe?Was ist der Unterschied zwischen CMP und CMN?

Antwort

8

Klingt wie Ihre Vortragsfolien sind leicht durcheinander. Der Punkt von CMP ist, dass, wenn die zwei Operanden gleich sind, das Ergebnis Null ist, was bedeutet, dass cmp a, b einfach a - b ist. CMN macht denselben Vergleich, aber mit dem zweiten negierten Operanden, d.h. cmn a, b bedeutet a - (-b) - was unter Zweierkomplementarithmetik genau entspricht a + b.

+0

Ah, also CMN macht auch eine Subtraktion, um die beiden Operanden zu vergleichen, außer der zweite Operand wird mit einem entgegengesetzten Vorzeichen negiert. Ist das korrekt? –

+3

In der Tat. Es macht wahrscheinlich mehr Sinn, wenn Sie in Betracht ziehen, dass Sie negative direkt im Format operand2 nicht direkt codieren können. – Notlikethat