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:30] – 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 103: | Zeile 103: | ||
| | ||
| | ||
- | | + | |
| | ||
Zeile 121: | Zeile 121: | ||
* Welche | * 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 '' | + | 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 '' |
---- | ---- | ||
Zeile 143: | Zeile 143: | ||
| | ||
| | ||
- | | + | |
| | ||
Zeile 163: | Zeile 163: | ||
mov EBX, tabelle | mov EBX, tabelle | ||
- | mov [EBX+4], word 98 ; | + | mov [EBX+2], word 98 ; |
- | ADD EBX, 4 ; | + | add EBX, 2 ; |
- | MOV [EBX], word 99 ; | + | 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 ; | ||
| |