Accueil > Forum > > > > masm32 buf variable
masm32 buf variable
vendredi 9 juin 2006 à 00:26:49 |
masm32 buf variable

skotmarud
|
bonsoir, j'ai un probleme pour créer un buffer à taille variable pourtant je suis tombé sur ce post :
http://www.asmfr.com/infomsg_MASM32-COMENT-DECLARER-BUFFET-VARIABLE_706529.aspx
mais j'ai rien compris, ça fait que deux semaines que je suis dans l'asm..
j'essai de faire comme ça pour pouvoir par la suite incrémenter ou décrémenter la taille du buffer :
---------------- .data
num dd 5
.data?
buf db num dup(?)
----------------
et a la compile il me dit "constant expected" constante prévue ??
si je fais
buf db addr num dup(?)
là où je l'utilise il me dit "undefined symbol"
symbole non défini !
pouvez vous m'aider s'il vous plait car dans ce cas je ne sais pas comment faire sans aide :-/ merci
|
|
vendredi 9 juin 2006 à 09:31:03 |
Re : masm32 buf variable

Nasman
|
Réponse acceptée !
Bonjour,
Je ne pense pas que ce type de déclarations puisse fonctionner pour les raisons suivantes: La section .data est la section des données initialisées - Qui ont donc des valeurs fixées au lancement du programme. Pour les données non initialisées, c'est une réservation d'espace qui est faite. Cette réservation est de taille donnée. De toute façon ton type de déclaration reviendrait à la même chose que: data num dd 5 .data? buf db 5 dup(?)
Le seul intérêt de ce que tu veux faire serait d'éviter de modifier dans les deux types de données à chaque fois que tu doives recompiler. Si la valeur de num est susceptible de varier au cours de l'exécution du programme, celà ne fonctionnera pas. Nota le programme exécutable remplace les adresses (offsets) par des valeurs en "dur". Si tu modifie la taille d'un buffer, tu décalerais les adresses de ce qui suit - il faudrait dans ce cas modifier les adresses en dur de la partie programme - et donc que la section programme soit writable. C'est pas impossible mais dangereux. Je te conseille plutôt de réserver l'espace pour ton buffer dans la pile. Par exemple
data num dd 5
code ... sub esp,num ;réserve 5 dword ... mov [esp],eax ;met le contenu de eax (par exemple) dans le buffer dont l'adresse est dans esp (vérifier que la valeur de esp pointe toujours bien sur l'emplacement du buffer). Après utilisation, libérer le buffer add esp,num
A+
|
|
vendredi 9 juin 2006 à 10:44:18 |
Re : masm32 buf variable

skotmarud
|
Bonjour Nasman
En fait l'intérêt de ce que je veux faire (une sorte de editbox au final) c'est pouvoir faire varier la taille du buffer qui receptionne les entrées clavier en une chaine de caractères affichée avec la fonction TextOut de l'api windows et donc effacer un caractère en decrémentant de 1 le buffer par la touche vk_back ou vk_delete qui serait bien mieux que de remplir le vide avec un espace, parceque même le caractère zero ça affiche un caratère apparemment inconnu !...
je vais creuser ton conseil et merci pour ces explications, je comprends maintenant pourquoi ma méthode ne peut fonctionner!
++
|
|
vendredi 9 juin 2006 à 13:06:13 |
Re : masm32 buf variable

