Hexarithmetik

9 Oktober
Termin: 23 Oktober (28 Oktober)

Theorie | Beispiel | Aufgaben


Theoretische Zusammenfassung:

  1. Hexarithmetik
  2. Negative Zahlen
  3. Register und Speicher


Aufgaben:

Führen Sie die Folgende Arithmetische Operationen (Addition und Subtraktion) eine nach dem anderen im Assembler Sprache mit der Hilfe des Debug Programms aus.

Sie können dazu die folgende Befehle benützen:
MOV AX,Wert1
MOV BX,Wert2
ADD AX,BX
SUB AX,BX

(die folgende Zahlen sind Dezimalzadhlen:)

1. 5 + 102
 -10 + 32
  22 + (-7)
 -32760 - 12

2. 67 + 60
 5 - (-10)
  -5 + 35
 30100 + 3000

3. 21 + 33
 -44 + 64
  30 - (-5)
 -800 - 32000

4. -21 - 33
 10 + (-32)
  100 - 29
 29000 + 8700

5. -67 - 60
 42 + (-5)
  -12 + 58
 -32740 - 42

Schreiben Sie das Programm an die Festplatte.

Zum abgeben (+ auch per E-Mail zu schicken):

Anmerkung: Das Ergebnis der letzten Operation könnte Fehlerhaft sein... Warum?!


Beispiel+Hinweis

Aufgabe
21 + 46
-32 - (-7)

Weil Debug nur mit Hexazahlen arbeitet (die Zahlen erscheinen in (2-er) Komplementdarstellung), sollen wir zuerst die bestimmte Darstellung für die gegebenen Zahlen finden:
21 ist in Binärsystem: 10101b (auf 16 Bits ist das 0000 0000 0001 0101) => die entsprechende (auf 16 Bits dargestellte) Hexazahl ist 0015h (der "h" an Ende der Zahl steht für "Hexa", und "b" für "Binär")

46=10 1110b=2Eh

Wie is -32 dasgestellt?!
Die entsprechende positive Zahl 32 ist:
32=0000 0000 0010 0000b
Die darstellung von -32 is das (2-er) Komplement von 32, also die Zahl die 32 bis zu 2n komplettiert (n ist in unserem Fall 16, denn die Zahlen auf 16 bits dargestellt sind). 216=1 0000 0000 0000 0000b

Dann
1 0000 0000 0000 0000b -
  0000 0000 0010 0000b
______________________
  1111 1111 1110 0000b = FFE0h
(das ist also die Darstellung von -32)

!!!
Auf 16 Bits kann man 216 verschiedene Zahlen darstellen. Im Komplementdarstellung sind die Hälfte der Kode (also 215) für die darstellung der positiven Zahlen, und die andere Hälfte für die darstellung der negativen Zahlen benützt. Jede positive Zahl fangt mit 0 an, und jede negative Zahlt mit 1. Das erste Bit ist deswegen auch Vorzeichenbit genannt.
=> Wenn eine Vorzeichenbehaftete Zahl im Komplementdarstellung mit 1 anfangt, das hessit, dass sie eine negative Zahl ist.
!!!

(Einfachere praktische Regel um das Komplement einer Binärzahl zu erhalten:
- man invertiert alle Bits der Zahl, dann addiert noch 1 dazu:
32 = 0000 0000 0010 0000b
inv.:1111 1111 1101 1111
dann
1111 1111 1101 1111b +
                  1b
____________________
1111 1111 1110 0000b

Umgekehrt:
Das Komplement von 1111 1111 1110 0000b ist:
invbits(1111 1111 1110 0000b)+1b=0000 0000 0001 1111b + 1b = 0000 0000 0010 0000b=32 )


Komplementdarstellung von -7:
7=111b
invbits(0000 0000 0000 0111b)+1b= 1111 1111 1111 1000b +1b =
= 1111 1111 1111 1001b = FFF9h
- die Komplementdarstellung von -7

Programm (zum schicken):

21 + 46
-32 - (-7)
MOV AX,15 ; der Wert von AX wird 15h (also 21)
MOV BX,2E ; BX = 46
ADD AX,BX ; AX = 0043h = 67
MOV AX,FFE0 ; AX = -32
MOV BX,FFF9 ; BX = -7
SUB AX,BX< ; AX = AX-BX = FFE7h (=-25)
INT 20