Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : EAX=-val2+7-val3+val1 [ Archives / Newbii ] (rhumsek)

lundi 2 août 2004 à 22:57:58 | EAX=-val2+7-val3+val1

rhumsek

voici un programme qui doit donné un résultat en fonction de la formule suivante,
mais je ne suis pas sur que le résultat obtenu après compilation du programme soit le bon résultat??
TITLE exprarith

;EAX=-val2+7-val3+val1

.386
.MODEL flat,stdcall
.STACK 4096
ExitProcess PROTO,dwExitCode:DWORD
DumpRegs PROTO

INCLUDE Irvine32.inc
.data
val1 SDWORD 8
val2 SDWORD -15
val3 SDWORD 20

.code
main PROC

mov eax,0
mov ebx,0
call dumpregs
mov eax,val2
neg eax
add eax,7
call dumpregs

mov ebx,val3
neg ebx
sub eax,ebx
call dumpregs

mov ebx,val1
add eax,ebx
call dumpregs

call dumpregs
exit
main ENDP
END main


rhumsek

mardi 3 août 2004 à 00:05:15 | Re : EAX=-val2+7-val3+val1

BruNews

Administrateur CodeS-SourceS
ben faut juste additionner et soustraire, c'est cela ?
Alors fais dans le simple.
C'est quoi tous ces 'dumpregs', servent a quoi ?

.586
.model flat, stdcall
option casemap :none
option prologue:none
option epilogue:none

include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc

includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib

.data
val1 DD 8
val2 DD -15
val3 DD 20
szbuff DB 24 dup(0)
szappname DB "Test",0

.code
start:
ALIGN 4
mov eax, val2
neg eax
add eax, 7
sub eax, val3
add eax, val1
mov ecx, offset szbuff
call itoa
push 0
push offset szappname
push offset szbuff
push 0
call MessageBox

progEnd:
push 0
call ExitProcess

itoa PROC ; IN: EAX = INT32, ECX = *psz
push edi
test eax, eax
mov edi, ecx
jnz short noZero
lea eax, [ecx+1]
mov byte ptr[ecx], '0'
pop edi
mov byte ptr[eax], 0
ret 0
noZero:
jge short supEgZero
mov byte ptr [edi], '-'
neg eax
inc edi
supEgZero:
push esi
mov ecx, eax
mov esi, edi
supZero:
mov eax, -858993459
mul ecx
mov eax, edx
shr eax, 3
mov edx, ecx
lea ecx, [eax+eax*4]
add ecx, ecx
sub edx, ecx
add dl, '0'
mov [edi], dl
mov ecx, eax
inc edi
test eax, eax
jnz short supZero
mov byte ptr[edi], 0
mov eax, edi
reverStr:
cmp esi, edi
jae i32toaExit
dec edi
mov cl, [esi]
mov dl, [edi]
mov [edi], cl
mov [esi], dl
inc esi
jmp short reverStr
i32toaExit:
pop esi
pop edi
ret 0
itoa ENDP

end start


ciao...
BruNews, Admin CS, MVP Visual C++

mardi 3 août 2004 à 22:19:24 | Re : EAX=-val2+7-val3+val1

rhumsek

peut tu m'expliqué ces ligne suivante que t'a écrit???

szbuff DB 24 dup(0)
szappname DB "Test",0


rhumsek

mardi 3 août 2004 à 22:28:48 | Re : EAX=-val2+7-val3+val1

BruNews

