Hallo,
ich bin gerade dabei assembler zu lernen und meine ersten eigenen Programme zu schreiben. Dabei bin ich beim ändern von Characters in Strings auf ein Adressierungsproblem gestoßen.
Ich habe das Problem auf ein Minimalbeispiel in NASM reduziert.
Folgendes funktioniert (print_string habe ich weggelassen):
Dann habe ich versucht diese Änderung in einer Schleife durchzuführen, also das zu ändernde Zeichen in Abhängigkeit eines Wertes eines Zählregisters zu setzen. Dies habe ich leider nicht zum laufen bekommen (Ich habe jetzt hier die Schleife weggelassen und nur mit mov die Zählervariable statisch gesetzt):
Wenn ich das assemble bekomme ich immer die Fehlermeldung "error: invalid effective address"
Kann mir jemand helfen?
Danke, Gruß
Tom
ich bin gerade dabei assembler zu lernen und meine ersten eigenen Programme zu schreiben. Dabei bin ich beim ändern von Characters in Strings auf ein Adressierungsproblem gestoßen.
Ich habe das Problem auf ein Minimalbeispiel in NASM reduziert.
Folgendes funktioniert (print_string habe ich weggelassen):
Code:
...
section .text
mov si, str_hello -> Gibt "hello" auf dem Bildschirm aus
call print_string
mov byte [str_hello+1], '$'
mov si, str_hello -> Gibt "h$llo" auf dem Bildschirm aus
call print_string
...
section .data
str_hello db 'hello',13,10,0
...
Dann habe ich versucht diese Änderung in einer Schleife durchzuführen, also das zu ändernde Zeichen in Abhängigkeit eines Wertes eines Zählregisters zu setzen. Dies habe ich leider nicht zum laufen bekommen (Ich habe jetzt hier die Schleife weggelassen und nur mit mov die Zählervariable statisch gesetzt):
Code:
...
section .text
mov si, str_hello -> Gibt "hello" auf dem Bildschirm aus
call print_string
mov cx, 3
mov byte [str_hello+cx], '%'
mov si, str_hello -> Soll "hel%o" auf dem Bildschirm ausgeben
call print_string
...
section .data
str_hello db 'hello',13,10,0
...
Wenn ich das assemble bekomme ich immer die Fehlermeldung "error: invalid effective address"
Kann mir jemand helfen?
Danke, Gruß
Tom
Zuletzt bearbeitet: