Avatar billede timelord Nybegynder
14. september 2005 - 08:49 Der er 7 kommentarer og
1 løsning

Inline assembler i C#

Hej

Jeg har et Delphi program hvor en procedure indeholder følgende asm kode:
        asm
                mov al, tmpCalCheckSum
                neg al
                and al, 01111111b
                mov tmpCalCheckSum, al
        end;

Hvordan klare jeg den i C#?
Findes der funktioner i C# som kan klare det samme eller er der andre muligheder?

Hvis jeg kalder procedure i Delphi hvor tmpCalCheckSum er 145 (byte), så returnere den værdien 111.

Jeg har prøvet at lave en DLL i Delphi og derefter kalde den fra C#, men den returnere bare 0. Men det kan jo være fordi jeg gør det forkert.
Avatar billede arne_v Ekspert
14. september 2005 - 09:14 #1
de nederste 7 bit af -145 er 111

jeg er ret sikker på at du ikke kan embedde native assembler i et C# program

det skal være:

C# managed kode ---(interop kald)---> Win32 DLL i C++ eller Delphi som bruger assembler

så jeg tror at du gør det forkert når den returnerer 0
Avatar billede timelord Nybegynder
14. september 2005 - 09:16 #2
Kan jeg gøre noget der ligner i C# for at få resultatet 111?
Finder der nogle kommandoer til at udføre den samme funktion som min assembler kode i C#

Det skal siges at jeg først startede med at programmere i C# den 1/8.
Avatar billede arne_v Ekspert
14. september 2005 - 09:18 #3
sagtens

int tmpCalCheckSum = 145;
tmpCalCheckSum = 0x7F & -tmpCalCheckSum;

burde gøre det
Avatar billede arne_v Ekspert
14. september 2005 - 09:19 #4
forudsat at jeg læser den assembler rigtigt (jeg lærte VAX assembler ikke
x86 assembler i sin tid)
Avatar billede timelord Nybegynder
14. september 2005 - 09:29 #5
Nu er det bare det at tmpCalCheckSum er en byte og ikke en int!!
Avatar billede arne_v Ekspert
14. september 2005 - 09:35 #6
byte tmpCalCheckSum = 145;
tmpCalCheckSum = (byte)(0x7F & -((int)tmpCalCheckSum));
Avatar billede timelord Nybegynder
14. september 2005 - 09:37 #7
Det var lige præcis det jeg ledte efter, takker mange gange.
Smid et svar så får du points!
Avatar billede arne_v Ekspert
14. september 2005 - 09:38 #8
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester