| 
| Autor | Beitrag |  
| MagicRain 
          Beiträge: 154
 
 WinXp, Win8, iOS
 Delphi 7, Lazarus Pascal, Delphi 10.2 Starter, NetBeans Java
 
 | 
Verfasst: Mi 22.07.09 23:43 
 
Hallo Leute ich habe leider ein problem hier mal mein code....so exception hab ich killed aber nun ..:S
 		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 
 | procedure TForm1.Button1Click(Sender: TObject);var
 A, i ,buff : Integer;
 text : String;
 begin
 A := 0;
 buff := 0;
 text := edit1.Text;
 for i := 1 to Length(text) do
 A := Ord(text[i]);
 asm
 MOV EAX, A
 add eax,eax
 mov buff, EAX
 end;
 Edit2.Text := IntToStr(buff);
 end;
 |  Mein fehler....
 Also er packt das add nicht in den loop ka wieso....schau hier...
 		                       Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 
 | 00465FE1  |.  BA 01000000   MOV EDX,100465FE6  |>  8B4D F4       /MOV ECX,DWORD PTR SS:[EBP-C]
 00465FE9  |.  0FB74C51 FE   |MOVZX ECX,WORD PTR DS:[ECX+EDX*2-2] ;//Ord(text[i]);
 00465FEE  |.  894D FC       |MOV DWORD PTR SS:[EBP-4],ECX       ;//mov buff,eax
 00465FF1  |.  42            |INC EDX
 00465FF2  |.  48            |DEC EAX
 00465FF3  |.^ 75 F1         \JNZ SHORT 00465FE6
 00465FF5  |>  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
 00465FF8  |.  01C0          ADD EAX,EAX  <<<<<<<<<< da is das add ?? wtf :(
 |  Ich hoffe jemand weiß was ich falsch gemacht habe und kann mir helfen alles klar bis dann... |  |  |  
| HelgeLange 
          Beiträge: 735
 Erhaltene Danke: 6
 
 Windows 7
 Delphi7 - Delphi XE
 
 | 
Verfasst: Mi 22.07.09 23:56 
 
weil Du den ASM Block nicht mit in die Schleife genommen hast, würde ich mal sagen. Versuch es mal mit Begin und End bei der Schleife... _________________ "Ich bin bekannt für meine Ironie. Aber auf den Gedanken, im Hafen von New York eine Freiheitsstatue zu errichten, wäre selbst ich nicht gekommen." - George Bernhard Shaw
 |  |  |  
| MagicRain  
          Beiträge: 154
 
 WinXp, Win8, iOS
 Delphi 7, Lazarus Pascal, Delphi 10.2 Starter, NetBeans Java
 
 | 
Verfasst: Do 23.07.09 00:18 
 
Danke das war es wohl fast....nur noch nicht ganz....
 		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 21:
 22:
 
 | procedure TForm1.Button1Click(Sender: TObject);var
 A, i ,buff : Integer;
 text : String;
 begin
 A := 0;
 buff := 0;
 text := edit1.Text;
 for i := 1 to Length(text) do
 begin
 A := Ord(text[i]);
 asm
 MOV EAX, A
 add eax,eax
 mov buff, EAX
 end;
 end;
 Edit2.Text := IntToStr(buff);
 end;
 |  		                       Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 
 | 00465FE3  |.  B9 01000000   MOV ECX,100465FE8  |>  8B45 F4       /MOV EAX,DWORD PTR SS:[EBP-C]
 00465FEB  |.  0FB74448 FE   |MOVZX EAX,WORD PTR DS:[EAX+ECX*2-2]
 00465FF0  |.  8945 FC       |MOV DWORD PTR SS:[EBP-4],EAX
 00465FF3  |.  8B45 FC       |MOV EAX,DWORD PTR SS:[EBP-4]
 00465FF6  |.  01C0          |ADD EAX,EAX <<<<<<<<<<<<<< müsste wohl eine zeile höher ?!?!?
 00465FF8  |.  8945 F8       |MOV DWORD PTR SS:[EBP-8],EAX
 00465FFB  |.  41            |INC ECX
 00465FFC  |.  4A            |DEC EDX
 00465FFD  |.^ 75 E9         \JNZ SHORT 00465FE8
 |  Also was hab ich vor das sollte ich euch vlt mal sagen hehe..
 ich will einfach jedes ascii char von dem text addieren also zb 
 		                       Quelltext 
 									| 1:2:
 3:
 4:
 5:
 
 | text = hallohallo = 68 61 6C 6C 6F
 == 68 + 61 + 6C + 6C + 6F = 210 == 528 <<< valid!
 
 also müsste die schleife jedes zeichen einlesen Ord(text[i]) und addieren ADD EAX,EAX....
 |  |  |  |  
| HelgeLange 
          Beiträge: 735
 Erhaltene Danke: 6
 
 Windows 7
 Delphi7 - Delphi XE
 
 | 
Verfasst: Do 23.07.09 00:36 
 
Naja, dazu musst Du aber auch den inhalt von Buff mal zum Addieren benutzen. Du schiebst ja nur den inhalt von A in EAX, addierst dann EAX zu EAX (= 2*EAX) und legst es dann in Buff ab, was den vorhergehenden Wert überschreibt...
Schrteib Dir Buff in EDX oder so und addierst dann EAX mit EDX und scheibst das dann wieder in Buff...
 _________________ "Ich bin bekannt für meine Ironie. Aber auf den Gedanken, im Hafen von New York eine Freiheitsstatue zu errichten, wäre selbst ich nicht gekommen." - George Bernhard Shaw
 |  |  |  
| MagicRain  
          Beiträge: 154
 
 WinXp, Win8, iOS
 Delphi 7, Lazarus Pascal, Delphi 10.2 Starter, NetBeans Java
 
 | 
Verfasst: Do 23.07.09 00:53 
 |  |  |  
| HelgeLange 
          Beiträge: 735
 Erhaltene Danke: 6
 
 Windows 7
 Delphi7 - Delphi XE
 
 | 
Verfasst: Do 23.07.09 01:56 
 
Ich glaube, Du weisst garnicht, was Du wirklich machst.
 Schreib es doch einfach in Delphi, wenn Du kein Assembler kannst.    ich schreib Dir mal, was Du machst, es ist ein Logik-Fehler...
 		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 
 | for i := 1 to Length(text) dobegin
 A := Ord(text[i]);
 asm
 MOV EAX, A                  mov buff, EAX               mov edx, buff               add eax,edx                 mov buff,eax              end;
 | _________________ "Ich bin bekannt für meine Ironie. Aber auf den Gedanken, im Hafen von New York eine Freiheitsstatue zu errichten, wäre selbst ich nicht gekommen." - George Bernhard Shaw
 |  |  |  
| uall@ogc 
          Beiträge: 1826
 Erhaltene Danke: 11
 
 Win 2000 & VMware
 Delphi 3 Prof, Delphi 7 Prof
 
 | 
Verfasst: Do 23.07.09 06:20 
 
		                       Delphi-Quelltext 
 									| 1:2:
 3:
 
 | buf := 0;for i := 1 to Length(text) do
 buf := buf + Ord(text[i]);
 | _________________ wer andern eine grube gräbt hat ein grubengrabgerät
 - oder einfach zu viel zeit
 |  |  |  
| BenBE 
          Beiträge: 8721
 Erhaltene Danke: 191
 
 Win95, Win98SE, Win2K, WinXP
 D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
 
 | 
Verfasst: Do 23.07.09 06:46 
 
		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 
 | asmPUSH    ESI
 XOR     EAX, EAX
 MOV     ESI, DWORD PTR [Text]
 TEST    ESI, ESI
 JZ      @@e
 MOV     ECX, DWORD PTR [ESI - 4]
 @@l:
 MOVZX   EDX, BYTE PTR [ESI]
 ADD     EAX, EDX
 INC     ESI
 DEC     ECX
 JNZ     @@l
 @@e:
 POP     ESI
 MOV     DWORD PTR [Buff], EAX
 end;
 |  Schleife ist gleich drin ... Aber wie die Vorredner schon sagten: Ohne ASM-Kenntnisse sollte man das nicht verwenden._________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
 |  |  |  
| Marc. 
          Beiträge: 1876
 Erhaltene Danke: 129
 
 Win 8.1, Xubuntu 15.10
 
 
 | 
Verfasst: Do 23.07.09 12:45 
 |  |  |  
| BenBE 
          Beiträge: 8721
 Erhaltene Danke: 191
 
 Win95, Win98SE, Win2K, WinXP
 D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
 
 | 
Verfasst: Do 23.07.09 13:00 
 
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
 |  |  |  
| Marc. 
          Beiträge: 1876
 Erhaltene Danke: 129
 
 Win 8.1, Xubuntu 15.10
 
 
 | 
Verfasst: Do 23.07.09 13:15 
 
	  |  BenBE hat folgendes geschrieben  : |  	  | Ähem!!! So redundant ist nicht mal Unicode! | 
 Ähhhm... ich meinte natürlich je 16 und 8 Bit respektive 2 oder 1 Byte.    Edit: Tags repariert ... 
 Zuletzt bearbeitet von Marc. am Do 23.07.09 19:15, insgesamt 7-mal bearbeitet
 |  |  |  
| MagicRain  
          Beiträge: 154
 
 WinXp, Win8, iOS
 Delphi 7, Lazarus Pascal, Delphi 10.2 Starter, NetBeans Java
 
 | 
Verfasst: Do 23.07.09 18:48 
 
Alles klar DANKE EUCH   |  |  |  
| HelgeLange 
          Beiträge: 735
 Erhaltene Danke: 6
 
 Windows 7
 Delphi7 - Delphi XE
 
 | 
Verfasst: Do 23.07.09 19:06 
 
@ BenBE & Marc. : Interessant-Faktor 10+, Lernfaktor -2
 Wenn ich ihm hätte die Lösung hinschreiben wollen, hätte ich das gemacht, ich wollte, dass er den Fehler selbst versteht.  _________________ "Ich bin bekannt für meine Ironie. Aber auf den Gedanken, im Hafen von New York eine Freiheitsstatue zu errichten, wäre selbst ich nicht gekommen." - George Bernhard Shaw
 |  |  |  
| Marc. 
          Beiträge: 1876
 Erhaltene Danke: 129
 
 Win 8.1, Xubuntu 15.10
 
 
 | 
Verfasst: Do 23.07.09 19:27 
 |  |  |  
| MagicRain  
          Beiträge: 154
 
 WinXp, Win8, iOS
 Delphi 7, Lazarus Pascal, Delphi 10.2 Starter, NetBeans Java
 
 | 
Verfasst: Do 23.07.09 19:44 
 
Habe es heute Morgen dann so gelöst...das bissel schlafen tat wohl doch gut   
 Zuletzt bearbeitet von MagicRain am Sa 25.07.09 03:35, insgesamt 1-mal bearbeitet
 |  |  |  
| uall@ogc 
          Beiträge: 1826
 Erhaltene Danke: 11
 
 Win 2000 & VMware
 Delphi 3 Prof, Delphi 7 Prof
 
 | 
Verfasst: Do 23.07.09 21:12 
 
Steht immer nochm im Raum warum du das unbedingt in Assembler haben willst. Meine Variante sollte genau dasselbe machen. _________________ wer andern eine grube gräbt hat ein grubengrabgerät
 - oder einfach zu viel zeit
 |  |  |  
| MagicRain  
          Beiträge: 154
 
 WinXp, Win8, iOS
 Delphi 7, Lazarus Pascal, Delphi 10.2 Starter, NetBeans Java
 
 | 
Verfasst: Do 23.07.09 21:15 
 
Hat nun nichts mit dem ADD zu tun hatte nur schon viele befehler auch in Schleifen die in Assembler waren wie ROL und sowas was ich dann irgendwie in Delphi hinbekommen musste..Also alles mehr Lehrn zwecke wollte einfach lernen endlich mit Delphi+ASM zurecht zu kommen und nun klaptt es hehe. danke |  |  |  
| Flamefire 
          Beiträge: 1207
 Erhaltene Danke: 31
 
 Win 10
 Delphi 2009 Pro, C++ (Visual Studio)
 
 | 
Verfasst: Do 23.07.09 21:57 
 
trotzdem: beschäftige dich erst mal intensiver mit programmieren allgemein.
solche fehler sollten nicht passieren.
 und dann auch noch inline asm probieren...
 
 BTW: das XOR EDX,EDX ist redundant--->weg damit
 |  |  |  
| MagicRain  
          Beiträge: 154
 
 WinXp, Win8, iOS
 Delphi 7, Lazarus Pascal, Delphi 10.2 Starter, NetBeans Java
 
 | 
Verfasst: Do 23.07.09 22:45 
 
Ach.. wenn ich das xor weg nehme läuft das app nicht weil iein shit wert in edx steckt ohne es...inlineasm rockz |  |  |  
| BenBE 
          Beiträge: 8721
 Erhaltene Danke: 191
 
 Win95, Win98SE, Win2K, WinXP
 D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
 
 | 
Verfasst: Do 23.07.09 23:17 
 
Kann mir sogar recht gut vorstellen, welcher Wert das ist    Aber WARUM mischst Du ASM und normalen Source? ENTWEDER man schreibt die gesamte Routine in ASM ODER man lässt es ganz. Mischen ist das schlimmste, was man tun kann. Zumal die Register-Belegungsregeln für gemischten Source mehr als kryptisch sind._________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
 |  |  |  |