Register in String speichern



  • Hallo

    ich schreibe gerade in Assembler ein kleines Programm, welches ein paar einfache Rechnungen macht. Doch nun zu meinem Problem:Ich möchte die Endwerte (Ergebnisse) in einen String ablegen und dann per MessageBox darstellen. Wie kann man das realisieren? Vielen Dank für alle kommenden Antworten. 🙂 🙂

    Mfg

    Alpha_Coder



  • Alpha_Coder schrieb:

    Wie kann man das realisieren?

    Ganz einfach: entsprechenden Code schreiben und anschließend mit dem dir zur Verfügung stehenden Assembler und Linker kompilieren!



  • Danke für die Antwort, aber ich meine etwas anderes:

    mov eax,12 ;Wert 12 im eax Register
    
    ;...
    
    stdcall [MessageBox],HWND_DESKTOP,str,"Ergebnis:",MB_OK ;In str soll der Wert von eax kopiert werden
    

    Mein Problem: Wie bekomme ich den Wert des eax Registers in einen String kopiert?
    🙂

    Mfg

    Alpha_Coder

    PS: ich benutze: FASM / Win7



  • Prinzip:
    Um eine Zahl in eine Zeichenfolge umzuwandeln, teile diese so lange durch die Basis des Zahlensystems, das du verwenden willst (z.B. 10 fuer dec, 16 fuer hex, usw.), bis der Quotient 0 ist.
    Das gibt dir im Rest in jedem Durchgang die einzelnen Ziffern der Zahl, angefangen von der 1er-Stelle.

    2er-Potenzen als Basis sind natuerlich effizienter (z.B. shift-Operationen statt Division).

    Umwandeln der Ziffern in ASCII funktioniert mit oder-Verknüpfung mit 0x30 (ASCII "0").



  • Danke für die Antwort, aber ich habe noch nicht viel Erfahrung mit Assembler bzw bis jetzt habe ich nur mit C/++ programmiert.
    Könntet ihr vielleicht ein Beispiel (Codesnippet) geben? 🙂 🙂

    Mfg

    Alpha_Coder



  • Wurde schon oefters gefragt, aber irgendwie gibt es dazu immer noch keinen FAQ-Eintrag... Oh die Prokrastination... 🙄 😃
    http://www.c-plusplus.net/forum/p1904493#1904493



  • ;/* char szBuffer[11] */
    
    	lea edi,szBuffer[10]
    	mov BYTE ptr [edi],0
    	mov ebx,10
    	mov eax,123456789
    	xor ecx,ecx
    @1:
    	lea ecx,[ecx-1]
    	xor edx,edx
    	div ebx
    	lea edx,[edx+30h]
    	mov BYTE ptr [edi+ecx],dl
    	test eax,eax
    	jnz @1
    	lea eax,[edi+ecx]
    	; eax -> sz
    


  • Vielen Dank masm. Genau das habe ich gesucht. 🙂 🙂 🙂

    Mfg

    Alpha_Coder


Anmelden zum Antworten