kleines String-Problem
-
Hallo,
Ich hab wiedereinmal ein kleines Problem, diesmal mit Strings. Wahrscheinlich ist die Lösung eh ganz einfach nur ich steh wiedermal auf der Leitung.
Mein Problem:
Ich habe einen String aus beliebig vielen Zeichen, aus diesem String soll immer ein Zeichen in die 1-Byte grosse Variable Puffer geladen werden. mitmov ah,[String+1] mov Puffer,ah mov ah,[String+2] mov Puffer,ah
geht´s ja, nur möchte ich das dynamisch machen, so auf die Art
mov ah,[String+Zahl]
Zahl ist eine Variable die immer 1 raufzählt.mfg und thx im Voraus
Noob
-
Da haette ich 2 Vorschlaege:
(dieser code ist kuerzer, aber langsamer, als Vorschlag 2)cld mov si,offset String lodsb ;das Zeichen von String+0 mov [Puffer],al lodsb ;das Zeichen von String+1 mov [puffer],al add si,0006h lodsb ;das Zeichen von String+8 sub si,0008h ;und wieder bei 0... ;... ;so etwas geht auch: mov si,offset String+10h ;und so etwas natuerlich ebenfalls: mov si,offset String mov bx,0002h add si,bx ;si zeigt zu String+2 ;...
Hier kannst du eine beliebige 16Bit zahl als Index zu si addieren, oder subtrahieren.
Fuer den Anfang vielleicht etwas uebersichtlicher ist das hier:
(dieser code ist laenger, aber schneller als Beispiel 1)mov bx,0001h mov al,[String+bx] ;String+1 mov bx,0006h mov al,[String+bx] ;String+6 ;usw...
[ Dieser Beitrag wurde am 28.07.2002 um 17:17 Uhr von Nobuo T editiert. ]
-
Grosses thx, die zweite Variante hätte mir auch einfallen können, hätte.
Alle 2 Varianten funktionieren super.thx und mfg
Noob
-
dafuer ist mir noch ein Fehler aufgefallen:
*
lodsb ;das Zeichen von String+8
sub si,0009h ;muss natuerlich -9 sein...
;und wieder bei 0...
*