Битный режим адресации операндов в памяти
Для практического изучения команд процессора i8086 составлен ряд демонстрационных программ (Mov.asm, Arithmet.asm, Logiecal.asm, LoopCall.asm), а в табл. П.1.1_1 приложения П.1.1. приведена система команд, упорядоченная по мнемокоду, с машинными кодами и содержанием выполняемой операции для каждой ассемблерной команды. По функциональному признаку система команд разбивается на 6 групп: пересылка данных, арифметические операции, логические операции и сдвиги, передача управления, обработка цепочек и управления микропроцессором. В этом параграфе рассмотрим формирование машинных кодов команд процессора, которые могут адресовать один или два операнда и структурно принадлежат к одному из трёх типовых форматов, приведённых на рис.1.6. Машинные форматы команд в зависимости от типа команды и способа адресации содержат от 1 до 6 байтов, из которых ключевыми являются первый (код операции) и второй (способ адресации). Штриховыми линиями на рис. 1.6 показаны необязательные байты команд. Принципы кодирования полей отдельных байтов команд рассмотрим на примере наиболее общей формы двухоперандной команды.
Рис. 1.6. Типичные форматы команд:
· w (Word) – однобитовое поле, идентифицирующее тип операнда: при w = 1 команда оперирует словами, а при w = 0 – байтом; · d (Direction) – однобитовое поле, определяющее направление передачи операнда или результата. При d = 1 осуществляется передача операнда в регистр, определённый полем reg во втором байте, при d = 0 – передача из указанного регистра; · reg (Register) – 3-битовое поле регистра, условно определяющее назначение второго операнда; · r/m (Register/Memory) – 3-битовое поле операнда, который может находиться в памяти или в регистре и условно считается первым; · md (Mode) – 2-битовое поле, показывающее (табл. 1.2), как интерпретировать поле r/m при нахождении эффективного адреса EA первого операнда: если md = 11, то операнд содержится в регистре, в остальных случаях – в памяти. Таблица 1.2
|