Nasman
|
Rebonjour,
Si tu remplis le buffer avec les caractères saisis et augmente sa taille en conséquence (ou l'inverse) tu sera confronté au problème suivant si tu utilise la pile: Supposons que les caractères saisis soient "azerty". Ta pile va se remplir à l'envers soit en finale: y en [esp] t en [esp+1] r en [esp+2] e en [esp+3] z en [esp+4] a en [esp+5] La chaine sera donc enregistrée comme "ytreza" à partir de l'adresse pointée par[esp]. Ce ne sera pas très pratique pour la sortir avec TextOut. Dans ce cas il te faut décaler tous les octets du buffer (vers les adresses négatives) pour laisser une place vide pour mettre le caractère saisi suivant. - Et tu devras bien gérer tout octet placé sur la pile (avant le buffer - du point de vue des adresses).
Bon courage
|
|
vendredi 9 juin 2006 à 13:26:41 |
Re : masm32 buf variable
|
Cette discussion est classée dans : buffer, variable, num, buf, masm32
Répondre à ce message
Sujets en rapport avec ce message
Access violation et ecriture de variable [ par anthraxx ]
J'ai une question qui me traKsse avec MASM:quand je declare un tampon comme cela:buffer db 100 dup(0)et dans le code, j'essaye d'ecrire dedans, avec u
[NASM-Linux] Problème de buffer [ par yann2192 ]
Bonjour à tous, je me suis lancé dans l'assembleur 32bits avec les appels linux et j'ai un problème.Je récupére le chemin d'un fichier entrer par l'us
Masm32 - adressage direct - soucis ! [ par ouadji ]
Bonjour à tous,mov eax , [11223344h]cette instruction existe ! registre de segment utilisé ... DS ... par défaut !Code machine de cette instruction :
buffer directx [ par mana ]
bonjour, je travail avec des image dont l'adresse est un pointeur directx(dans la ram du pc , pas cette de la carte vidéo), mais l'accès a la mémoire
send db to bmp [ par vincent2795 ]
bonjour, j' ai un bmp que j' ai mais dans ma source sous forme "DB" je veux le sortir de ma source et le mettre dans un bmp. j' arrive a y sortire du
Partie haute et basse [ par noname001 ]
Bonjour à tous, voilà j'aurais essentiellement 2 questions: 1)J'ai un petit soucis concernant la partie haute et basse d'une variable. Imaginons qu
Impossible d'executer mon programme aprés la compilation (réussite) [ par kepon72 ]
Bonjour, Alors voila j'ai coder en asm un programme avec boite de dialogue je l'est compiler avec MASM32 en utilisant ce fichier .bat: [code=autre]@ec
probleme de simulation de 8086 sur ISIS PROTEUS [ par AZERGUI2 ]
Bonjour, j'ai généré le .exe du programme suivant par le MAMSM32 ,mais la simulation ça marche pas au niveau de ISIS PROTEUS !!! il s'agit de tro
Probléme USART sur un PIC 18F46k20 [ par leonidax86 ]
Bonjour, J'essaie de mettre au point une communication RS232 entre un PIC 18F46k20 et une IHM ( codé sous CVI). J'utilise la carte DEMO Board du PI
débutant qui a un prob avec l'int21h [ par sibi12 ]
salut voivi mon code : mov ah, 09h mov dx, offset buffer int 21hbuffer a été déclaré comme ca: buffer db 50 dup(0)le compilateur me met
Livres en rapport
|
Derniers Blogs
[TECHDAYS2012] OUI J'Y SERAI![TECHDAYS2012] OUI J'Y SERAI! par JeremyJeanson
Bonsoir, Certes, je l'annonce avec un peu de retard, mais je serai effectivement au Techdays demain. Comme l'an dernier, je participerai au programme ATE (Ask The Expert). Si vous avez des questions Workflow, WCF, AppFabric ou plus généralement .net, n'hé...
Cliquez pour lire la suite de l'article par JeremyJeanson TFS INTEGRATION TOOLS - SUIVI DES SYNCHRONISATIONS AVEC REPORTING SERVICESTFS INTEGRATION TOOLS - SUIVI DES SYNCHRONISATIONS AVEC REPORTING SERVICES par vfabing
Afin de s'assurer du bon fonctionnement des différentes synchronisations effectuées par les TFS Integration Tools, 2 rapports sont présents dès l'installation. Il suffit alors d'effectuer les manipulations suivantes pour pouvoir les visualiser : Loca...
Cliquez pour lire la suite de l'article par vfabing CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT)CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT) par FREMYCOMPANY
Bonjour à tous, Je viens de publier une proposition comprenant 5 pseudo-classes pour le CSS Working Group ayant trait à l'état de chargement d'un élément (ex: IMG,VIDEO,AUDIO,OBJECT pour l'HTML.). Si le c½ur vous en dit, vous pouvez retrouver cette p...
Cliquez pour lire la suite de l'article par FREMYCOMPANY MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ?MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ? par ROMELARD Fabrice
Formation initiale Durant la formation, le découpage classique est le suivant (je donnerai les équivalences Suisse lorsque je les connaîtrais) : Ecole primaire jusqu'au Collège : Formation générale permettant d'obtenir les méthodes...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice Y'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENTY'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENT par Aleks
Quand on a ce genre d'erreur sans log :
Et bas on a juste envie de choper le gas de Microsoft qu'a développé ça et lui foutre des baffes de Coboye ! ...
Cliquez pour lire la suite de l'article par Aleks
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|