Режимы адресации в ассемблере PDP-11
-
24-10-2019 - |
Вопрос
У меня есть небольшой вопрос о 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, заранее спасибо за помощь
Решение
ADD 2500,#2500
компилируется как
0: 066727 ; ADD
2: 002474 ; 2500 - 6 (next instruction offset)
4: 002500 ; #2500 (literal value)
6: ... ; next instruction
...
2500: 003000
Другие советы
Если у вас есть:
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.
В качестве первого примера сохранялось результат в потоке инструкций.
Я не помню все режимы адресации, но посмотрите на адрес 1474 и посмотрите, содержит ли он 2500.