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
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
Livres en rapport
|
Derniers Blogs
SQL SERVER : PHP ET SQL SERVERSQL SERVER : PHP ET SQL SERVER par christian
Juste une petite synthèse sur les possibilités de connecter une application PHP sur un serveur SQL Server. Non pas que je me sois reconverti en développeur PHP, mais je constate qu'actuellement il est très difficile dans un environnement PHP et partic...
Cliquez pour lire la suite de l'article par christian [TECHDAYS 2010] WINDOWS AZURE APPFABRIC (CLO305)[TECHDAYS 2010] WINDOWS AZURE APPFABRIC (CLO305) par NeuroCypher
Les webcasts sont désormais en ligne, je me décide donc à écrire ce post. J'ai encore eu la chance d'animer une session aux TechDays cette année. Le sujet : le même que l'année dernière, ou plutôt son évolution. En effet, l'année dernière la couche de com...
Cliquez pour lire la suite de l'article par NeuroCypher OUTILS D'IMPORT AVEC MISE à JOUR DANS MICROSOFT DYNAMICS CRMOUTILS D'IMPORT AVEC MISE à JOUR DANS MICROSOFT DYNAMICS CRM par bianca
Problématique
Si vous avez besoin d'exporter sous Excel une liste de comptes ou de contacts dans le but de faire des retouches à droite à gauche puis de réinjecter le tout dans CRM, vous ne pouvez pas vous en...
Cliquez pour lire la suite de l'article par bianca SQL SERVER : DéVELOPPER UN ADDON POUR SQL SERVER MANAGEMENT STUDIO (SSMS)SQL SERVER : DéVELOPPER UN ADDON POUR SQL SERVER MANAGEMENT STUDIO (SSMS) par christian
Pour celles et ceux qui aiment SQL Server et on l'âme de développeur (ou sont tout simplement développeur) et veulent étendre les fonctionnalités de SQL Server, voici un article qui devrait pouvoir un intéresser.
Certes ce dernier est écrit sur u...
Cliquez pour lire la suite de l'article par christian EDITEUR XAML DE VISUAL STUDIO: COMMENT ALIGNER LES ATTRIBUTS LES UNS EN DESSOUS DES AUTRES AUTOMATIQUEMENTEDITEUR XAML DE VISUAL STUDIO: COMMENT ALIGNER LES ATTRIBUTS LES UNS EN DESSOUS DES AUTRES AUTOMATIQUEMENT par Miiitch
Lorsque l'on écrit du XAML, les tags XML peuvent vraiment devenir très longs et pas pratique à lire: Il y a une option vraiment pratique dans l'éditeur de Visual Studio qui va nous permettre de réorganiser tout cela en mettant les attributs XAML les uns e...
Cliquez pour lire la suite de l'article par Miiitch
Logiciels
Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods Konvertor (4.00)KONVERTOR (4.00)Le logiciel est un gestionnaire multimedia affichant, jouant et convertissant plus de 2000 format... Cliquez pour télécharger Konvertor
|