begin process at 2010 02 09 23:52:24
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Assembleur

 > 

Archives

 > 

Newbii

 > 

EAX=-val2+7-val3+val1


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

EAX=-val2+7-val3+val1

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ée 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 [FASM]Traduction program C to ASM [ par The Red Man ] je suis completement new in ASM :J'aimerai savoir je pourrai traduire ce bout de C en ASM, j'ai essayé déjà ça compile pas avec :include "win32ax.inc" diffrerence entre (e)ax et ax , (e)bx et bx, ... [ par dyroj ] bonjour a tous,je suis en periode d'aprentissage du language assembleur et j'ai une petite quetion consernant le e (extented) devant le nom d'un regis en quel langage est ecrit ce programme [ par jedilu ] bonjouren quel language est ecrit ce programme car j'ai un probleme pour le lancermerci00629DE5   AE               SCAS BYTE PTR ES:[EDI]00629DE6   9E


Nos sponsors


Sondage...

Comparez les prix


HTC Hero

Entre 550€ et 550€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,624 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales