Download Die Assemblersprache der intel 80x86
Transcript
8.2. ADDITION UND SUBTRAKTION Bitmuster 01111101 01111110 01111111 10000000 10000001 10000010 10000011 69 Wert dezimal 125 126 127 -128 -127 -126 -125 Tabelle 8.3: Die Bruchstelle“ zwischen positiven an die negativen Zahlen beim Überlauf am Bei” spiel der 8-Bit-Zahlen im Zweierkomplement. Bsp.: Die Operation 127+1 führt zu dem falschen Ergebnis -128, der Fehler wird durch das Überlaufsflag (Overflow) angezeigt. Auch die Zweierkomplement-Zahlen können sehr schön im Zahlenring dargestellt werden, die Bereichsüberschreitung wird hier durch das Überlaufflag angezeigt. Die Vorzeichenumkehr einer Zahl im Zweierkomplement wird bewirkt durch Invertieren aller Bits und anschließendes Inkrementieren. Dies kann leicht gezeigt werden, wenn man von Gl.8.2 ausgeht. Es ist Z̄ das bitweise invertiertes Z und (1 − ai ) = āi Z̄ = −(1 − an−1 ) · 2n−1 + n−2 X (1 − ai ) · 2i i=0 = −2n−1 + an−1 · 2n−1 + (2n−1 − 1) − n−2 X ai · 2i i=0 = an−1 · 2n−1 − n−2 X ai · 2i − 1 = −Z − 1 i=0 Damit ergibt sich also für die vorzeichenumgekehrte Zahl −Z − Z = Z̄ + 1 (8.3) Als Beispiel betrachten wir die Vorzeichenumkehr von -11d = 11110101b; nach Invertieren ergibt sich 00001010b und nach dem anschließenden Inkrementieren 00001011b = 11d. 8.2 Addition und Subtraktion Die einfachsten arithmetischen Befehle sind INC (Increment) und DEC (Decrement) für die Erhöhung und Erniedrigung um eins. INC und DEC setzen die fünf Flags OF, SF, ZF, AF und PF. Im Unterschied zu ADD und SUB wird also CF nicht gesetzt. Beispiele: inc cx ; erhöht cx um 1 dec [Feld+bx] ;erniedrigt eine Speichervariable um 1