Anfängerfrage zu registern
-
Hi Leute
Ich hab mal eine Frage, was die Bedeutung der einzellnen Register Betrifft:
- Wenn man Systeminterrupts benutzt, dann ist das klar das man zB
in eax die Funktionsnummer eingibt und in die darauffolgenden entsprechend die
Argumente (linux).Doch was ist, wenn man jetzt selbst was austüffelt?
Gibts einen Unterschied (vielleicht in der Geschwindigkeit) was die Verwendung von
eax, ebx, ecx, edx, usw betrifft?
Gibts einen praktischen Verwendungszweck für esi und edi ?
Oder ist das alles komplett egal und ich kann alles querdurch benutzen?Für eure Antwort wäre ich sehr dankbbar
Gruss
-
Die Register werden doch in jedem Anfängerbuch/-tutorial beschrieben. Z.B. hier: http://www.kaskade.gmxhome.de/asm/8086.HTM
-
Früher hat man sehr darauf achten müssen, die richtigen Register für den richtigen Zweck zu verwenden.
Z.B. loop - cx
stosb & co - ds:si/es:di
mul - ax/dx
jcxz - cx
adressierung - bx,bp,si,di,sp (iirc)
...Gibt sicher noch ein paar. Bei den aktuelleren CPUs (als aktuell würde ich hier auch schon einen i486 bezeichnen) sind diese Instruktionen aber soundso nicht sehr zu empfehlen, weil entweder langsam oder durch was anderes abgelöst. Adressierung ist viel mächtiger (alle Register können verwendet werden), mul -> imul mit mehr Operanden, ...
Ein paar Einschränkungen bleiben - mir fallen da z.B. Shifts ein (cl), Division (eax/edx). Das war's auch schon, mehr fällt mir nicht ein.