Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
faecher:informatik:oberstufe:techinf:assembler:adressierung:start [20.09.2021 18:04] – [Indirekte Speicheradressierung] sbel | faecher:informatik:oberstufe:techinf:assembler:adressierung:start [21.09.2021 07:01] (aktuell) – sbel | ||
---|---|---|---|
Zeile 16: | Zeile 16: | ||
BYTE_VALUE | BYTE_VALUE | ||
ADD BYTE_VALUE, 65 ; Es wird unmittelbar der Wert 65 addiert | ADD BYTE_VALUE, 65 ; Es wird unmittelbar der Wert 65 addiert | ||
- | MOV AX, 45H ; 45H wird unmittelbar ins Register AX geshrieben | + | MOV AX, 45H ; 45H wird unmittelbar ins Register AX geschrieben |
</ | </ | ||
Zeile 60: | Zeile 60: | ||
<code asm> | <code asm> | ||
Zeichenkette DB ' | Zeichenkette DB ' | ||
- | Haeufigkeit | + | Haeufigkeit |
</ | </ | ||
Zeile 68: | Zeile 68: | ||
</ | </ | ||
- | nicht zweckmäßig, | + | nicht zweckmäßig, |
Genau dies erlaubt die Register-indirekte Adressierung oder kurz indirekte Adressierung: | Genau dies erlaubt die Register-indirekte Adressierung oder kurz indirekte Adressierung: | ||
Zeile 76: | Zeile 76: | ||
INC [Haeufigkeit+BX] ;indirekte Adressierung | INC [Haeufigkeit+BX] ;indirekte Adressierung | ||
</ | </ | ||
- | wird nun auch das Feldelement | + | wird nun auch das Feldelement 3 angesprochen, |
Zeile 86: | Zeile 86: | ||
Es dürfen auch ein oder zwei Anteile entfallen. (Wenn nur eine Konstante in den Klammern steht, ergibt sich eine direkte Adressierung.) Die eckigen Klammern sind Pflicht. | Es dürfen auch ein oder zwei Anteile entfallen. (Wenn nur eine Konstante in den Klammern steht, ergibt sich eine direkte Adressierung.) Die eckigen Klammern sind Pflicht. | ||
- | Was macht der folgende Assembler Code? | + | ---- |
+ | {{: | ||
+ | === (A1) === | ||
+ | Was macht der folgende Assembler Code? Beschreibe, was deiner Meinung nach geschieht und auf der Konsole ausgegeben wird, teste anschließend. | ||
<code asm> | <code asm> | ||
section .data | section .data | ||
- | tabelle TIMES 10 DB 97 | + | tabelle TIMES 10 DW 97 |
section .text | section .text | ||
- | | + | |
- | _start: | + | _start: |
- | | + | |
| | ||
| | ||
| | ||
| | ||
+ | |||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | ---- | ||
+ | {{: | ||
+ | === (A2) === | ||
+ | Das folgede Bild zeigt ein Speicherschema zum obigen Code. | ||
+ | {{ : | ||
+ | |||
+ | Beantworte die folgenden Fragen: | ||
+ | |||
+ | * Wie groß ist der blaue Speicherbereich (2)? | ||
+ | * Welche Adresse hat die mit (1) bezeichnete " | ||
+ | * Welche | ||
+ | |||
+ | Mache dir klar, dass die Adressierung durch Offsets erfolgt, weil vor dem Start des Programms nicht feststeht, an welchen absoluten Speicheradressen Daten und Programm bei der Ausführung geladen werden! Man kann sich also vorstellen, dass bei der Deklaration einer Variablen wie '' | ||
+ | |||
+ | ---- | ||
+ | {{: | ||
+ | === (A3) === | ||
+ | Was macht der folgende Code? Verfahre wie oben. Erläutere, was an den mit EINS und ZWEI markierten Stellen passiert. | ||
+ | |||
+ | <code asm> | ||
+ | section .data | ||
+ | tabelle TIMES 10 DW 97 | ||
+ | |||
+ | section .text | ||
+ | | ||
+ | _start: | ||
+ | |||
+ | mov EBX, tabelle | ||
+ | mov [EBX], word 98 ; ZWEI | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | ---- | ||
+ | {{: | ||
+ | === (A4) === | ||
+ | Was macht der folgende Code? Verfahre wie oben. Ergänze nach den Semikola erklärende Kommentare | ||
+ | |||
+ | <code asm> | ||
+ | section .data | ||
+ | tabelle TIMES 10 DW 97 | ||
+ | |||
+ | section .text | ||
+ | | ||
+ | _start: | ||
+ | |||
+ | mov EBX, tabelle | ||
+ | mov [EBX+2], word 98 ; | ||
+ | add EBX, 2 ; | ||
+ | mov [EBX], word 99 ; | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | int :w 0x80 | ||
+ | |||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Was muss man an obigem Code ändern, damit die ausgegebene Zeichenkette mit '' | ||
+ | |||
+ | ---- | ||
+ | {{: | ||
+ | === (A5) === | ||
+ | Was macht der folgende Code? Verfahre wie oben. Ergänze nach den Semikola erklärende Kommentare | ||
+ | <code asm> | ||
+ | section .data | ||
+ | tabelle TIMES 10 DW 97 | ||
+ | |||
+ | section .text | ||
+ | | ||
+ | _start: | ||
+ | |||
+ | |||
+ | mov ECX, 98 ; | ||
+ | mov EBX, tabelle | ||
+ | mov [EBX + 2], ECX ; | ||
+ | inc ECX ; | ||
+ | inc ECX ; | ||
+ | add EBX, 8 ; | ||
+ | mov [EBX], ECX ; | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | int :w 0x80 | ||
| | ||
| | ||
</ | </ |