Главная страница
Навигация по странице:

  • Debug

  • Назовите

  • SP- FFEE

  • NV(нет) DF DN(ум) UP

  • DI(выкл) SF NG(отр) PL

  • Ввод команд в Ассемблере

  • (Смотреть приложение

  • Программа Debug. Изменение содержимого регистров. Команды программы Debug и определение форматов команд


    Скачать 109.32 Kb.
    НазваниеПрограмма Debug. Изменение содержимого регистров. Команды программы Debug и определение форматов команд
    Дата06.12.2022
    Размер109.32 Kb.
    Формат файлаdocx
    Имя файлаasembler.docx
    ТипПрограмма
    #831860

    Практическая работа №1

    Тема: Программа Debug. Изменение содержимого регистров. Команды программы Debug и определение форматов команд.

    Цель работы:

    1. Знакомство с регистрами процессора через программу Debug, изучение команд программы Debug. Присваивание регистру любого значения. Изменение содержимого регистров процессора.


    2. Знакомство с командой Assembler, Unassembled, Display и определение форматов команд. "Копирование" содержимого одного регистра в другой.

    Ход работы:


    1. Задание: Вызов программы Debug.

    Вызвать программу Debug: для этого в командной строке DOS набрать слово debug. После каждой команды нажимать Enter:
    Рисунок 1 – Вызвал программу Debug


    1. Теория: Команда: -R (Register) –отображает на экране содержимого всех регистров, адрес текущей ячейки, машинный код команды и команду для выполнения.


    Команда: Rm –отображение на экране содержимого регистра m, где m имя регистра.
    Задание: Если мы хотим изменить значение одного из регистров, мы вводим R и имя регистра. Давайте поместим в AX слово * CHRT

    _R AX


    Рисунок 2 – поместил в
    AX слово CHRT



    На экране:

    AX 0000

    :

      ":" - это приглашение ввести новое значение. Мы отвечаем *CHRT

    :* CHRT

    На экране:

    ^Error

      Debug выдал сообщение об ошибке, т.к. * CHRT не шестнадцатеричное. Попробуйте ввести D3E0:

    _R AX

    AX 0000

    :D3E0

    Вы увидите, что ничего не изменилось кроме регистра AX. Ему присвоили новое значение. 

    1. Теория: Еще один важный момент: команда Register может использоваться только для 16-битных регистров (AX, BX и т. д.). Она не может изменять значения 8-битных регистров (AH, AL, BH и т. д.). Например, чтобы изменить AH, вы должны ввести новое значение в регистр AX с новым AH и старым значением AL.

    2. Задание: Вывести на экран все регистры.

      Рисунок 3 – вывел все регистры




    1. Запишите содержимое всех регистров. Назовите все отображенные регистры и выучите их:

    AX - D3E0 умножение, деление и ввод\вывод слов

    BX- 0000 перекодирование

    CX- 0000 операции со строками, циклы

    DX- 0000 умножение и деление слов, неявный ввод\вывод

    SP- FFEE операция со стеком

    BP- 0000

    SI- 0000 операции со строками

    DI- 0000 операции со строками

    DS- 1397 Сегмент данных

    ES- 1397 сегмент промежуточных данных

    SS – 1397 сегмент стека

    CS- 1397 сегмент кода

    IP- 0100


    1. Назовите регистры общего назначения: D3E0, 0000, 0000, FFEE, 0000, 0000,




    1. Укажите адрес текущей ячейки: AX

      Рисунок 4 – адрес текущей ячейки

      Рисунок 5 – Присвоил значение регистру



    2. С помощью лекций расшифруйте и изучите состояния флагов, определяющих режим работы процессора:







    Наименование флага

    На экране мнемокоды

    OF




    OV(да)

    NV(нет)

    DF




    DN(ум)

    UP(увел)

    IF




    EI(вкл)

    DI(выкл)

    SF




    NG(отр)

    PL(полож)

    ZF




    ZR(да)

    NZ(нет)

    AF




    AC(да)

    NA(нет)

    PF




    PE(чет)

    PO(нечет)

    CF




    CY(да)

    NC(нет)


    С помощью команды _RF - измените значения флагов на противоположные. Запишите действия: (новые значения флагов вводим через пробел)

    Рисунок 6 – изменил значения флагов


    1. Ввод команд в Ассемблере: Теория:

      Рисунок 7 – ввел командыасемблер

      sub – команда целочисленного вычитания. Производит вычитание значений одного операнда из значения другого.
      mov – назначение: пересылка данных между регистрами или регистрами и памятью.
      nop – ничего не делает


    2. Введите команду U (unassemble), которая преобразовывает программу в машинные коды:

    U100L9


    где 100 адрес первой команды, L9 длина программы, равная количеству байт в программе. Запишите машинные шестнадцатеричные коды команд в ряд:


    1. Теория: Введите команду D (dump), которая выводит программу из памяти в машинных кодах:


    D100L9

    где 100 адрес первой команды, L9 длина программы, равная количеству байт в программе.
    Сравните машинный коды этой программы пункт 12 с пунктом 13.


    1. Расшифруйте символики команд, напишите соответствующие им команды на ассемблере: (Смотреть приложение I):






    Вывод: __________________________________________________________________________________________________________________________________


    написать администратору сайта