Test Blu Bla

Gast #6903413
Lesenswert?

Liebe Leute,
das folgende Minimalbeispielprogramm soll mein Problem mit DOS und COM 
Dateien zeigen.
Es soll in **label0** das Code Segment mit 0x10 multipliziert werden um 
dann mit einem **retf** angepasst zu werden,
sodass der Offset von 0x100 der COM Datei zu 0 wird. Leider funktioniert 
das nicht, warum?
1
jmp label0
2
label1:
3
mov ax, cs
4
mov es, ax
5
mov ss, ax
6
mov ds, ax
7
xor sp, sp
8
mov ax, 0xE40
9
xor bx, bx
10
int 0x10
11
jmp $
12
label0:
13
mov ax, cs
14
mov ss, ax
15
xor sp, sp
16
mov cl, 0x4
17
shl ax, cl
18
;mov ax, 0x7C0
19
push ax
20
mov ax, label1
21
push ax
22
times 0x1fe-$+$$ db 0
23
dw 0xaa55
**label1** gibt ein @ aus um den Erfolg zu zeigen.
Der Kommentar macht die Datei mit **qemu** bootbar.
Getestet habe ich mit **nasm** und **dosbox**.
Vielen lieben Dank
Gast #6903505
Lesenswert?

Jim M. schrieb:
> Was passiert im Debugger?
Danke jetzt gehts.
1
jmp label0
2
label1:
3
mov ax, cs
4
mov es, ax
5
mov ss, ax
6
mov ds, ax
7
xor sp, sp
8
mov ax, 0xE40
9
xor bx, bx
10
int 0x10
11
jmp $
12
label0:
13
mov ax, cs
14
mov ss, ax
15
xor sp, sp
16
add ax, 0x10
17
;mov ax, 0x7C0
18
push ax
19
mov ax, label1
20
push ax
21
retf
22
times 0x1fe-$+$$ db 0
23
dw 0xaa55

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren