2016-11-18 6 views
0

私はアセンブリを学ぶことを試みているこの期間。私はシンプルなプログラムを作成するためにms-dos "debug"コマンドを使用しましたが、今は大きなプログラムを作りたいと思っています。私はNASMをダウンロードし、次のコードをアセンブルすることを試みた:Nasmエラー。定義されていないラベル

.model small 
.code 
    mov ax, bx 

しかし、ラベルで.MODEL、それは彼らが未定義アーカンソーと言う.CODEを。私はもう2人の他のアセンブラでこれを試しました。同じことが起こりました。誰もこの問題で私を助けることができますか?

segment code 
..start: 
mov ax, bx 

プログラムにエントリーポイントをマーク..start特殊記号:私はあなたのプログラムのためのWindows 10

+3

あなたの構文(ディレクティブ)は、NASMよりもMASMに似ています。 – zx485

+0

@ zx485 nasmの構文はどうですか? –

+0

まだ16ビットコードを作成していると思われます。これを行う必要はありません。64ビットWindows上でネイティブに実行できるasmに32または64ビットのコードを記述し、通常のライブラリ/ Win32 APIを使用できます。また、通常のC++プログラムから呼び出すことのできる関数を記述することもできます。だから、DOSBOXなどを使う必要はありません。 [x86タグwiki](http://stackoverflow.com/tags/x86/info)のリンクを参照してください。 –

答えて

2

NASMの構文を使用してい 。 Here.model smallについてNASM

に16ビットのコードを書く上での素敵なマニュアルです - NASMにはメモリモデル、ドキュメントからcitateがhttp://www.nasm.us/doc/nasmdoc2.htmlではありません。

NASMもサポートするために、任意のディレクティブを持っていません異なる16ビット メモリモデル。プログラマは、ファンクションコールで呼び出されるはずのファンクション を把握する必要があり、 は正しい形式のRET命令(RETN またはRETF; RET自身をRETNの代替フォーム)。 で、プログラマは外部関数を呼び出すときにCALL FAR 命令を必要に応じてコーディングする責任を負います。また、 は、どの外部変数定義が遠く、 の近くにあるかを把握する必要があります。

そして、あなたには、Nasm documentationと読むことをお勧めします。ほとんどの質問に対する回答があります。

関連する問題