Problem 1:
Bin wieder dabei, so eine kleine Stringfunktion zu schreiben. Diese soll alle Zeichen in einem Quellstring, der in ES:SI steht, in verkehrter Reihenfolge nach DS:SI schreiben.
Beim Ausführen des Programms passiert nichts, außer das NASM seltsamerweise beendet wird.
Nun zu meiner zweiten Frage:Thoth schrieb im vorherigen Thema:

?? Da SI doch ein 16-Bit-Indexregister ist, kann dies doch erst bei einem String überlaufen, der größer als 16Bit ist, oder ?
Außerdem wird der Inhalt von SI doch mit jedem mov si,String überschrieben und nicht hinzuaddiert, oder ?
Bin wieder dabei, so eine kleine Stringfunktion zu schreiben. Diese soll alle Zeichen in einem Quellstring, der in ES:SI steht, in verkehrter Reihenfolge nach DS:SI schreiben.
Code: [Auswählen]
Copy_Begin:
mov ah,0x00 ;Stringendezeichen
mov DI,SI ;SI wird für später benötigt
mov [ES:DI+BX],ah ;BX zeigt auf Stringende -> Stringendezeichen hinzufügen
mov SI,DS ;Offsetadresse von DS nach SI
Copy_Loop:
dec BX
mov ah,[ES:DI+BX] ;Zeichen von ES:DI nach AH
mov [DS:SI],ah ;Zeichen von AH nach DS:SI
inc SI ;nächste Speicherstelle
or BX,BX ;Stringende erreicht ?
jz Copy_End
jmp Copy_Loop ;wiederholen
Copy_End:
mov ah,0x00
mov [DS:SI]ah ;Stringendezeichen hinzufügen
retn ;Beenden
Beim Ausführen des Programms passiert nichts, außer das NASM seltsamerweise beendet wird.
Nun zu meiner zweiten Frage:Thoth schrieb im vorherigen Thema:
Zitat
solltest du den Code ganz oft verwenden wollen und dich hunderprozentig darauf verlassen, dann würde ich noch nach jedem lodsb testen, ob si überläuft. Also mit jc noch einWas passiert eigentlich bei diesem Code ? Ich erkenne darin nur soviel, dass die Adresse des Datensegments um 1000h erhöht wird. Aber wieso
Code:
push ax
mov ax, ds
add ax, 0x1000
mov ds, ax
pop ax
oder so anbringen.

?? Da SI doch ein 16-Bit-Indexregister ist, kann dies doch erst bei einem String überlaufen, der größer als 16Bit ist, oder ?Außerdem wird der Inhalt von SI doch mit jedem mov si,String überschrieben und nicht hinzuaddiert, oder ?

Übersicht
Wiki
Hilfe
Suche
Einloggen
Registrieren
Drucken
Gespeichert

