Ich muss eine bestimmte Anzahl von Zeichen (sagen wir 3) vom Ende einer Zeichenkette entfernen. Für diesen speziellen String funktioniert es, wenn ich 'Z' finde, und dann zeige ich es auf W by sub edi, 3, und speichere dann den Rest der Zeichenkette mit Nullen.Wie kann man Zeichen vom Ende eines Strings entfernen?
INCLUDE Irvine32.inc
.data
source BYTE "ABCDEFGHIJKLMNOPQRSTUVWXYZ", 0
.code
main PROC
mov edi, OFFSET source
mov al, 'Z' ; search for Z
mov ecx, LENGTHOF source
cld
repne scasb ; repeat while not equal
sub edi, 3 ; now points to W
mov al, 0
rep stosb ; stores all characters after W with 0.
mov edx, OFFSET source
call WriteString
call CrlF
exit
main ENDP
end main
Allerdings möchte ich diesen Code mit verschiedenen null abgeschlossene Zeichenfolgen arbeiten lassen. Zu diesem Zweck habe ich versucht, 0 (das Ende der Zeichenfolge) zu finden, wie mein Code unten zeigt. Aber es funktioniert nicht, Es gibt nur die ganze Zeichenfolge aus.
Was muss ich tun, um sicherzustellen, dass der Code auch dann noch funktioniert, wenn die Zeichenfolge geändert wird, ohne dass jedes Mal die Suche nach dem Ende der Zeichenfolge geändert werden muss?
INCLUDE Irvine32.inc
.data
source BYTE "ABCDEFGHIJKLMNOPQRSTUVWXYZ", 0
.code
main PROC
mov edi, OFFSET source
mov al, '0' ; search for end of string
mov ecx, LENGTHOF source
cld
repne scasb ; repeat while not equal
sub edi, 3 ; now points to W ??
mov al, 0
rep stosb ; stores all characters after W with 0.
mov edx, OFFSET source
call WriteString
call CrlF
exit
main ENDP
end main
Sie brauchen nicht mit Nullen zu füllen, die Sie gerade brauchen. Zur Kompilierung von konstanten Strings können Sie einfach 'LENGTHOF' verwenden, da Sie keine Suche durchführen müssen. Beachten Sie auch, dass "0" der ASCII-Code von "0" ist, der nicht "0", sondern "48" ist, also ist das nicht das, was Sie wollen. – Jester
Mindestens einer Ihrer drei Versuche, diese Frage zu beantworten, wurde nicht geschlossen. :) –
Mein Vergnügen. Es scheint, dass dieses eine mehr genau widerspiegelt, was das "wie man eine Frage stellt" Wiki sagt, um zu tun. –