Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Wo befindet sich DS:[0080h] ?

1 view
Skip to first unread message

Willi Mühlenhäuser

unread,
Jan 6, 2015, 4:55:46 PM1/6/15
to
Hallo,

ich bin noch recht frisch mit Assembler. In meinem Buch (ISBN
978-3-8266-1469-9), welches ich zum lernen benutze, ist ein zusätzlicher
Quellcode enthalten. Dieser wird aber nicht näher erklärt.

Dort wird in einem Macro "mov cl,DS:[0080h]" verwendet. Ich vermute hier,
das der Bytewert aus dem Datensegment an Offset 0080h in das CL-Register
übertragen wird. Nach .Data finde ich folgendes.

Header STRUC
Typ DW ?
Size1 DD ?
<...>
Header ENDS
Head Header <>
Filename DB 126 DUP (0)
<...>

Befinde ich mich im richtigen Segment? 0080h scheint 16bit zu sein.
Bedeutet das ich hier alle 16bit eine Adresse vorfinde oder das der
Adressraum 16bit groß sein kann und es existiert pro Byte eine Adresse.

Ich hoffe meine Frage ist nicht zu dumm und schon mal vielen Dank für
eure Hilfe. Den Quelltext kann ich leider nicht veröffentlichen, weil
dort ein Copyright vermerkt ist.

Gruß

Herbert Kleebauer

unread,
Jan 6, 2015, 6:12:30 PM1/6/15
to
On 06.01.2015 22:55, Willi Mühlenhäuser wrote:

> Dort wird in einem Macro "mov cl,DS:[0080h]" verwendet. Ich vermute hier,
> das der Bytewert aus dem Datensegment an Offset 0080h in das CL-Register
> übertragen wird.

http://de.wikipedia.org/wiki/Program_Segment_Prefix

An der Adresse 0x80 im PSP steht die Länge der Kommandozeile, ab Adresse
0x81 die eingegebene Kommandozeile selbst.

Aber vermutlich wirst du Schwierigkeiten bekommen, 16-Bit Programme
überhaupt noch ausführten zu können, unter 64 Bit Windows funktioniert
das nicht mehr.




Stefan Reuther

unread,
Jan 7, 2015, 1:08:53 PM1/7/15
to
Herbert Kleebauer wrote:
> On 06.01.2015 22:55, Willi Mühlenhäuser wrote:
>>Dort wird in einem Macro "mov cl,DS:[0080h]" verwendet. Ich vermute hier,
>>das der Bytewert aus dem Datensegment an Offset 0080h in das CL-Register
>>übertragen wird.
>
> http://de.wikipedia.org/wiki/Program_Segment_Prefix

...sofern DS seit dem Programmstart nicht verändert wurde.

> Aber vermutlich wirst du Schwierigkeiten bekommen, 16-Bit Programme
> überhaupt noch ausführten zu können, unter 64 Bit Windows funktioniert
> das nicht mehr.

Aber auch da gibt es DOSBOX. Wald-und-Wiesen-Assembler macht in der
Emulation sowieso mehr Spaß; wenn man's vergeigt hat, startet man den
Emulator neu, und der bootet einfach schneller als ein echtes DOS :)


Stefan

Willi Mühlenhäuser

unread,
Jan 8, 2015, 9:25:41 AM1/8/15
to
On Wed, 07 Jan 2015 18:48:54 +0100, Stefan Reuther wrote:

>> Herbert Kleebauer wrote:
>> http://de.wikipedia.org/wiki/Program_Segment_Prefix
>
> ...sofern DS seit dem Programmstart nicht verändert wurde.

Vielen Dank, der Wikipedia-Artikel hat soweit alle Fragen beantwortet.

> Aber auch da gibt es DOSBOX. Wald-und-Wiesen-Assembler macht in der
> Emulation sowieso mehr Spaß; wenn man's vergeigt hat, startet man den
> Emulator neu, und der bootet einfach schneller als ein echtes DOS :)

DOSBox ist eine gute Sache, darin funktioniert es. Vielen Dank für den
Tipp.

Gruß
0 new messages