2

Youtube ビデオ チュートリアルで入手したアセンブリ プログラムの次のソースがあります。

.386
.model flat, stdcall
option casemap:none

include c:\masm32\include\windows.inc
include c:\masm32\include\masm32.inc
include c:\masm32\include\kernel32.inc

includelib c:\masm32\lib\masm32.lib
includelib c:\masm32\lib\kernel32.lib

.data
message1 db "Type your name: ", 0
message2 db "Your name is ", 0

.data?
buffer db 100 dup(?)

.code
start:

invoke StdOut, addr message1
invoke StdIn, addr buffer, 100
invoke StdOut, addr message2
invoke StdOut, addr buffer

invoke StdIn, addr buffer, 100
invoke ExitProcess, 0

end start

プログラムをバッチファイルでコンパイルします

ml /c /coff %1.asm
Link /SUBSYSTEM:WINDOWS %1.OBJ

バッチ ファイルを assemble.bat と呼ぶので、ソースのアセンブルを呼び出すと、実行可能ファイルがアセンブルされます。

問題は、プログラムを実行すると (プログラムはエラーなしで正常にアセンブルされます)、プログラムが単に何もしないことです。コンソール プロンプトで呼び出すと、何も実行されず、プログラムは空白行を表示するだけで、何も起こらなかったかのようにコマンド プロンプトに戻ります。

ビデオチュートリアルでは、男は自分のプログラムを組み立ててコンパイルし、正常に動作しましたが、私には何も起こりません.

4

3 に答える 3

1

私は問題を解決しました。

コマンド「Link/SUBSYSTEM:WINDOWS%1.OBJ」でリンクしていたため、機能しませんでした。コンソールアプリケーションの場合、リンクコマンドは「Link / SUBSYSTEM:CONSOLE%1.OBJ」である必要があります。

于 2011-06-14T22:25:46.893 に答える