- •Лабораторная работа № 1
- •Основные понятия Архитектура эвм и ее структурная схема
- •Центральный процессор
- •Оперативная память
- •Представление данных
- •Содержание работы
- •Лабораторная работа № 2
- •Основные понятия
- •Запуск отладчика
- •Команды программы debug
- •Команда ассемблирования (перевод мнемокода ассемблера в машинный код)
- •Команда дизассемблирования (перевод машинного кода в мнемокод ассемблера)
- •Команда ввода данных в память
- •Команда вывода содержимого участка памяти на экран
- •Команда просмотра и изменения содержимого регистров
- •Мнемонические обозначения состояний флагов
- •Команда пошагового выполнения программы
- •Команда задания имени файла программы
- •Команда загрузки файла в память
- •Команда записи области памяти в файл
- •Команда выхода из отладчика
- •Содержание работы
- •Варианты заданий
- •Основные понятия Теоретические основы адресации памяти в реальном режиме
- •00000H [физический адрес] ffffFh.
- •Режимы адресации
- •Непосредственная адресация
- •Прямая адресация
- •Косвенная адресация
- •Адресация по базе
- •Индексная адресация
- •Базово-индексная адресация
- •Форматы команд
- •Содержание работы
- •Задачи к выполнению лабораторной работы
- •Варианты заданий
- •Арифметические команды
- •Основные понятия
- •Мнемоника арифметических команд
- •Задачи к выполнению лабораторной работы
- •Команды поразрядной обработки данных
- •Основные понятия
- •Мнемоника команд поразрядной обработки данных
- •Задачи к выполнению лабораторной работы
- •Варианты заданий
- •Команды передачи управления
- •Основные понятия
- •Мнемоника команд передачи управления
- •Команды управления циклами (loop, loope, loopz, loopne, loopnz) имеют следующие форматы в мнемонике ассемблера:
- •Задачи к выполнению лабораторной работы
- •Варианты заданий
- •Команды обработки строк
- •Основные понятия
- •Мнемоника команд обработки строк
- •Задачи к выполнению лабораторной работы
- •Варианты заданий
- •Описание команд программы debug
- •Библиографический список
Непосредственная адресация
В этом режиме процессор выбирает данные непосредственно из самого кода команды. Этот режим адресации применяется для задания константных значений в качестве операнда – источника данных (только в двухадресных командах). При этом разрядность непосредственного операнда определяется разрядностью операнда – приемника данных.
Например, первый операнд (приемник данных) команды MOV AX,34h имеет регистровую адресацию, т.е. результат ее выполнения помещается в регистр (в данном случае AX), а второй операнд (источник данных) имеет непосредственную адресацию, т.е. является константой 0034h и располагается в коде этой команды. Таким образом данная команда помещает константу 0034h в регистр AX.
Прямая адресация
При этом режиме адресации операнд располагается в оперативной памяти, а адрес операнда (точнее компонента смещения логического адреса) располагается в коде команды. Для обращения к такому операнду процессор формирует физический адрес, выбирая компоненту сегмента из сегментного регистра DS. Поскольку обращение к операнду требует от процессора выполнения определенных действий, компоненту смещения адреса операнда принято называть исполнительным адресом.
Обычно прямая адресация применяется, если операндом является метка (имя ячейки памяти). Ассемблер, встроенный в debug, не поддерживает метки, и при применении прямой адресации необходимо прямо указывать смещение конкретной ячейки памяти. Чтобы различать непосредственные данные и исполнительный адрес последний берется в квадратные скобки. Например, команда MOV AX,[0034h] в отличие от предыдущего случая помещает в регистр AX не константу 0034h, а содержимое слова, находящегося по адресу DS:0034h.
Косвенная адресация
Как и в случае прямой адресации, операнд, имеющий косвенную адресацию располагается в памяти, однако исполнительный адрес операнда находится не в коде команды, а в одном из базовых или индексных регистров: BX, BP, SI и DI. При вычислении физического адреса операнда процессор использует содержимое сегментного регистра DS, если исполнительный адрес располагается в BX, SI, либо DI, и содержимое сегментного регистра SS, если исполнительный адрес находится в регистре BP.
Чтобы различать регистровую и косвенную адресацию, при косвенной адресации имя регистра заключается в квадратные скобки. Например, команда MOV [BX],BX, в которой первый операнд имеет косвенную адресацию, а второй регистровую, помещает содержимое регистра BX в ячейку памяти с адресом DS:BX.
Адресация по базе
Этот режим адресует данные в памяти. При адресации по базе процессор вычисляет исполнительный адрес с помощью сложения значения сдвига, который находится в коде команды с содержимым регистров BX или BP.
Данный режим адресации удобно использовать при доступе к структурированным записям данных, расположенным в разных областях памяти. В этом случае базовый адрес записи помещается в базовый регистр и доступ к ее отдельным элементам осуществляется по их сдвигу относительно базы. А для доступа к разным записям одной и той же структуры достаточно соответствующим образом изменить содержимое базового регистра. Например, команда MOV byte ptr [BP + 4],3Fh, в которой первый операнд имеет адресацию по базе, а второй непосредственную адресацию, помещает значение константы 3Fh в байт, имеющий адрес SS:BP + 4h. Для указания того, что в данном случае мы работаем именно с байтами, используется префикс byte ptr (word ptr префикс используется для указания того, что действия производятся над словами). Первый операнд этой команды можно трактовать как поле некоторой записи, располагаемой в сегменте стека. Базовый исполнительный адрес этой записи размещен в регистре BP, а сдвиг поля относительно этой базе, равный 4h, размещен в коде команды.