Режимы адресации в ассемблере PDP-11 - PullRequest
0 голосов
/ 06 июня 2010

У меня небольшой вопрос по поводу pdp-11 (симулятор), у меня есть эта команда (начинается с адреса 1000) добавить 2500, # 2500

и этот начальный список:

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

и я хочу знать, как точно работает этот небольшой фрагмент, в своей брошюре я обнаружил, что: во-первых, он читает информацию с адреса 1000, внутри этого адреса у нас есть значение 066727, после того, как мы прочитаем число с адреса 1002, и значение должно быть 2500 (из-за добавления 2500, # 2500), но в моем буклете у меня есть 1474 без каких-либо объяснений почему, я знаю, что у меня здесь относительный режим адресации, но почему 1474 внутри адреса 1002, а не 2500, заранее спасибо за любую помощь

Ответы [ 3 ]

2 голосов
/ 29 сентября 2012

Если у вас есть:

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

Первое собранное слово будет инструкцией, второе будет адресными данными для первого операнда (2500), а третье будет непосредственнымзначение 2500.Режим относительной адресации ПК для первого операнда добавит значение ПК к значению, данному для получения адреса операнда.Это будет разница между 2500 и ПК в этой точке (1474, после приращения для считывания смещения).

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

Обычно можно сделать следующее:

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

В качестве первого примера сохранен результат в потоке команд.

0 голосов
/ 15 июня 2010
ADD 2500,#2500

компилируется как

    0:      066727 ; ADD
    2:      002474 ; 2500 - 6 (next instruction offset)
    4:      002500 ; #2500 (literal value)
    6:      ...    ; next instruction
  ...
 2500:      003000
0 голосов
/ 06 июня 2010

Я не помню все режимы адресации, но посмотрите на адрес 1474 и посмотрите, содержит ли он 2500.

...