0 Daumen
508 Aufrufe

Aufgabe:

Stellen Sie die rechnerinterne Abbildung der mit der Define-Anweisung jeweils deklarierten Zahlen bzw. Zeichenkette im byteorganisierten Speicher des Prozessors i8086 dar.

b_var1 DB26H;

b_var2 DB35;

w_var1 DW4A6FH;

w_var2 DW1029;

zk DB 13,10, “HELLO;

Wählen Sie für die Darstellung des Inhaltes einer Speicherzelle die verkürzte Schreibweise als zweistellige


Frage:

Wie stelle ich die unten dargestellte Anweisung dar im Speicher? mit db würde ich im Zweifelsfall ja nur eine Speicherzelle belegen können, aber allein für 13 und 10 bräuchte ich ja schon jeweils ein Feld. Würde das dann so aussehen?


"HELLO

0AH
zk0DH

An sich wäre mit DB ja nur ein Feld belegt werden dürfen. Vielleicht kann mir hier jemand mal erklären, wie ich so etwas schematisch darstellen müsste.

Avatar von

1 Antwort

0 Daumen

Antwort mit KI erzeugt

Rechnerinterne Abbildung der gegebenen Anweisungen

Die gegebenen Anweisungen definieren Variablen und eine Zeichenkette im Speicher des i8086-Prozessors. Die Darstellung dieser Variablen und Zeichenkette im Speicher wird durch ihre Anweisungen bestimmt. Wir gehen durch jede Anweisung und erklären ihre Darstellung im Speicher.

- b_var1 DB 26H;

Diese Anweisung definiert eine Byte-Variable (DB für Define Byte) mit dem Hexadezimalwert 26H. Im Speicher wird dies als eine Speicherzelle mit dem Wert 26H (in Hexadezimal) dargestellt.

- b_var2 DB 35;

Diese Anweisung definiert eine Byte-Variable mit dem Dezimalwert 35. Im Speicher wird dies als eine Speicherzelle mit dem Wert 23H dargestellt, da 35 in Hexadezimal 23H ist.

- w_var1 DW 4A6FH;

Diese Anweisung definiert eine Wort-Variable (DW für Define Word) mit dem Hexadezimalwert 4A6FH. Da der i8086-Prozessor eine Little-Endian-Speicherorganisation verwendet, wird der Wert im Speicher umgekehrt dargestellt: 6F4AH.

- w_var2 DW 1029;

Diese Anweisung definiert eine Wort-Variable mit dem Dezimalwert 1029, was in Hexadezimal 0405H ist. Wiederum wird dieser Wert in Little-Endian-Organisation als 05H 04H dargestellt.

- zk DB 13,10, "HELLO;

Diese Anweisung kombiniert die Definition von einzelnen Bytes und einer Zeichenkette. Hier wird zunächst 13 (0DH) im Speicher dargestellt, gefolgt von 10 (0AH), und dann folgen die ASCII-Werte der Zeichen "HELLO".

ASCII-Werte für den String "HELLO":

- H = 48H
- E = 45H
- L = 4CH
- L = 4CH
- O = 4FH

Somit sieht die Speicherbelegung folgendermaßen aus:

zk0DH
0AH
48H
45H
4CH
4CH
4FH

Konzeptuelle Erklärung:

Die Direktive DB erlaubt es, ein oder mehrere Bytes im Speicher zu definieren. Wenn eine Sequenz von Bytes angegeben wird, wie in der Anweisung mit zk, dann werden nacheinander entsprechende Speicherzellen belegt. Das bedeutet, die DB-Direktive ist flexibel genug, um sowohl einzelne Werte als auch Arrays oder Zeichenketten zu definieren.

Die Tatsache, dass mit DB "normalerweise" nur ein Byte definiert wird, bedeutet nicht, dass nur eine Speicherzelle belegt werden kann. Es bedeutet lediglich, dass jedes Element, welches durch DB definiert wird, ein Byte groß ist. Bei der Definition von Zeichenketten oder Listen von Bytes werden demnach entsprechend viele Speicherzellen in Anspruch genommen, wie Elemente vorhanden sind.

Avatar von

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community