2016-11-23 2 views
0

Ich studiere gerade Assembler, und die Version, die sie verwenden, ist ziemlich alt und besteht aus 3 Dateien, ASM.exe, LINK.exe, TD.EXE, die über DosBox laufen. Grundsätzlich brauche ich drei Befehle zu tun:Batch-Datei zum Assembler kompilieren

asm [filename].asm; 
link [filename].obj; 
td [filename] 

, um zu kompilieren, nicht, dass ich eine Batch-Datei erstellen möchten, die ich geben: run [filename]

So wird es nur den Dateinamen verwenden und alles kompilieren.

Kann mir bitte jemand helfen oder mir einen Hinweis geben, wo ich nach solchen Informationen suchen soll?

+0

Obwohl nicht mit Ihrer Frage verbunden, vielleicht interessiert Sie vielleicht [http://www.thiscologne.com]. dostips.com/forum/viewtopic.php?f=3&t=6281), die einen Basis-8086-Assembler enthalten, der in Batch geschrieben ist und _ "als Erziehungswerkzeug zum Erlernen der Grundlagen der Assemblersprache verwendet werden kann" _. Mit dieser Batch-Datei können Sie einfachen Assembly-Quellcode schreiben und ausführbare 16-Bit-DOS-.com-Dateien ohne Assembler oder Linker generieren! ** ':-)' ** – Aacini

Antwort

4

Wenn Sie nur den Dateinamen ohne Erweiterung geben geben Sie Ihre Batch aussehen könnte:

IF [%1]==[] (
    echo WRONG SYNTAX: run ^<filename^> 
    exit /b 1 
) 
asm %1.asm 
IF ERRORLEVEL 1 (
    echo ERROR: Could not assemble file. Abandonned execution! 
    exit /b 1 
) 
link %1.obj 
IF ERRORLEVEL 1 (
    echo ERROR: Could not link %1.obj. Abandonned execution! 
    exit /b 1 
) 
td %1 

Wie @LotPings in den Kommentaren erwähnt hatte, die Erweiterungen, die Pfadmanipulation erlauben wird nicht funktionieren. Es ist auch sicherer, das Vorhandensein eines Arguments vor dem Starten der Ausführung und Fehlerlevels vor dem Start jedes Schrittes zu überprüfen. David wohlferd vorgeschlagen

+5

DosBox emuliert einen x86-Prozessor sowie ein echtes Dos. Nur wenn eine andere Shell wie 4dos installiert ist cmd wie Features funktioniert aber das schließt AFAIK die Modifikatoren ~ dpnxsz – LotPings

+1

Vielen Dank. Daran habe ich nicht gedacht! Ich habe meine Antwort angepasst –

+1

Wenn der Befehl 'asm' fehlschlägt, ist es nicht sinnvoll, den' link' Befehl auszuführen. Vielleicht Fehlerlevel überprüfen? –