Описание тега x86-16
X 86-16 относится к 16-битному семейству архитектур с набором команд (ISA) на базе процессора Intel 8086. Этот процессор был разработан Intel в середине 1970-х годов и дал начало архитектуре x86.
См. Вики- страницу с тегами x86 для получения ссылок на ресурсы программирования x86 ISA и ассемблера (в основном предназначенные для современных 32-разрядных и 64-разрядных реализаций).
8086 использует тот же набор команд, как позже x86 процессоров, но оно ограничено 16-битном режиме и не имеет поддержки инструкций, добавленных с 186, 286, 386 (или более поздней). Это означает, что чрезвычайно полезные инструкции, такие какmovzx
недоступны, поэтому многие операции требуют перемещения данных в ax
для использования с инструкциями, в которых он указан как неявный операнд. 16-разрядная реализация x86 также ограничена в отношении того, какие регистры могут использоваться в режимах адресации. Это ограничение адресации сохраняется в современных процессорах, работающих в 16-битном режиме, поскольку формат машинного кода тот же.
8088 является производным от 8086. 8088 идентичен по функциональности к 8086 и полностью 16-битный внутри, но он имеет 8-битовый внешнюю шину данных (вместо 8086 16-битной внешней шины данных). С точки зрения программирования, между 8088 и 8086 нет существенных различий, поэтому они объединены под одним тегом. Не стесняйтесь упоминать, на какой именно чип вы нацеливаетесь, в теле и / или заголовке вопроса.
Этот тег также подходит для вопросов о процессорах сторонних производителей, которые используют тот же набор инструкций, что и 8086, включая NEC v20 и v30, клоны AMD 8086 и т. Д. Существуют также некоторые современные микроконтроллеры, которые используют простые ядра 8086.
Обратите внимание, что хотя он будет работать на современных процессорах x86, код, использующий только 16-разрядные инструкции (как будет поддерживаться на 8086), обычно не считается хорошим или эффективным кодом.
Тем не менее, остается большой интерес к написанию 16-битного кода для эмуляторов dos (таких как DOSBox и emu8086) и настоящего винтажного оборудования как со стороны новичков, так и со стороны энтузиастов. Retrocomputing.SE имеет тег 8086, но если вы не спрашиваете о реальном древнем оборудовании, stackru - подходящее место для вопросов о 16-битных загрузчиках, ядрах и исполняемых файлах DOS. Ретро-вычисления в основном касаются даже более старых систем, таких как 8-битные микросхемы.
- Справочник по набору инструкций, в том числе при появлении (8086, 186, 286, 386 и т. Д.) Создан из старой версии приложения NASM, сохранены описания на английском языке, но исправлены ошибки, в которых появлялись инструкции генерации.
- Общие советы по разработке загрузчика
- рабочий пример загрузчика, который загружает "ядро" и вызывает C
main
в нем работают в 32-битном защищенном режиме. И инструкции о том, как его собрать и связать с NASM,gcc -m32
, а такжеld
. И запустить его на QEMU.
Связанные теги:
- x86 (для x86 в целом, включая 32-битные и 64-битные. Много хороших вещей в вики-странице тегов, включая некоторые 16-битные ссылки)
- x86-64 (специально для 64-битных расширений x86 ISA)
- x87 (для устаревшего числового сопроцессора - также известного как модуль с плавающей запятой, в отличие от SSE/SSE2 FPU)
- сборка (для программ, написанных на языке ассемблера любого типа, включая x86, MIPS, ARM и игрушечные архитектуры, такие как LC-3)
- dos (для программ, ориентированных на DOS и / или вопросов об API DOS)
- emu8086 (для вопросов, касающихся конкретно пакета эмулятора EMU8086, который часто используется студентами)