2016-07-12 13 views
0

皆さん、こんにちは皆、私はこの言語を使い慣れていませんし、入力したABCを受け入れてABCを返すべきですが、ABBを返します。私はAH、BH、そしてAxでそれを試しました、Bxは悪化します。私はこれをどのように変更するのですか(教師はMOV、INT、LEAに固執することを望んでいます。ヒントに感謝し、ライン14でemu8086アセンブリ入力3文字で入力

.MODEL SMALL 
    .STACK 100H 
    .CODE 
    MOV AH, 01H ; Character input with echo 
    INT 21H ; Character in AL 
    MOV BL, AL ; Save in BL  

    MOV AH, 01H ; Character input with echo 
    INT 21H ; Character in AL 
    MOV CL, AL ; Save in CL 

    MOV AH, 01H ; Character input with echo 
    INT 21H ; Character in AL 
    MOV DL, AL ; Save in DL 

    MOV AH, 02H ; Display character function  

    MOV DL, 0DH ; carriage return 
    INT 21H 

    MOV DL, 0AH ; line feed 
    INT 21H 

    MOV DL, BL ; Get character stored in BL and display 
    INT 21H 
    MOV DL, CL ; Get character stored in CL and display 
    INT 21H 
    MOV DL, DL ; Get character stored in DL and display 
    INT 21H 

    MOV AH, 4CH 
    INT 21H 
    END 
+2

ヒント:デバッグ方法を学びます。コードをステップ実行し、レジスタ値を監視します。 –

答えて

1

に答えて、あなたはDLで3番目の文字を保存し、しかし、後で、あなたはDLにODHとOAHを割り当てることによって、この値を失います。解決方法は簡単です:3番目の文字をDLの代わりに別のレジスタに格納します。たとえば、CHの場合はDLの代わりにCHを表示します(矢印< ==============変更):

.MODEL SMALL 
    .STACK 100H 
    .CODE 
    MOV AH, 01H ; Character input with echo 
    INT 21H ; Character in AL 
    MOV BL, AL ; Save in BL  

    MOV AH, 01H ; Character input with echo 
    INT 21H ; Character in AL 
    MOV CL, AL ; Save in CL 

    MOV AH, 01H ; Character input with echo 
    INT 21H ; Character in AL 
; MOV DL, AL ; Save in DL 
    MOV CH, AL ; <============================ 

    MOV AH, 02H ; Display character function  

    MOV DL, 0DH ; carriage return 
    INT 21H 

    MOV DL, 0AH ; line feed 
    INT 21H 

    MOV DL, BL ; Get character stored in BL and display 
    INT 21H 
    MOV DL, CL ; Get character stored in BL and display 
    INT 21H 
; MOV DL, DL ; Get character stored in BL and display 
    MOV DL, CH ; <============================ 
    INT 21H 

    MOV AH, 4CH 
    INT 21H 
    END 

コードで使用されていないレジスタなのでCHを選択しました。

+0

私はBxを使うことができませんでした。本当にありがとう。ここからコードを完成させてください。返信jose – user3410855

+0

@ user3410855のお返事ありがとうございました。回答が有用な場合は、チェックマークをクリックして受け付けてください^_º –