2017-01-05 7 views
1

現在、DosBoxでアセンブラプログラムをコンパイルしていますが、エラーが発生しています。
誰かが問題解決に手伝ってもらえますか?
MASMとリンクで受け取ったエラーのスクリーンショットを添付しています。DosBoxでアセンブラプログラムをコンパイルする際にエラーが発生しました

enter image description here

これは私のコードです:

DATA SEGMENT 
    NUM1 DB ? 
    NUM2 DB ? 
    RESULT DB ? 
    MSG1 DB 10,13,"ENTER FIRST NUMBER TO MULTIPLY : $" 
    MSG2 DB 10,13,"ENTER SECOND NUMBER TO MULTIPLY : $" 
    MSG3 DB 10 ,13,"RESULT OF MULTIPLICATION IS : $" 
ENDS 

CODE SEGMENT 
    ASSUME DS:DATA,CS:CODE 
START: 
    MOV AX,DATA 
    MOV DS,AX 

    LEA DX,MSG1 
    MOV AH,9 
    INT 21H 

    MOV AH,1 
    INT 21H 
    SUB AL,30H 
    MOV NUM1,AL 

    LEA DX,MSG2 
    MOV AH,9 
    INT 21H 

    MOV AH,1 
    INT 21H 
    SUB AL,30H 
    MOV NUM2,AL 

    MUL NUM1 

    MOV RESULT,AL 
    AAM 

    ADD AH,30H 
    ADD AL,30H 

    MOV BX,AX 

    LEA DX,MSG3 
    MOV AH,9 
    INT 21H 

    MOV AH,2 
    MOV DL,BH 
    INT 21H 

    MOV AH,2 
    MOV DL,BL 
    INT 21H 

    MOV AH,4CH 
    INT 21H 
ENDS 
END START 
+0

今後、画像ではなく*テキスト*としてエラーメッセージを投稿してください。そうすれば、それは検索可能であり、また視覚障害のあるユーザーが読むこともできます。 –

+0

サイドコメント - MASM 6.11(ML.EXE)のコピーを入手することをお勧めします。それはいくつかの新しい機能を追加します:[MASM 5.1 to 6.1 pdf](http://faculty.kfupm.edu.sa/coe/mudawar/coe205/manuals/MASMProgrGuide/A-DifferencesMASM.pdf) – rcgldr

答えて

2

次のようにMASM SEGMENTディレクティブのシグネチャは次のとおりです。

name SEGMENT [[READONLY]] [[align]] [[combine]] [[use]] [[characteristics]] ALIAS(string) [['class']] 
    statements 
name ENDS 

だからあなたのコードは、アセンブラによって記載されている2つのエラーが含まれています:

DATA SEGMENT 
    NUM1 DB ? 
    ... 
ENDS  ; This line should be: DATA ENDS 

CODE SEGMENT 
    ASSUME DS:DATA,CS:CODE 
    START: 
    ... 
ENDS  ; This line should be: CODE ENDS 

ですから、 `ENDS」ディレクティブの前にそれぞれの名前を欠落していた、それがすべてです。

+0

ありがとうございます@ zx485。結構。マスムの後、私はこのような "LINK:warning L4021:no stack segment"というようなLINKコマンドに関する警告に遭遇しました。これをどのように解決すればよいですか? – user7362809

+0

@ user7362809この回答が有用な場合は、灰色のチェックマーク✔をクリックして受け入れる必要があります(灰色のチェックマーク✔は回答の左上にあります)。 –

+1

これは別の質問ですが、[これはあなたに役立ちます](http://www.masmforum.com/board/index.php?PHPSESSID=786dd40407172108b65a5a36b09c88c0&topic=11022.0)。したがって、解決策は、「スタックセグメントのスタック」「スタック」 dw 256 dup(?) STACK ENDS'です。 – zx485

関連する問題