Lowlevel

Lowlevel => Lowlevel-Coding => Thema gestartet von: Kyoko12 am 30. December 2005, 10:55

Titel: Assambler: Add bei Strings??
Beitrag 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
Titel: Assambler: Add bei Strings??
Beitrag von: SSJ7Gohan am 30. December 2005, 11:21
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.
Titel: Assambler: Add bei Strings??
Beitrag von: Kyoko12 am 30. December 2005, 11:28
ah, danke^^
schade, wäre ne einfach möglichekit für nen puffer von ner Konsole gewesen...

mfg,
Kyoko12