ASM-Noob braucht Hilfe: Win32String CharFürChar ausgeben...

Hier könnt ihr sowohl zur x86 Architektur als auch zu Win32ASM Fragen stellen.

Moderatoren: crack, Krüsty, Marwin

ASM-Noob braucht Hilfe: Win32String CharFürChar ausgeben...

Beitragvon iF » Mittwoch 24. August 2005, 16:07

Ich bin in ASM nicht sehr firm - und habe oft mit den einfachsten Dingen so meine Probleme.

Ich übergebe an eine in ASM geschriebene DLLFunktion eine Speicherbereichsadresse - funzt auch super - ich lasse einfach mittels API den String im Speicher anzeigen.

Nur wie kann ich innerhalb einer Schleife Char für Char (Byte für Byte) aus dem Speicher erhalten.

Könnte jemand die Proc mit einem einfachen Handgriff derart umprogrammieren das invoke TextOut nicht den String im Speicher - sondern Char für Char auf den Bildschirm schreibt?

Eigendlich will ich nur wissen wie ich den Wert eines einzelnen Bytes eines Speichers bekomme.

Code: Alles auswählen
proc __dispSrcMem //xprofansource

   AsmStart disp //xprofansource
   parameters %hdc,sfnt&,mem#,1 //xprofansource
   
   .data
   
   ;data   db   "Hallo",0
   
   .code
   
   data dd 333,444,555,666 ;Hier 4 Longint's
   
   mov edx,para3   
   mov ebx,para4   
   
   mov eax,0   
   
   .while eax<ebx
   
      push eax
      push ebx
      
      mov eax,data ; falsch
      lea edx,data ; falsch
      mov eax,[edx+1] ;falsch
            
      invoke TextOut,para1,0,0,eax,1 ;funzt deshalb net :(
      
      pop ebx
      pop eax
   
      inc eax      
   
   .endw
   
   invoke TextOut,para1,10,50,para3,para4 ; klappt - aber in der schleife soll's ja klappen :)
   
   AsmEnd //xprofansource

endproc //xprofansource


Vielen Dank!
Salve, iF.
iF
Newbie
 
Beiträge: 2
Registriert: Mittwoch 24. August 2005, 15:44
Wohnort: Berlin

Beitragvon crack » Donnerstag 25. August 2005, 15:31

du könntest DS:ESI mit dem Segmen:Offset des auszulesenden Speicherbereiches laden und mit LODSB dann Byte für Byte auslesen...
in 'Kauderwelsch' sähe das ungefähr so aus:

....
mov esi, offset 'Bereich'
mov ecx,'länge des Bereichs'
X1: lodsb
invoke 'anzeigeroutine'
loop X1
....


so oder ähnlich könnte das funktionieren...
mit freundlichen grüssen,
with best regards,

crack
Benutzeravatar
crack
Administrator
 
Beiträge: 280
Registriert: Dienstag 21. Dezember 2004, 15:02
Wohnort: 53783 Eitorf

Beitragvon iF » Donnerstag 25. August 2005, 15:47

Ich habe mir damit beholfen:
Code: Alles auswählen
mov al,[edx+eax]
mov [edx],al
:roll:
Salve, iF.
iF
Newbie
 
Beiträge: 2
Registriert: Mittwoch 24. August 2005, 15:44
Wohnort: Berlin

Beitragvon crack » Donnerstag 25. August 2005, 15:58

egal wie oder womit, hauptsache: Ziel erreicht :wink:
mit freundlichen grüssen,
with best regards,

crack
Benutzeravatar
crack
Administrator
 
Beiträge: 280
Registriert: Dienstag 21. Dezember 2004, 15:02
Wohnort: 53783 Eitorf


Zurück zu Assembler

 


  • { RELATED_TOPICS }
    Antworten
    Zugriffe
    Letzter Beitrag

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]

cron