![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Регистровая и непосредственная адресация
Из семи режимов адресации самыми быстрыми являются регистровая и непосредственная адресации операндов, поскольку в этом случае операционный блок микропроцессора 8086 извлекает их либо из регистров (при регистровой адресации), либо из конвейера команд (при непосредственной адресации). В других режимах адресация выполняется более длительное время, потому что интерфейс шины вначале должен вычислить адрес ячейки памяти, извлечь операнд и только после этого передать его операционному блоку. При регистровой адресации микропроцессор извлекает операнд из регистра (или загружает его в регистр). Например, команда MOV АХ, СХ копирует 16-битовое содержимое счетчика СХ в регистр аккумулятор АХ. Содержимое регистра СХ после операции не изменяется. В данном примере микропроцессор 8088 использует регистровую адресацию для извлечения операнда-источника из регистра СХ и загрузки его в регистр-приемник АХ. Непосредственная адресация позволяет указывать в качестве операнда-источника 8-или 16-битовое значение константы. Эта константа находится в команде (куда она помещается ассемблером), но не в регистре и не в ячейке памяти. Например, команда MOV СХ, 500 загружает десятичное число 500 в регистр СХ, а команда MOV CL, -З0 загружает значение -30 в регистр CL. Непосредственный операнд также может быть идентификатором, определенным оператором EQU, поэтому в командах допустима следующая форма оператора: К EQU 1O24; присвоить константе 1024 идентификатор К и MOV СX, К; загрузить эту константу регистр СХ. Чтобы избежать ошибок, необходимо учитывать, что допустимые значения для 8-битовых чисел со знаком ограничены диапазоном от - 128 (З0Н) до +127 (7FH), 16-битовых чисел со знаком диапазоном от -32768 (8000Н) до +32767 (7FFFH). Максимальное значение 8-битовых чисел без знака равно 255 (0FFH), а 16-битовое равно 65535 (0FFFFH). Необходимо помнить, что ассемблер всегда расширяет знак при пересылке непосредственных значений в операнд-приемник. Это означает, что он дублирует старший бит источника до тех пор, пока не будут заполнены все 8 или 16 битов операнда-приемника. Например, операнд-источник второго примера, десятичное число 500, может быть записано в виде 10-битового двоичного числа 01 1111 0100. Когда ассемблер устанавливает, что требуется загрузить это число в регистр СХ, то он расширяет его до 16-битового, записывая перед ним шесть копий знакового бита (в данном случае 0). Поэтому в регистр СХ попадает двоичное значение 0000 0001 1111 0100В. В третьем примере процессор загружает в регистр СL 8-битовое двоичное представление отрицательного числа -30 в дополнительном коде.
|