Lowlevel
Lowlevel => Lowlevel-Coding => Thema gestartet von: Kyoko12 am 30. December 2005, 10:55
-
Hi
ich hab mal ne frage zu Assambler...
wen ich jetzt nen "String" habe, also zB so definiert:
string db "test"
kan ich dann zu diesem String mit
add string, "a"
was hinzufügen?? also das der Inhalt dann "Testa" ist??
danke im vorraus,
kyoko12
-
Garnicht.
In Assembler gibt es keine Strings.
string db "test"
Ist das gleiche wie
string:
db 't'
db 'e'
db 's'
db 't'
und weißt den Assembler nur an, ein Label mit dem Namen string zu erstellen, und dahinter dann 4 Bytes, welche die ASCII Codes der Buchstaben enthalten, in die Ausgabedatei zu schreiben.
Um String aneinander zu fügen brauchst du sowas:
strcat:
; string1 in ESI
; size von string1 in ECX
; string2 in EBX
; size von string2 in EAX
: buffer fürs ergebniss in EDI
; buffer in edi, string1 in esi, size1 in ecx
; kopieren
rep movsb
; buffer in edi, string2 in esi, size2 in ecx
mov ecx, eax
mov esi, ebx
; kopieren
rep movsb
; zurückkehren
ret
buffer resb 32
string1 db "abc"
string2 db "xyz"
mov esi, string1
mov ecx, 4
mov ebx, string2
mov eax, 4
mov edi, buffer
call strcat
Das Beispiel ist für den Protected Mode gedacht. Im RM sind die Pointer kleiner (AX statt EAX nutzen usw.) und du musst auf Segmente achten.
-
ah, danke^^
schade, wäre ne einfach möglichekit für nen puffer von ner Konsole gewesen...
mfg,
Kyoko12