1

Im Folgenden sind die Registerwerte für Intel-Mikroprozessor:Wie berechne ich die physikalische Adresse aus dieser Bauanleitung?

CX: FF0A

BX: AB5D

DI: BDEF

DX: 1234

DS: CC20

SP: CD0F

Anweisung:

  1. ADD [BX + DI], CX

  2. MOV DX, [SP + 1652H]

ich wissen will, wie die berechnen physikalische Adresse der oben genannten zwei Anweisungen.

+1

Es hängt auch von 'ds' für die erste Anweisung ab. Die zweite Anweisung ist ungültig. – harold

+0

DS ist CC20. jetzt bitte sagen Sie mir, wie man die physikalischen Adressen berechnet? –

+0

Nun, Sie sollten den Wert des DS-Registers auch in der Frage erwähnen. damit die Leser es nicht verpassen. –

Antwort

1

Für 1. ADD [BX + DI], CX Sie müssen zuerst die effektive Adresse berechnen.

effektive Adressierung = Basis + Index +

Dann Offset würde die physikalische Adressierung sein: Physical Addressing = Segmentierung * 0x10 + Die effektive

In Ihrem Fall Adressierung wird Basis der Wert bx sein , index ist der Wert von di und Offset ist leer. Berechnen Sie jetzt selbst.

+0

ist es. Vielen Dank. und ist die 2. Anweisung falsch? –

+0

@SaminaJabeen im 16b-Modus x86 kann '[sp + imm16]' Speicheradressierung in keiner Anweisung codieren, also technisch ist es ungültig. Im 32b-Modus würde '[esp + imm32]' funktionieren, so dass der Autor der Frage wahrscheinlich dadurch verwirrt wurde. Im 16b-Modus wird in der Regel stattdessen das '[bp + imm16]' verwendet (das Kopieren von 'sp' in' bp' am Anfang eines bestimmten Teils des Codes), und das ist eine knifflige Frage, da 'ds' nicht verwendet wird als Segmentregister, aber anderes (genau wie 'esp' im 32b Modus). – Ped7g

Verwandte Themen