?
DerNamenlose schrieb:
High,
wieso funktioniert der Code
.data
Var db "..."
.code
[...]
lea esi, Var
inc esi
cld
lodsb
einwandfrei, während das Programm bei std statt cld abstürzt? Ist doch nur der Unterschied, dass esi dekrementiert statt inkrementiert wird??
VG,
DerNamenlose
Wenn du das Richtungsflag mit std setzt, bist du fuer das Loeschen mit cld verantwortlich.
Wird das abschliessende Loeschen vergessen, stuerzt der Rechner ab.
int _tmain(int argc, _TCHAR* argv[])
{
char Var[] = {'A','B','C'};
__asm lea esi, Var+2
/*__asm inc esi
__asm inc esi */
__asm std ; setzt das Richtungsflag
__asm lodsb ; esi wird um 1 erniedrigt - 'C' in al
__asm lodsb ; esi wird um 1 erniedrigt - 'B' in al
__asm cld ; löscht das Richtungsflag
__asm lodsb ; esi wird um 1 erhoeht - 'A' in al
return 0;
}
MfG