Function et assembleur de delphi [Résolu]

cs_barbichette 247 Messages postés lundi 30 octobre 2000Date d'inscription 15 juillet 2013 Dernière intervention - 15 juin 2005 à 16:32 - Dernière réponse : cs_ManChesTer 378 Messages postés vendredi 20 octobre 2000Date d'inscription 11 décembre 2013 Dernière intervention
- 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

Répondre au sujet
cs_patatalo 1466 Messages postés vendredi 2 janvier 2004Date d'inscription 14 février 2014 Dernière intervention - 21 juin 2005 à 12:35
+3
Utile
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;

@++
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_patatalo
ToutEnMasm 552 Messages postés jeudi 28 novembre 2002Date d'inscription 26 mars 2016 Dernière intervention - 15 juin 2005 à 18:07
0
Utile
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
cs_barbichette 247 Messages postés lundi 30 octobre 2000Date d'inscription 15 juillet 2013 Dernière intervention - 15 juin 2005 à 19:19
0
Utile
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
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 15 juin 2005 à 20:03
0
Utile
si c'est de l'asm normal:
myvar DB 100 dup(0)

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
cs_ManChesTer 378 Messages postés vendredi 20 octobre 2000Date d'inscription 11 décembre 2013 Dernière intervention - 6 juil. 2005 à 20:20
0
Utile
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
cs_ManChesTer 378 Messages postés vendredi 20 octobre 2000Date d'inscription 11 décembre 2013 Dernière intervention - 6 juil. 2005 à 20:24
0
Utile
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.