INDEX...
Georg Acher's Homepage
ABOUT
PROJECTS
LINKS
TGI@TUM
 
TGI ÜBUNG
Assembler - Fingerübungen
ASSEMBLER

1. Speicherzugriffe

1a) Zwei an aufeinanderfolgenden Speicheraddressen liegende 16Bit-Worte sollen aufaddiert werden, das Ergebnis soll unmittelbar anschliessend abgespeichert werden. Haupspeicheraddresse: EBX (soll nicht verändert werden!).

1b) Es soll auf ein Feld mit 16Bit Worten zugegriffen werden. Feldbeginn in EBX, Nummer des Feldelements in EAX, Ergebnis in AX.

1c) Wie 1b), allerdings muss die Addresse des Feldes und die Nummer des Feldelements erst aus zwei Doppelwörtern im Hauptspeicher (ab EBX) gelesen werden.

1d) Kopieren von 4 16Bit-Worten, Quelladdresse in EAX, Zieladdresse in EBX. Einmal mit explizitem (d.h. einzelnen) Kopieren von Wörtern, einmal mit Kopieren von 32Bit-Doppelwörtern.

1e) Vertauschung zweier 32Bit-Langworte, die hintereinander ab EBX im Speicher liegen.

2. Schleifen

2a) Schleife von 0 bis einschliesslich 100, Aufruf einer Funktion FKT mit dem aktuellen Zählerstand in AX.

2b) Schleife von 100 bis einschliesslich 0, Aufruf einer Funktion FKT mit dem aktuellen Zählerstand in AX.

2b1) Schleife von 100 bis einschliesslich 1, Aufruf einer Funktion FKT mit dem aktuellen Zählerstand in AX.

2c) Wie 2a, aber Schrittweite 4.

2d) Wie 2a, aber Abbruch der Schleife, falls das Quadrat des Schleifenzählers grösser/gleich als BX wird. Dieser Test soll vor dem Aufruf von FKT erfolgen.

2e) Zwei verschränkte Schleifen: Die äussere (AX) von 0 bis 100, die innere (BX) von 0 bis (einschlieslich) AX.

2f) Wie 1d, allerdings Anzahl der Worte in CX einstellbar.

3. Bitbasteleien

3a) Extraktion der Bits 6 bis 3 in AX und Übertragung in BX, keine Veränderung von AX.

3b) Einfügen der drei niederwertigsten Bits von AX in die Bits 7 bis 5 von BX, ohne Veränderung von AX/CX/DX und der übrigen Bitstellen von BX.

3c) Überprüfung, ob Bit 14 bis 11 in AX den Wert 1001 haben, bei Gleichheit Sprung.

3d) Schnelle Multiplikation von AX mit 16, keinen MUL-Befehl benutzen!

3e) Schnelle Division von AX (vorzeichenbehaftet) mit 16, keinen DIV-Befehl nutzen!

3f) AX Modulo 64.

3g) Nullsetzen von Bit 9 in AX.

Lösungsvorschläge
Georg Acher
Last Update: 2004-10-06