2012-09-16 1 views
0

J'ai déjà le programme qui prend les entrées du clavier et l'imprimer sur l'écran mais j'ai mal à comprendre quelques lignes de code,La prise d'entrée du clavier à l'Assemblée (TASM)

ici est le code,

 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 

Pourquoi nous avons d'abord déplacé 21 octets de taille dans SNAME ???? Comment le résultat du service d'interruption d'entrée clavier est-il automatiquement stocké dans SNAME au lieu de AL ???

+0

Vous attendez l'entrée dans AL si vous appelez 1H (pour lire un caractère du périphérique d'entrée). Ici, vous imprimez une chaîne sur le périphérique de sortie standard (9H), puis vous lisez une chaîne à partir du périphérique d'entrée standard (0AH), puis vous imprimez l'entrée reçue. – martincho

+0

Pourquoi nous avons d'abord déplacé 21 octets de taille dans SNAME ?? – micheller

Répondre

2

Vérifiez votre référence de fonction MSDOS préférée.

Vous pouvez y trouver this:

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 

Ainsi, 21 définit le nombre maximal de caractères que vous pouvez lire à partir du clavier dans la mémoire tampon.

Comme pour "How Result of Keyboard input interrupt service automatically stored in SNAME instead of AL ???", la question n'est pas claire.

+0

Je veux dire comment le dos sait que le clavier doit être assigné au Variable SNAME, s'il y avait plus d'une variable qui serait-elle assignée? – micheller

+0

Que voulez-vous dire par comment? Vous donnez à DOS l'adresse de SNAME et l'utilise pour écrire, sans surprise, SNAME. –

Questions connexes