0

キーボードからの入力を受け取り、それを画面に表示するプログラムを既に取得していますが、コードの数行を理解するのに問題があります。

ここにコードがあります、

     MOV DS, AX
      MOV ES, AX        ;Why Move AX content to ES ???

      MOV DX, OFFSET PNAME      ; PRINT NAME: 
      MOV AH, 09H               
      INT 21H                   


      MOV BYTE PTR SNAME, 21    

      MOV DX, OFFSET SNAME      
      MOV AH, 0AH
      INT 21H

      MOV SI, 0002              

      LEA DX, SNAME[SI]         ; PRINT NAME ENTERED
      MOV AH, 09H
      INT 21H

なぜ最初に 21 バイトのサイズを SNAME に移動するのか ???? キーボード入力割り込みサービスの結果が AL ではなく SNAME に自動的に格納される方法 ???

4

1 に答える 1

2

お気に入りの MSDOS 関数リファレンスを確認してください。

あなたはこれを見つけることができます:

Format of DOS input buffer:

Offset  Size    Description     (Table 01344)
00h    BYTE    maximum characters buffer can hold
01h    BYTE    (call) number of chars from last input which may be recalled
(ret) number of characters actually read, excluding CR
02h  N BYTEs   actual characters read, including the final carriage return

したがって、21 は、キーボードからバッファーに読み取ることができる最大文字数を設定します。

How Result of Keyboard input interrupt service automatically stored in SNAME instead of AL ???」については、質問が不明です。

于 2012-09-17T00:46:22.227 に答える