Du befindest dich hier: FSI Informatik » jahrgaenge » 2006 » "Muster"-Lösungen » "Muster"-Lösungen zu Klausuren aus Technische Informatik 2 » Aufgabe 1

Dies ist eine alte Version des Dokuments!


Aufgabe 1

  • 1) 1, 2, 1, 2, 2, 1, 2 ,1
  • 2) Register; Immediate Operand; Direct Adress; Register Indirect (alle Variationen); Memory Indirect
  • 3) 1, 1, 2, 2, 2, 2, 2, 2
  • 4) 2, 1, 1, 1, 2, 1, 1, 2
  • 5) Weil die Reihenfolge der einzelnen Bytes falsch gelesen wird, z. B. 0x000000FF → 0xFF000000
  • 6) 2, 1, 1, 2, 2, 1, 2, 1

Aufgabe 2

  • 1) struct bla { char y; short x; long z; } ; Little-Endian
  • 2) Wenn er über Pointer Zugriff auf die Speicherinhalte hat.

Aufgabe 3

  • 1) links vertikal Adressbus; rechts vertikal Datenbus; fehlend: IOR, MR
  • 2) ?
  • 3) siehe Folien zu Rambaustein; MR, MW durch IOR, IOW ersetzen

Aufgabe 4

Multiply: .globl Multiply

    /* Mantisse der ersten Zahl laden (%eax) */
    movl 4(%esp), %eax

    /* Mantisse der zweiten Zahl laden (%ebx) */
    movl 8(%esp), %ebx

    /* Mantissen miteinander multiplizieren (%ax) */
    imulw %bx, %ax
    andl $0x0000ffff, %eax

    /* Exponent der ersten Zahl laden, Vorzeichenbit entfernen (%ebx) */
    movl 4(%esp), %ebx
    andl $0x7fff0000, %ebx

    /* Exponent der zweiten Zahl laden, Vorzeichenbit entfernen (%ecx) */
    movl 8(%esp), %ecx
    andl $0x7fff0000, %ecx

    /* Exponenten miteinander addieren, in Ergebnis einfuegen (%eax) */
    addl %ecx, %ebx
    orl %ebx, %eax

    /* Vorzeichen per XOR miteinander verknuepfen (%ebx) */
    movl 4(%esp), %ebx
    xorl 8(%esp), %ebx

    /* Neues Vorzeichen in Ergebnis einfuegen (%eax) */
    andl $0x800000, %ebx
    orl %ebx, %eax

    /* Ruecksprung */
    ret

Aufgabe 5

  • 1) Man will dem User keinen direkten Zugriff auf die Hardware erlauben. Aufrufsyntax ist ähnlich; Kontext ist unterschiedlich
  • 2) Exceptions + Interrupts

Aufgabe 6

  • 1) ?
  • 2) ?
  • 3) ?

Aufgabe 7

Funktionstabelle der Form: x_3 x_2 x_1 x_0 | c y_3 y_2 y_1 y_0

Mit Symmetriediagrammen vereinfacht:

  • y_0 = !x_0
  • y_1 = x_0 XOR x_1
  • y_2 = x_0 x_1 !x_2 + !x_0 x_2 + !x_1 x_2
  • y_3 = x_0 x_1 x_2 !x_3 + !x_2 x_3 + !x_0 x_3 + !x_1 x_3
  • c = x_0 x_1 x_2 x_3