Unterschied zwischen impliziter und unmittelbare Adressierung Modus?

Stillschweigend: Operanden werden implizit in der definition von Unterricht. Beispiele: CLA,CME,INP.

Es ist vor allem für Null-Adress (STACK-organisiert) und Ein-Adress (AKKUMULATOR-organisiert) Anweisungen.

Unmittelbaren: operand angegeben ist, die in der Instruktion selbst und vor allem für die Konstanten . Beispiel: ADD R1,#3 ,MUL R1,R2,#7

aber kommt die Frage, wie Sie die Anweisung:

1) PUSH 3

und

2)LD 7

Erste ist eine null-Adresse der Instruktion (Stack-basiert) und das zweite ist ein Akku-Anweisung. In beiden Anweisungen Operanden definiert ist, die in der Instruktion selbst. Die Adressierung ist dieser Modus zu bevorzugen, oder am besten beschreibt?

Wie um zu überprüfen, ob die Anweisung impliziert ist, oder sofort?


Weitere Beispiele für implizite Operanden auf x86: SAHF, LAHF, und CPUID.

Quelle: https://en.wikipedia.org/wiki/CPUID

In assembly-Sprache, die die CPUID-Anweisung nimmt keine expliziten Parameter wie CPUID verwendet implizit die register " EAX (und manchmal ECX), um zu bestimmen, die zurückgegebenen Informationen in EAX,EBX,ECX und EDX.

Quelle: http://www.felixcloutier.com/x86/LAHF.html

LAHF — Load Status Flags into AH Register
This instruction executes as described above in compatibility mode and legacy mode. It is valid in 64-bit mode only if CPUID.80000001H:ECX.LAHF-SAHF[bit 0] = 1.

Quelle: http://www.felixcloutier.com/x86/SAHF.html

SAHF — Store AH into Flags
Loads the SF, ZF, AF, PF, and CF flags of the EFLAGS register with values from the corresponding bits in the AH register (bits 7, 6, 4, 2, and 0, respectively). Bits 1, 3, and 5 of register AH are ignored; the corresponding reserved bits (1, 3, and 5) in the EFLAGS register remain as shown in the “Operation” section below.

This instruction executes as described above in compatibility mode and legacy mode. It is valid in 64-bit mode only if CPUID.80000001H:ECX.LAHF-SAHF[bit 0] = 1.

Beispiel: (Quelle: https://www.slideshare.net/rbtaccess/flag-control )

MOV AH, 25H       ; immediate source operand
SAHF              ; implicit operands

mehr Beispiele CLC, STC, und CMC, die klar legen, oder drehen Sie das carry-flag CF-bzw. (CF ist ein bit im FLAGS-Parameter, nicht für ein ganzes register.)

  • Wie um zu überprüfen, ob die Anweisung impliziert ist, oder sofort? Das macht nicht wirklich Sinn machen. Sie haben sich jeder operand einzeln, nicht die ganze Anleitung. z.B. PUSH implizit speichert der stack, aber der expliziten operand kann ein register oder direkt. Auf einigen Architekturen wie x86, PUSH kann auch akzeptieren, ein Speicher-operand. PUSH r/m32 ist ein opcode und Adressierungsart wählt zwischen Speicher oder register Quelle.
  • wenn die Anweisung PUSH A der operand ist im Speicher, dann wird es stillschweigend Modus, weil der operand ist nicht der EIGENTLICHE OPERAND ?
  • Es ist nicht klar, warum es darauf ankommt. Verwenden Sie einfach die Anweisung.
  • diese Frage ist eindeutig über eine gewisse Art von Akkumulator-Architektur, wo dieser operand ist immer implizit. Ersetzt die meisten die Frage mit x86-Beispiele nicht angemessen sind. Deine Bearbeitung besser funktionieren würde als eine Antwort oder evtl. einem gesonderten Abschnitt auf die Frage nach dem ursprünglichen text.
InformationsquelleAutor Kamal Pratap | 2016-09-01
Schreibe einen Kommentar