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.


Anmelden zum Antworten