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
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
prob mode protégé pour graphisme [ par prunkdump ]
Bonjours afin de testé un de mes programmes qui passe en mode protégé j'ai éssayé de renplir en 32bits le buffer d'écran en mode graphique 13h. Au déb
Affichage caractere par caractere d'une variable DT [ par Eclipz ]
BonjourVoila, un souci en MASM, j'ai une variable nommée Resultat de type DT et je voudrais afficher, caractere par caractere, son résultat... le prob
Image jpg en Masm32 [ par phoenix1969asm ]
Tout d'abord Merci pour l'aide que vous allez m'apporterje debute est je dois dire que je nage un peu ...je souhaiterai afficher une image Jpg de mani
MASM32 et les types enumération. [ par frobinet ]
Bonjour,comment peut on traduire la séquence suivante qui provient du C en language assembleur MASM32 :enum enum_field_types { FIELD_TYPE_DECIMAL, FIE
Livres en rapport
|
Derniers Blogs
TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Arnault Nouvel et Antoine Dongois Le processus à prendre : Apprendre (découvrir la plateforme) Préparer (documenter l'historique et choisir la méthode de MAJ) Test (Test de MAJ) Implémenter (Effectuer la MAJ) Valid...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : PIC 16F84RE : PIC 16F84 par pont
Cliquez pour lire la suite par pont RE : PIC 16F84RE : PIC 16F84 par belounis
Cliquez pour lire la suite par belounis RE : PIC 16F84RE : PIC 16F84 par pont
Cliquez pour lire la suite par pont
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|