Pregunta

Tengo una pequeña pregunta sobre PDP-11 (simulador), tengo este comando (comienza desde la dirección 1000) Agregar 2500, #2500

y esta lista inicial:

register/address - initial value
pc                 1000
sp                 600
2500               3000

Y quiero saber cómo se ejecuta exactamente este pequeño fragmento, en mi folleto descubrí que: en primer lugar, lee información de la dirección 1000, dentro de esta dirección tenemos valor 066727, después de leer el número de la dirección 1002, y el valor debe ser 2500 (por add 2500, #2500), pero en mi folleto tengo 1474 sin ninguna explicación por qué, sé que tengo aquí el modo de direccionamiento relativo, pero por qué 1474 dentro de la dirección 1002 y no 2500, gracias de antemano por cualquier ayuda

¿Fue útil?

Solución

ADD 2500,#2500

compila como

    0:      066727 ; ADD
    2:      002474 ; 2500 - 6 (next instruction offset)
    4:      002500 ; #2500 (literal value)
    6:      ...    ; next instruction
  ...
 2500:      003000

Otros consejos

Si usted tiene:

    add     2500,#2500      ;add content of location 2500 to immediate value.

La primera palabra ensamblada será la instrucción, la segunda serán los datos de la dirección para el primer operando (el 2500), y el tercero será el valor inmediato 2500. El modo de direccionamiento relativo de PC para el primer operando agregará el valor de la PC al valor dado para obtener la dirección del operando. Esta será la diferencia entre 2500 y la PC en ese punto (1474, después del incremento para leer el desplazamiento).

1004 + 1474 = 2500, the address of the data.

Normalmente, uno haría A:

    add     #2500,2500       ;add 2500 to the word at location 2500.

Como el primer ejemplo almacenó el resultado en el flujo de instrucciones.

No recuerdo todos los modos de direccionamiento, pero mire la dirección 1474 y vea si contiene 2500.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top