アセンブラーは開始アドレスがどこにあるかをどこで知っていますか? Microsoft (R) Segmented Executable Linker Version 5.60.339 Dec 5 1994
(16bit リンカ)を使用して追加するstart
とend start
、コードのアセンブルとリンクは正常に行われます。MASM32 には、bin ディレクトリに 16 ビットのリンカーが含まれています。ただし、16 ビット コードを正しくアセンブルするには、さまざまなコマンド ライン パラメータを ML に渡す必要があります。
.MODEL small
.STACK 100h
.data
message BYTE "Hello, world!","$"
.code
start:
mov ah,9
mov dx,OFFSET message ; addr of buffer
int 21h
END start
要約すると、コードには開始アドレスと終了アドレスが必要です。MASM32 に付属している現在の ML を使用して、16 ビットおよび 32 ビット コードを組み立てることができます。16 ビット コードをリンクするには 16 ビット リンカを使用する必要があり、32 ビット コードをリンクするには 32 ビット リンカを使用する必要があります。
私の 16 ビット DOS アプリの 1 つから:
ML.EXE /DMASM /DDOS /Zm /c /nologo /I"f:\masm32\Include" "dosdisplay.asm"
link16.exe /NOLOGO "dosdisplay.obj"