Autor Thema: Assambler: Add bei Strings??  (Gelesen 5141 mal)

Kyoko12

  • Beiträge: 59
    • Profil anzeigen
Gespeichert
« 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

SSJ7Gohan

  • Beiträge: 398
    • Profil anzeigen
Gespeichert
« Antwort #1 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.

Kyoko12

  • Beiträge: 59
    • Profil anzeigen
Gespeichert
« Antwort #2 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

 

Einloggen