2013-07-17 5 views
3

В языке ассемблера, инструкцияЧто значит MOV D D?

MOV A B 

означает перемещение содержимого B (источника) к A (назначения).
я вдруг придумал инструкции

MOV D D 

Что это значит?

Я видел это в своем руководстве по эксплуатации. Скриншот:

enter image description here

+1

Это может быть способ кодирования no-op. –

+0

возможно nop? –

+0

@ HansPassant; Вы имеете в виду, что эти инструкции не отключены, чтобы не увеличивать стоимость? – haccks

ответ

7

Контрольные команды MOV 8085 являются ортогональными. То есть есть коды операций для перемещения любого из 8-битных регистров в любой из 8-разрядных регистров. Таким образом, MOV D,D перемещает содержимое регистра D в регистр D. Он не делает ничего, полезным и не влияет на какие-либо из флагов, но это действует так же, как инструкция являются MOV A,A, MOV B,B и т.д.

Копирование регистра само по себе не является эффективно «нет операции» или NOP инструкция , «Официальный» 8085 NOP - это код операции 00, но любая из команд register-move-to-yourself имеет тот же эффект.

Это действительно просто артефакт того, как был разработан процессор. Есть некоторые трюки, которые вы можете сделать, чтобы использовать эти инструкции, но они обычно не полезны.

+0

Когда нам нужна инструкция NOP? – haccks

+1

Согласно [статье Википедии] (http: //en.wikipedia.org/wiki/NOP): «NOP чаще всего используется для целей синхронизации, для принудительного выравнивания памяти, для предотвращения опасностей, для засечки слота задержки ветвления или в качестве владельца места для замены активными инструкциями позже в программе разработка ... » –

+1

Не для 8085 эти соображения применимы только к процессорам с конвейером. Вы использовали его для отключения кода при отладке кода сборки. Этот вопрос заставляет меня чувствовать себя старым :) –

1

Это операция NOP, используется для задержки программы.

5

Вы должны сохранить эру в виду, 8085 был разработан еще в 1977 году. Технология технологического процесса с интегральной микросхемой была не столь усовершенствована, тогда был довольно жесткий верхний предел числа транзисторов, которые они могли бы надеть на матрицу , Он использует только 6500 из них.

Это сильно ограничивает логику, которую они могут использовать для реализации процессора. Биты в коде операций, который выбирает операнды, передаются непосредственно в мультиплексор банка регистров. И занимайте одинаковые позиции бит и значение в других инструкциях, которые используют регистр. Бюджет сжигать дополнительные транзисторы для особых исключений для операндов, которые не имеют смысла, просто недоступен. Было намного проще и дешевле оставить их на месте и не использовать логику для решения исключительного случая.

Не большая проблема, никто не собирался использовать бессмысленные инструкции случайно.

С другой стороны, он работал наоборот, иногда процессор имел очевидное отверстие в наборе команд. Z80 был таким. Предназначен для инструкции, которая прослушивалась в первых нескольких силиконовых проходах и не считалась достаточно существенной для исправления. Поэтому они просто оставили это из документации. Или оставил их на месте, 6502 был notoriously buggy. Было очень привлекательная цена, хотя :)

+0

Спасибо, что поделились этой исторической информацией. Рад знать. – haccks

Смежные вопросы