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

  • Сложение с использованием флага переноса.

  • Флаговый регистр (продолжение)

  • Лабораторная работа 7 Флаговый регистр


    Скачать 49 Kb.
    НазваниеЛабораторная работа 7 Флаговый регистр
    Дата30.09.2022
    Размер49 Kb.
    Формат файлаdoc
    Имя файлаLaboratornarabota_7.doc
    ТипЛабораторная работа
    #706771
    Лабораторная работа № 7
    Флаговый регистр

    Девять из 16 битов флагового регистра являются активными и определяют текущее состояние машины и результатов выполнения. Многие арифметические команды и команды сравнения изменяют состояние флагов. Назначение флаговых битов:

    Флаг

    № бита

    0

    1

    Назначение

    C (Перенос)

    0

    NC

    CY

    Содержит перенос из старшего бита, после арифметических операций, а также последний бит при сдвигах или циклических сдвигах.

    При программировании на ассемблере наиболее часто используются флаги O, S, Z, и C для арифметических операций и операций сравнения, а флаг D для обозначения направления в операциях над строками
    Циклический сдвиг влево с переносом

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

    Задание 1.

    Поместите инструкцию RCL BL,1 по адресу 100, занесите в регистр число B7, выполняйте инструкцию циклического сдвига, каждый раз записывая значения флага С и содержимого BL в шестнадцатеричном и двоичном формате в таблицу до восстановления исходного значения регистра.

    С

    Значения битов регистра BL

    BL

    7

    6

    5

    4

    3

    2

    1

    0


    Сложение с использованием флага переноса.

    Инструкция ассемблера ADC AX,<слагаемое> складывает значения AX, слагаемого (значения регистра или напрямую указанного числа) и бит флага переноса. Результат помещается в AX.

    Задание 2.

    Напишите инструкции, выполнение которых приведет к выводу на экран значения бита переноса в виде цифры (символы 0 и 1, соответствующие коды 30h и 31h).
    Оператор цикла

    Инструкция ассемблера LOOP <смещение> позволяет организовать циклическое исполнение инструкций, расположенных начиная со значения <смещение> до этой инструкции. В регистре CX определяется количество повторений, каждое выполнение инструкции LOOP уменьшает значение CX на 1.

    Задание 3

    Напишите программу, которая выводит на экран в двоичном представлении число, записанное в регистре BL.
    Флаговый регистр (продолжение)

    Для всех флагов 1- истинно, 0- ложно.

    Флаг

    № бита

    0

    1

    Назначение

    O (Переполнение)

    11

    NV

    OV

    Указывает на переполнение старшего бита при арифметических командах.

    D (Направление)

    10







    Обозначает левое или правое направление пересылки или сравнения строковых данных (данных в памяти превышающих длину одного слова).

    I (Прерывание)

    9







    Указывает на возможность внешних прерываний

    T (Пошаговый режим)

    8







    Обеспечивает возможность работы процессора в пошаговом режиме. На пример, программа DOS DEBUG устанавливает данный флаг так, что возможно пошаговое выполнение каждой команды для проверки изменения содержимого регистров и памяти.

    S (Знак)

    7

    PL

    NG

    Содержит результирующий знак после арифметических операций (0 - плюс, 1 - минус).

    Z (Ноль)

    6

    NZ

    ZR

    Показывает результат арифметических операций и операций сравнения (0 - ненулевой, 1 - нулевой результат).

    A (Внешний перенос)

    4







    Содержит перенос из 3-го бита для 8-битных данных, используется для специальных арифметических операций.

    P (Контроль четности)

    2







    Показывает четность младших 8-битовых данных (1 - четное и 0 - нечетное число).


    Задание 1. Используя операцию вычитания, проанализируйте изменение значения флага Z в зависимости от равенства 0 результата операции.

    Проанализируйте изменение значения флага S в зависимости от знака результата операции вычитания.

    Используя операцию сложения, проанализируйте изменение значения флага O в зависимости от того, привела ли операция к переполнению (несоответствующему изменению знакового флага S)
    Операции условных переходов

    Условный переход по значению Z:

    JZ <смещение> - если результат последней арифметической операции – 0- переход по адресу <смещение>. В противном случае выполняется следующая операция.

    JNZ <смещение> - - переход по адресу в случа, если результат последней операции – не ноль

    Задание 2.

    Составьте программу обнуления регистра AX, в котором исходно записано некоторое число.
    Операция сравнения

    CMP AX,BX - результатом сравнения являются значения флагов, значения регистров не изменяются

    Задание 3

    Проанализируйте изменения флагов при сравнении разных чисел и составьте таблицу:

    AX

    BX

    Флаги-значения












    Инструкция условного перехода

    JL <смещение> Переход, если меньше. Эта инструкция выполняет переход по <адресу>, если в результате выполнения предшествующей инструкции CMP первый операнд этой инструкции меньше, чем второй.
    Задание 4.

    Составьте блок-схему и напишите на ассемблере программу, которая берет одну цифру младшего разряда из регистра BL (в BX записано число Аh) и выводит ее на экран (в шестнадцатеричном представлении).

    Перешлите блок-схему и файл программы в качестве отчета.

    Инструкция сдвига вправо

    SHR DL,CL DL-это младший байт регистра DX, сдвиг вправо в котором нужно выполнить. CL- это счетчик сдвига. В этом регистре указано число бит, на который производится сдвиг в регистре DL
    Задание 5

    Занесите в регистр DX число 72h

    Проанализируйте результат выполнения оператора SHR DL,CL при значениях в регистре CL равных 1, 2,4, представьте результат в виде таблицы.

    CL=

    № выполнения сдвига

    Биты DL

    Флаг C

    7

    6

    5

    4

    3

    2

    1

    0





























































    Какой сдвиг нужно выполнить, чтобы перевести цифру старшего разряда числа 72h в позицию младшего разряда? Какая цифра будет при этом записана в старшем разряде числа BL?

    Логика

    AND <регистр>,<операнд>.Операция выполняет побитовое логическое сложение операндов и заносит результат в регистр.

    Каким будет результат логического сложения числа 0Fh и каким-либо двузначным числом?
    Задание 6.

    Составьте программу, которая выводит на экран двузначное число из регистра BL, записанное в шестнадцатеричном формате


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