Вопрос 41 Форматы команд и данных 16 разрядного процессора I8086
Система команд i8086 включает 133 базовые команды и позволяет обрабатывать 8- и 16-разрядные данные. Команды могут быть безоперандными, а также содержать один или два операнда. Длина команд может составлять от 1 до 6 байт. Код операции находится в первом байте команды, а остальные байты содержат информацию об адресах операндов. Чтобы различать операции над байтами или словами, в первом байте команды используется специальный разряд W. При W=1 операции выполняются с 16-разрядными данными. В микропроцессоре используются почти все известные способы адресации, что связано с наличием большого набора регистров. При выполнении команд по умолчанию возможны дополнительные варианты адресации, которые задаются с помощью специального однобайтового префикса замены сегмента, записываемого перед командой. Он информирует микропроцессор об использовании для адресации операнда сегментного регистра, отличающегося от регистра, выбираемого по умолчанию. Сегментные регистры ES, CS, SS, DS в 2-разрядном поле reg задаются кодами 00, 01, 10, 11 соответственно.
Вид адресации в команде чаще всего задается байтом, следующим за кодом операции. Байт адресации может определять один или два операнда, его структура представлена ниже. Он содержит поле режима (mod), поле регистра (reg) и поле регистр-память (r/m). Для вычисления исполнительного адреса (ЕА) применяется поле mod или r/m, а также байты смещения (DISP), расположенные в команде непосредственно за байтом адресации.
При прямой адресации исполнительный адрес находится непосредственно в поле смещения кода команды. В командах безусловных переходов и обращения к подпрограммам прямой адрес формируется из 16-разрядного адреса сегмента (SEG) и 16-разрядного смещения (DISP) (см. ниже). В процессе выполнения команды смещение передается в указатель команд IP, а базовый адрес сегмента - в регистр CS:
В командах обработки данных прямой адрес представляется смещением, следующим за байтом адресации, в формате, изображенном ниже. Разряд d в поле кода операции cop задает направление передачи данных, определяемых полем reg в байте адресации. При d=1 передача операнда производится в регистр задаваемый полем reg в соответствии с кодировкой.
Прямая адресация используется и в командах передачи данных между аккумулятором и памятью:
В командах с регистровой адресацией операнд находится в одном из регистров общего назначения. Эти команды наиболее компактны и быстро выполнимы т.к. для адресации регистров необходимы 2-3 разряда кода команды, а выполнение этих команд полностью осуществляется внутри микропроцессора. Регистровая адресация может задаваться в байте кода операции:
или с помощью байта адресации:
В командах с двумя операндами при mod=1 используются два регистра, и второй регистр указывается кодом в поле r/m:
Непосредственная адресация позволяет задавать постоянные данные в виде составных частей команды и используется в большинстве команд с двумя операндами. Непосредственный операнд data занимает один или два байта в конце кода команды причем младший байт всегда предшествует старшему. Однобайтовый непосредственный операнд записывается в дополнительном коде и может представлять константы в диапазоне от -128 до +127. Закрашенные участки при изображении байтов указывают на возможность отсутствия их в формате команды, при выполнении определенных условий. Например, 16-разрядный непосредственный операнд используется только при w=1.
Представленные два формата команд применяются в командах передачи данных и позволяют загрузить непосредственный операнд по адресу памяти, вычисленному с помощью байта адресации, или в некоторый регистр, определяемый полем reg.
Формат, представленный ниже, используется в командах арифметических и логических операций, содержащих второй операнд в аккумуляторе AX:
Непосредственный операнд, представляющий константу, добавляемую к содержимому указателя стека SP, может использоваться в команде возврата из подпрограммы, формат которой представлен ниже:
В командах с регистровой косвенной адресацией 16-разрядный исполнительный адрес EA находится в одном из регистров reg, задаваемых полем r/m байта адресации (см. ниже). В этом способе адресации может использоваться только один из регистров - BX, SI или DI.
Популярное: Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ... Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной... Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (710)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |