лаба 5 эвм. Лабораторная работа 5 Регистры процессора 8086
Скачать 47.5 Kb.
|
Лабораторная работа № 5Регистры процессора 8086Цель работы: изучить назначение регистров процессора 8086 и основные принципы использования регистров для управления работой процессора. Изучить способ сегментирования памяти процессора 8086. Отладчик DEBUG Запуск отладчика. Для запуска отладчика выполните команду cmd. В командной строке введите команду debug. Приглашение отладчика «-» Список команд отладчика. Для вывода списка команд отладчика введите символ «?» Регистры как переменные. Представление содержимого регистровСодержимое регистров выводится на экран по команде R Пример: -r AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0ACA ES=0ACA SS=0ACA CS=0ACA IP=0100 NV UP EI PL NZ NA PO NC 0ACA:0100 3E DS: 0ACA:0101 62 DB 62 Задание 1Назовите регистры общего назначения (РОН). Определите, какие значения в них записаны? Скопируйте результат в отчет. Для этого в левом верхнем углу окна отладчика откройте меню редактирования, выберите пункт «Пометить», выделите в окне на экране нужную область текста, выберите в меню пункт «Копировать», перейдите в окно болкнота, и выполните вставку. Изменение значений в регистрахДля записи данных в определенный регистр используется команда R <имя регистра> Пример: -r AX AX 0000 :23 -r AX AX 0023 : Задание 2. Введите в РОН шестнадцатеричные числа 56h, 1F3h, D8h, AB1h. Просмотрите содержимое всех регистров. Внесите результат в отчет Введите во все РОН нулевые значения. Проверьте содержимое регистров Размещение двухбайтовых инструкций процессора в ячейках памяти Задание 3. Из каких частей состоит адрес ячейки памяти в реальном режиме работы процессора? Укажите размер сегмента в адресуемой памяти процессора в реальном режиме. Какой наименьший сдвиг возможен между начальными байтами последовательных сегментов? Определите текущие адреса сегмента данных и сегмента кода. Запись числа в памятьДля записи числа в ячейку памяти используется команда E <смещение> П Старое значение в памяти ример -E 100 0 ACA:0100 3E.01 Записываемое значение Адрес сегмента Смещение -E 101 0ACA:0101 62.D8 -r AX=0023 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0ACA ES=0ACA SS=0ACA CS=0ACA IP=0100 NV UP EI PL NZ NA PO NC 0ACA:0100 01D8 ADD AX,BX Из полученного результата видно, что отладчик интерпретирует двухбайтную инструкцию по адресу 0ACA:0100 как операцию сложения ADD значений регистров AX и BX Заполнение последовательных ячеек памяти. Для выполнения этого действия используется команда E <смещение первой ячейки>. После ввода цифр первого числа нажмите пробел и вводите цифры второго числа и т.д. Задание 4. Определите, с какого адреса должен начинаться сегмент данных, если сегмент кода имеет размер 64 кбайт. Установите нужное значение адреса сегмента данных. Введите в область сегмента данных последовательность чисел 10h,25h,1F,AC. В какой сегмент вводит значения отладчик, исполняя команду Е со смещением в качестве аргумента? Используйте формат команды E <сегмент>:<смещение> для ввода кода инструкции ADD в сегмент кода, начиная со смещения 0100 Коды инструкций
5. Указатель следующей инструкции Смещение адреса следующей инструкции в сегменте кода содержится в регистре IP Для выполнения следующей инструкции процессором используется команда T. После ее выполнения значение IP увеличивается на 2, если выполненная инструкция не была инструкцией перехода. Задание 5. Введите в регистр BX значение. Введите в сегмент кода инструкцию сложения со смещением 100. Установите IP на адрес введенной инструкции. Выполните сложение. Повторите инструкцию сложения еще трижды, каждый раз устанавливая соответствующий адрес в IP. Введите в регистр BX значение 2 Введите инструкцию умножения со смещением 102. Выполните эту инструкцию Выполните инструкцию вычитания 3 раза подряд. Смещение вычитания 104. Выполните инструкцию деления (смещение 106) Вернитесь к инструкции вчитания и выполните ее Какое значение получено в регистре AX? Объясните его. Что изменилось в регистре флагов и почему? 6. Листинг сегмента кода Для просмотра содержимого сегмента кода используется команда U <начальное смещение> Задание 6. Выведите листинг сегмента кода со смещения 100. Скопируйте его в отчет. Разделите число7С4B12h на число 1С0. Чему равно частное и остаток? Чему равно произведение чисел 7C4Bh и 1A5? 7. Программные прерывания Параметры для обработчика прерываний, вызываемого инструкцией INT 21, содержатся в РОН: AH- номер прерывания DL-параметр для прерывания Вывод символа на экран Для выполнения этой операции используется прерывание 02h, ASCII -код символа в регистре DL Выполнение последовательности инструкций Для выполнения последовательности инструкций в сегменте кода, начиная с той, на которую указывает IP, используется команда G <смещение останова > Эту команду нужно использовать при выполнении прерывания, чтобы избежать его трассировки. Задание 7. Введите код прерывания 21 со смещением 108, укажите номер прерывания 02h код символа 44h. Выполните инструкцию командой g от 108 до 110. Попробуйте объяснить полученный результат. |