Ich versuche, das folgende Programm (.EXE
, nicht .COM
) zu montieren und verknüpfen, bezogen auf das Beispiel in der NASM manual:Verknüpfung ein einfaches DOS-Programm (ASM), wLink warnt vor kein Stapelsegment
segment data
hello: db "hello",13,10,"$"
segment code
..start:
mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,stacktop
mov dx,hello
mov ah,9
int 0x21
mov ax,0x4c00
int 0x21
segment stack stack
resb 64
stacktop:
I mit dem folgenden Befehl zusammenzusetzen (die nichts auf stdout erzeugt, sondern erzeugen test.obj
):
nasm -Wall -f obj test.asm
und Verbindung mit dem folgenden Befehl (dies ist OpenWatcom 1,9 wLink):
wlink name test.exe format dos file test.obj
Das gibt mir die folgende Ausgabe (einschließlich einer Warnung):
Open Watcom Linker Version 1.9
Portions Copyright (c) 1985-2002 Sybase, Inc. All Rights Reserved.
Source code is available under the Sybase Open Watcom Public License.
See http://www.openwatcom.org/ for details.
loading object files
Warning! W1014: stack segment not found
creating a DOS executable
Das Handbuch erklärt:
Der obige Code deklariert einen Stapel Segment 64 Bytes nicht initialisierte Stapelspeicher enthält, und Punkte "stacktop" an der Spitze. Der Anweisungssegmentstapelstapel definiert ein Segment, das "Stapel" genannt wird, und auch vom Typ "STACK". Letzteres ist für die korrekte Ausführung des Programms nicht notwendig, aber Linker geben wahrscheinlich Warnungen oder Fehler aus, wenn Ihr Programm kein Segment vom Typ 'STACK' hat.
Was fehlt mir?
ich so weit gehen würde, wie 4K zu sagen, ist kaum groß genug für einen DOS jetzt stapeln, alle Müll Treiber betrachtet, die zusammen mit in DOS den letzten Tagen stark vermehrt die Komplikationen, die bestimmte DOS-Emulatoren mit sich bringen. – JimR
@ JimR: Könnte sein. –
@JimR: Ich bin froh, dass es immer noch Leute da draußen gibt, die sich an dieses Zeug erinnern. Du warst eine große Hilfe. –