Это не язык ассемблера, а основной язык машины, который предотвращает эти операции.
В то время как сборка состоит из легко читаемых слов или мнемоник, они на самом деле представляют собой явно 1s и 0s машинного кода. На процессорах x86 каждая команда обычно состоит из последовательности байтов с отдельными байтами или четными битами в пределах значений, имеющих значение. Некоторые биты представляют собой инструкцию, другие - addressing mode. В режимах адресации регистров, таких как ваши примеры, некоторые биты представляют, какие конкретные регистры должны использоваться в качестве источника и адресата инструкции mov
.
Теперь семейство процессоров x86 прошло долгий путь к 1970-м годам, когда архитектура ЦП была проще. В те дни концепция имела ключевое значение - ax
- это 16-разрядный аккумулятор x86. Все расчеты были созданы или «скопированы» в этом регистре, чтобы они были доступны для всех инструкций. Другие регистры общего назначения имели более ограниченный диапазон использования.
Поскольку инструкции были основаны на байтах, которые вы хотели, чтобы несколько байтов представляли инструкцию, чтобы как можно быстрее расширять декодирование команд. Чтобы сохранить максимально возможное количество инструкций, использование аккумулятора становится центральным.
На более современных процессорах, таких как более универсальные регистры Motorola 680x0, есть больше возможностей, которые ранее были достоянием аккумулятора. На процессорах RISC все регистры столь же гибкие, как и аккумуляторы. Я слышал, что в 64-битном режиме текущий набор инструкций x86/amd64 теперь гораздо менее ограничен.
Когда я. сначала прочитал ваш ответ, я не вел да, но в документации NASM, конечно, нет команды mov reg_dseg, reg_cseg. – samoz
Это не причина, это результат. – 2009-05-29 20:58:25
Что? Я не понимаю, что вы имеете в виду с Нилом. – samoz