![]() |
Delphi-Assembler wie macht man ein "IF .. THEN ..."
Hi,
ich komm im Moment nicht weiter im "grünen" Bereich: :wink:
Delphi-Quellcode:
procedure DepthByte_To_AlphaByte(pData: Pointer; Size: Integer);
asm push ebx test edx,edx jz @@end @@loop : mov bl,[eax+0] // Blue Byte mov bh,[eax+1] // Green Byte mov cl,[eax+2] // Red Byte mov ch,[eax+3] // Alpha Byte // todo: // if Alpha > 0 then Alpha := 255; mov [eax+0],cl // Bits tauschen mov [eax+1],bh mov [eax+2],ch mov [eax+3],bl add eax, 4 sub edx, 4 jnle @@loop @@end: pop ebx end; |
Re: Delphi-Assembler wie macht man ein "IF .. THEN ...&
Delphi-Quellcode:
Meintest du das?
cmp ch, 0
jz @@Ahead mov ch, 255 @@Ahead: |
Re: Delphi-Assembler wie macht man ein "IF .. THEN ...&
Hallo,
per cmp oder test (hast du ja schon drin). ![]() dort nach "
Delphi-Quellcode:
" suchen.
bedingte Sprünge
Ein Trick ist, einfach das ganze mal per Delphi zu schreiben, und dann in der CPU-Ansicht den Assembler-Code anzusehen. Heiko |
Re: Delphi-Assembler wie macht man ein "IF .. THEN ...&
Vlt. hilft das ein wenig.
Zitat:
|
Re: Delphi-Assembler wie macht man ein "IF .. THEN ...&
@BdB danke, ich seh da zwar durch, (lesen ist ok) nur selbermachen geht sicht (asm code schreiben: :kotz: )
@Apollonius, ja das meine ich. "jz" ist aber glaube ich falsch. Sollte das nicht "jnz" sein ? :gruebel: |
Re: Delphi-Assembler wie macht man ein "IF .. THEN ...&
Wieso? Du kannst natürlich auch test ch, ch nehmen, aber das Resultat ist das gleiche und der Maschinencode auch nicht länger.
|
Re: Delphi-Assembler wie macht man ein "IF .. THEN ...&
Hatte mich vertippt, siehe oben.
Oder, habe ich mich verhauen in Code... ? :gruebel: |
Re: Delphi-Assembler wie macht man ein "IF .. THEN ...&
Du musst immer die gegensätzliche Bedingung zum Springen nehmen: Wenn ch = 0, dann tu nichts (= springe über die Anweisung).
|
Re: Delphi-Assembler wie macht man ein "IF .. THEN ...&
Sorry, simmt alles und klappt super.
Ich habe nur versucht etws zu Vergleichen was nicht da war. :mrgreen: :wall: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz