Function et assembleur de delphi [Résolu]

Messages postés
243
Date d'inscription
lundi 30 octobre 2000
Statut
Membre
Dernière intervention
15 juillet 2013
- - Dernière réponse : cs_ManChesTer
Messages postés
378
Date d'inscription
vendredi 20 octobre 2000
Statut
Modérateur
Dernière intervention
11 décembre 2013
- 6 juil. 2005 à 20:24
Bonjour,
j'ai un souci avec l'assembleur.

J'ai un type TMyType=array[0..100] of byte;
et une fonction :

Function Calcul(a,b:TMyType):TMyType;assembler;
asm
end;

Et je n'arrive pas en assembleur à récupérer les deux tableaux et à remplir le résultat de la fonction avec mes valeurs.
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1
3
Merci
salut,

Function Calcul(a,b:TMyType):TMyType;assembler;
asm
mov esi,a ; esi = adresse du tableau a
mov edi,b ; edi = adresse du tableau b
mov al,[esi] ; al = a[0]
mov cl,[edi+1] ; cl = b[1]
add al,cl ; al = a[0]+b[1]
mov [edi],al ; b[0] = a[0] + b[1]
mov Calcul,edi ; on retourne b[]
end;

@++

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 198 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_patatalo
Messages postés
552
Date d'inscription
jeudi 28 novembre 2002
Statut
Membre
Dernière intervention
26 mars 2016
1
0
Merci
Salut,
l'assembleur de delphi est un assembleur ......delphi.Ce qui veut dire , poser la question de sa syntaxe sur un forum delphi pour avoir une réponse.
ToutEnMasm
Commenter la réponse de ToutEnMasm
Messages postés
243
Date d'inscription
lundi 30 octobre 2000
Statut
Membre
Dernière intervention
15 juillet 2013
0
Merci
Merci bien de cette réponse, mais je l'ai déjà posé dans delphifr mais on me répond que c'est plus de l'assembleur que du delphi...
Alors je demande aux deux en parallèle en espérant une réponse dans l'un comme dans l'autre...
c
barbichette
Commenter la réponse de cs_barbichette
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
0
Merci
si c'est de l'asm normal:
myvar DB 100 dup(0)

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
Messages postés
378
Date d'inscription
vendredi 20 octobre 2000
Statut
Modérateur
Dernière intervention
11 décembre 2013
0
Merci
En + fonctionel, et en delphi dans le texte, ca donne :

unit pcalcasm;


interface


uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;


type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;


var
Form1: TForm1;


Type TMyType=array[0..100] of byte;


implementation


{$R *.dfm}


Function Calcul(a,b:TMyType;size:Integer):TMyType;assembler;
asm
Push esi
Push ebx
mov esi,result
@NextByte:
mov bl,Byte[eax+ecx]
add bl,Byte[edx+ecx]
mov byte ptr([esi+ecx]),bl
loop @NextByte
pop edx
pop esi
end;


procedure TForm1.Button1Click(Sender: TObject);
var j : Integer;
a,b,c : TmyType;
begin
for j:=0 to 100 do
begin
a[j]:=j;
b[j]:=j+10;
end;
c:=Calcul(a,b,sizeof(TmyType));
for j:=0 to 100 do
Memo1.Lines.Add(Inttostr(a[j])+'+'+Inttostr(b[j])+'='+Inttostr(c[j]));
end;


end.

Bon Coding ....

ManChesTer.
Commenter la réponse de cs_ManChesTer
Messages postés
378
Date d'inscription
vendredi 20 octobre 2000
Statut
Modérateur
Dernière intervention
11 décembre 2013
0
Merci
oupps, faut lire :


Function Calcul(a,b:TMyType;size:Integer):TMyType;assembler;
asm
Push esi
Push ebx
mov esi,result
@NextByte:
mov bl,Byte[eax+ecx]
add bl,Byte[edx+ecx]
mov byte ptr([esi+ecx]),bl
loop @NextByte
pop ebx // et non edx
pop esi
end;

Bon Coding ....

ManChesTer.
Commenter la réponse de cs_ManChesTer