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