2010-04-11 6 views
3

J'essaie de lire une chaîne de l'utilisateur dans l'assemblage TASM, je sais que j'ai besoin d'un tampon pour contenir l'entrée, max. longueur et longueur réelle, mais il me semble oublié exactement comment nous déclarons un tamponLire une chaîne dans l'assemblage TASM x86

ma tentative était lissée comme ce

Buffer db 80 ;max length 
     db ? ;actual length 
     db 80 dup(0);i think here is my problem but can't remember the right format 

Merci à l'avance

Répondre

2

La directive DB (définir octet) est utilisé pour allouer des blocs de mémoire de taille octet. La section qui vient après le DB spécifie la valeur qui doit être placée dans la mémoire allouée. Par exemple, si vous voulez définir un seul octet de mémoire avec la valeur 65, vous pouvez utiliser la directive suivante.

SingleByte DB 65  ; allocate a single byte and write 65 into the byte 

La directive DUP (duplicate) est utilisée pour dupliquer une série de caractères. Les séries de caractères à dupliquer sont spécifiées dans les parenthèses qui suivent le DUP. Le nombre avant DUP spécifie le nombre de fois que la série de caractères doit être dupliquée. Par exemple, si vous voulez définir un bloc de mémoire de 10 octets où chaque octet a la valeur 65, vous pouvez utiliser la directive suivante.

TenBytes  DB 10 DUP(65); allocate 10 bytes and write 65 into each byte 

Dans votre cas, vous ne vous inquiétez pas ce que les valeurs sont stockées dans chaque octet dans le tampon à l'origine, de sorte que vous pouvez utiliser ? comme l'octet qui est dupliqué. Si vous souhaitez à la place initialiser chaque octet à zéro, vous pouvez remplacer ? par 0.

Buffer  DB 80 DUP(?) ; set aside 80 bytes without assigning them any values 

La longueur maximale et la longueur réelle du tampon doivent être gérées en utilisant des variables séparées. En tout, vous voulez probablement quelque chose de la nature suivante.

Buffer  DB 80 DUP(0) ; 80-byte buffer initialized to all zeros 
BufferMaxLen DB 80  ; maximum length of Buffer 
BufferLen DB 0   ; actual length of Buffer 
Questions connexes