Administrateur CodeS-SourceS
segment .data (des donnees qu'on reserve pour faire simple).

szbuff DB 24 dup(0)
ici reserve 20 octets initialises a zero depuis l'offset 'szbuff'. Je prefixe par 'sz' pour String Zero, chaine a terminateur null, format employe par API Windows. Ces 20 octets peuvent etre employes a ce que tu veux entre temps, ils sont en lecture ecriture.

szappname DB "Test",0
dans le meme genre, 5 octets deja initialises avec des valeurs. Tu peux remarquer qu'il y a aussi le terminateur NULL.

ciao...
BruNews, Admin CS, MVP Visual C++

samedi 7 août 2004 à 17:37:28 | Re : EAX=-val2+7-val3+val1

vecchio56

Administrateur CodeS-SourceS
pour szbuff DB 24 dup(0), dis plutot 24 octets sinon il va pas comprendre
dumpregs: Affiche les registres a l'écran (Irvine32.inc)

mercredi 18 août 2004 à 07:50:00 | Re : EAX=-val2+7-val3+val1

Vermifuge

Là j'avoue que je comprend pas trop votre code de 4 pages pour un calcul simple comme ça. Moi j'aurais fais ça :

xor eax, eax
sub eax, val2
add eax, 7
sub eax, val3
add eax, val1



Tout simplement. Mais je me trompe peut-être, si oui, expliquez moi :)

@+
Vermi

mercredi 18 août 2004 à 10:37:37 | Re : EAX=-val2+7-val3+val1

BruNews

Administrateur CodeS-SourceS
tu ne te trompes pas, on amis la meme chose.
En haut seulement affichage MessageBox en plus.

ciao...
BruNews, Admin CS, MVP Visual C++

mercredi 18 août 2004 à 10:40:15 | Re : EAX=-val2+7-val3+val1

Vermifuge

Oui, pardon, j'avais pas remarquer. C'était + simple d'utiliser un wsprintf lol

@+
Vermi

mercredi 18 août 2004 à 10:44:13 | Re : EAX=-val2+7-val3+val1

BruNews

Administrateur CodeS-SourceS
Mais tellement plus lent.

ciao...
BruNews, Admin CS, MVP Visual C++

mercredi 18 août 2004 à 10:50:23 | Re : EAX=-val2+7-val3+val1

Vermifuge

rooo, tout de suite ^^ mais non voyont, Windows est une système en ASM Optimisé PTDR.

De toute façon, on peut se permettre d'être lent, si on est pas imparti par le temps, parce que même en ASM lent, on est + rapide que le C++ rapide ^^

@+
Vermi


1 2

Cette discussion est classé dans : eax, val2, ebx, dumpregs, val3


Répondre à ce message

Sujets en rapport avec ce message

Probleme d'interuption [ par fresh_meat ] Salut,voila je suis un débutant en asm et j'ai un problème avec int 16h.Voici mon code :TITLE Add and Subtract (AddSubAlt.asm).386.MODEL Différences ??? [ par Arecibo ] Voila je debute en assembleur et j'aimerais savoir quelles sont les différences entre :-> mov eax, ebx et mov eax, [ebx]-> mov esi, eax et mov [esi], j'ai un prob avec mon buffer ; ya pas d'amuses gueules (masm32) [ par papiboff ] bj si je mets le buffer "somme " en dd avec charge eax et que j'ajoute deux 'dec ebx ' , ben , marche pas correctement ; (pêrqué ???? = en french) sv inverser une chaine [ par MrdJack ] salut, je suis sur un projet de calculatrice me permettant de faire des calculs avec des nombres tres grands. chaque nombre est stocké dans la memoire [linux] read and open [ par sheorogath ] Bonjour,je débute un peu en assembleur et j'essaie de faire un programme qui lit le début d'un fichier dont le nom est entré par l'utilisateur.Voici l Petit problème pour comparer (cmp) [ par smok1360 ] Bonjour à tous,Pour commencer, j'espère de ne pas avoir choisis le mauvais lieu pour poster, j'ai un petit peu hésité Donc, j'ai décidé d'apprendre l' Aligner des données pour le SSE [ par epineurien ] Bonjour à tous !J'ai un petit problème avec du code dont je mesure la vitesse: suivant la compilation, la vitesse varie du simple au double .J'expliqu "MOV WORD, EBX" Comment faire ? [ par Nowid50 ] Bonjour,Je suis débtant en assembleur et après quelques recherches, je ne trouve pas mon bonheur.Mon application requiert que je face l'instruction su 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 : AT&T erreur de compilation etc... [ par maminovadu75 ] Bonjour, j'aimerais me mettre a l'assembleur mais j'ai quelque problème.voici mon code morceau de code pour trier un tableau de int : ( mélange de C/C


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,359 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.