0

Windows 7 64 ビットで Flat Assembler を使用しています。単純なプログラムをコンパイルしようとしていますが、16 ビット プログラムとしてコンパイルされています。一部のプログラムは正常にコンパイルされるように見えますが、hello world の例をしばらく検索した後、プログラムが実行されません。

org 0x100

        mov  dx, msg      ; the address of or message in dx
        mov  ah, 9        ; ah=9 - "print string" sub-function
        int  0x21         ; call dos services

        mov  ah, 0x4c     ; "terminate program" sub-function
        int  0x21         ; call dos services
        msg  db 'Hello, World!', 0x0d, 0x0a, '$'

16ビットプログラムとしてコンパイルされないようにするにはどうすればよいですか?

4

2 に答える 2

2

DOS COMファイルを作成しています。DOSはリアルモードOSなので、アプリオリの16ビットです。32 ビットの実行可能ファイルを取得するには、PE - ポータブル実行可能形式 - Windows 実行可能形式を使用する必要があります。それに関する情報はインターネットで見つけることができます。それの FASM 実装 - Win プログラミング またはPE 形式

しかし、「int 0x21」を使用しているため、単純にプログラムを32ビットにすることはできません-これはDOSのシステムコールです

于 2013-10-15T18:21:10.083 に答える