Na jetz haste dein Problem mal auf den Punkt gebracht also lea lädt den offset von data in si und lods erhöht den wert in si immer um ein byte weil data mit db deklariert ist. determinieren bedeutet das du ein string mit einem zeichen abschließt um das ende zu markieren. printf bei C erwartet z.B. 0 und die Dos Funktion halt $
und hier der Quellcode:
mit loop
org 100h
mov cx,6
schleife:
mov ah,9
mov dx,data
int 21h
loop schleife
mov ah,4ch
int 21h
data db 'aha',10,13,'$'
;-------------------------------------------------------------------------
ohne loop:
org 100h
mov cx,6
schleife:
mov ah,9
mov dx,data
int 21h
dec cx
or cx,cx
jnz schleife
mov ah,4ch
int 21h
data db 'aha',10,13,'$'
Ach ja wenn du das ganze ohne loop machst kannste natürlich (fast) jedes Register benutzen da du ja auch jedes Register mit cmp benutzen und dekrementieren. cx is halt für so befehle wie loop weils da automatisch runtergezählt wird