Ich muss eine bestimmte Anzahl von Zeichen (sagen wir 3) vom Ende eines Strings 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 entferne ich eine bestimmte Anzahl von Zeichen am Ende einer Zeichenkette?
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
Ich mag jedoch mit verschiedenen Saiten diesen Code machen heißt, wenn die Quelle durch den Benutzer geändert wird, etwas, was anders zu sagen (E.g.source Byte „Dies ist ein String“, 0). 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
Versuchen Sie, die Antwort auf Ihre vorherige Frage zu verwenden. Wenn Sie ein Problem haben, schreiben Sie Ihren Code, um zu sehen, was das Problem sein könnte (komm, du kannst es tun). –
Mögliches Duplikat von [Wie entferne ich alles nach einem bestimmten Zeichen in einer Zeichenfolge?] (Http://stackoverflow.com/questions/37036950/how-do-i-remove-everything-after-a-certain-character-) in-a-string) –
Wenn Sie die gleiche Frage zweimal stellen, bekommen Sie keine andere Antwort. –