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

  • Рисунок 3 - 5.

  • _A 100

  • Практическая работа 2. Тема Регистры и оперативная память процессора. Сегмент кода. Команды в сегменте команд. Выполнение программ. Данные в сегментах данных


    Скачать 48.63 Kb.
    НазваниеПрактическая работа 2. Тема Регистры и оперативная память процессора. Сегмент кода. Команды в сегменте команд. Выполнение программ. Данные в сегментах данных
    Дата06.12.2022
    Размер48.63 Kb.
    Формат файлаdocx
    Имя файлаasembler_2.docx
    ТипПрактическая работа
    #831873

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

    Тема: Регистры и оперативная память процессора. Сегмент кода. Команды в сегменте команд. Выполнение программ. Данные в сегментах данных.

    Цель работы: ввод непосредственных данных в регистры и в память просмотр данных, команд в памяти. Выполнение пошаговой трассировки программы. Определение данных в сегменте памяти

    Ход работы:





    1. Представим, как выглядит программа в машинных кодах в памяти и результаты ее выполнения.

    У нас есть оперативная память, в которую загружается программа перед ее выполнением (сразу же по нажатию на Enter из Norton Commander). Операционная система, которая, собственно, и загружает программу, сообщает процессору, что надо начать обрабатывать команды, которые в памяти начинаются с такого-то адреса.  Начало программы в памяти процессор различает легко - ему указывает на это командный интерпретатор, а вот конец программы программист должен указывать сам!  Компьютер "распознает" как выход из программы специальную последовательность байтов. Например, для исполнимых файлов типа *.com достаточно последовательности CD и 20.

    1. Дана программа смотреть приложение, ввести её в программе Debug, с помощью команды А, вывести в машинных кодах при помощи команды U, записать полученное с самостоятельными комментариями



    Рисунок 1 -


    Определите размеры команд в байтах:

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

    Коды команды

    Какие адреса занимают команды

    Размеры команд в байтах



    BB3120

    0B1C 100; 0B1C 101; 0B1C 102






    B90250

    0B1C 103; 0B1C 104; 0B1C 105






    09CB

    0B1C 106; 0B1C 107






    D1C3

    0B1C 108; 0B1C 109






    C3

    0B1C 010A





























    1. Ввести программу в машинных кодах с помощью команды Е (enter):

    смотреть приложение
    Рисунок 2 -



    4. Вывести все регистры:


    Рисунок 3 -

    5.



    Рисунок 4 -
    Вместо шестнадцатеричных кодов мы легко могли вводит

    ь эти команды при помощи команды "A" (assemble).



    1. Для просмотра программы в сегменте кодов выполнить команду просмотра памяти:



    Рисунок 5 - Выполнил команду просмотра памяти



    1. Введите программу в Ассемблере и напишите комментарий:


    _A 100

    mov ax, i1 ;

    mov bx, i2 ;

    add ax, i2 ;

    div bx ;

    ret

    где: вместо i1 ввести сегодняшнее число, а i2 - месяц.

    1. Выведите на экран содержимое всех регистров и следующую по порядку команду, запишите их:


    Выполните трассировку с помощью команды:

    -t

    1. Укажите все результаты выполнения программы при выполнении трассировки и определите размеры команд в байтах:

    2. Чему равен результат операции? ___________________

    3. В каком регистре он находится? ____________________

    4. Опишите работу команды деления. Какие способы адресации она использует? Где находятся операнды и результаты операции?

    Вывод: ______________________________________________________________________

    ______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________





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