Ich versuche, eine vom Benutzer eingegebene Zeichenfolge von Zahlen in eine ganze Zahl zu konvertieren.Konvertieren einer Zeichenfolge von Zahlen in eine Ganzzahl in Assembly X 86
Zum Beispiel gibt der Benutzer "1234" als Zeichenfolge ein, die 1234 in einer DWORD-Variablen gespeichert werden soll.
Ich verwende lodsb
und stosb
, um die einzelnen Bytes zu erhalten. Mein Problem ist, dass ich den Algorithmus nicht richtig dafür finden kann. Mein Code ist unten:
mov ecx, (SIZEOF num)-1
mov esi, OFFSET num
mov edi, OFFSET ints
cld
counter:
lodsb
sub al,48
stosb
loop counter
Ich weiß, dass die ECX
Zähler ein bisschen off auch sein wird, weil es die gesamte Zeichenfolge nicht nur die 4 Bytes gelesen wurden, so ist es eigentlich 9, da die Zeichenfolge 10 Byte.
Ich habe versucht, Potenzen von 10 zu verwenden, um die einzelnen Bytes zu multiplizieren, aber ich bin ziemlich neu in Assembly und kann nicht die richtige Syntax dafür erhalten. Wenn jemand mit dem Algorithmus helfen kann, wäre das großartig. Vielen Dank!
Verwenden Sie die C-Bibliothek – Jerfov2
hier Werfen Sie einen Blick http://stackoverflow.com/questions/19309749/nasm-assembly-convert-input-to-integer/19312503#19312503 – BioGenX