0

皆さん、こんにちは。私はこの言語を初めて使用します。入力 ABC を受け入れて ABC を返すように変更したコードを次に示しますが、ABB を返します。AH,BH と Ax,Bx で試してみましたが、さらに悪化しました。これを修正するにはどうすればよいですか (今のところ、先生は MOV、INT、LEA、およびここのコードにあるものに固執することを望んでいます)。ヒントと答えをありがとう

.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
4

2 に答える 2

1

14 行目で 3 番目の文字を DL に保存しますが、後で ODH と OAH を DL に割り当てることでこの値を失います。解決策は簡単です。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 を選択しました。

于 2016-07-12T14:36:38.323 に答える