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

  • На какие сегменты разбита память компьютера В какие регистры записываются начальные адреса сегментов

  • Какие регистры микропроцессора используются при выполнении арифметических операций

  • На какие флаги воздействуют арифметические команды

  • Какие режимы адресации могут применяться для доступа к данным при выполнении арифметических и поразрядных логических операций

  • Каким образом выполняются логические команды над словами

  • Линейное исполнение программ. Арифметические и поразрядные логические операции над целыми двоичными числами


    Скачать 17.26 Kb.
    НазваниеЛинейное исполнение программ. Арифметические и поразрядные логические операции над целыми двоичными числами
    Дата20.03.2022
    Размер17.26 Kb.
    Формат файлаdocx
    Имя файлаLaboratornaya_rabota_1_Otchyot.docx
    ТипОтчет
    #405858

    МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ

    ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

    ВЫСШЕГО ОБРАЗОВАНИЯ

    «ОРЛОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИМЕНИ И.С. ТУРГЕНЕВА»
    Кафедра «Программная инженерия»
    ОТЧЕТ

    по лабораторной работе № 1

    на тему:

    «Линейное исполнение программ. Арифметические и поразрядные логические операции над целыми двоичными числами»

    по дисциплине: «Архитектура ЭВМ и систем»

    Выполнил: Шифр:

    Учебно- научно- исследовательский институт информационных технологий

    Направление: «Информатика и вычислительная

    техника»

    Группа:

    Проверила: Подпись: _________

    Отметка о зачете: ________ Дата: «____» ______ 20__ г.


    Орел, 2018 г.

    1.Структура программы
    d_s segment

    a1 db 10 ; число 10

    b1 db 27 ; число 27

    sum db 0 ; хранение суммы

    raz db 0 ; разности

    tac db 0 ; хранение вычитания с учетом знака

    ope dw 0 ; хранение умножение с учетом знака

    eop dw 0 ; хранение умножения без учета знака

    ter dw 0 ; деление

    tfg db 0 ; двухбайтова¤ ¤чейка дл¤ хранени¤ произведени¤ с единичным значением

    kli db 0 ; двухбайтова¤ ¤чейка дл¤ хранени¤ произведени¤ с единичным значением

    d_s ends

    c_s segment

    assume ds:d_s, cs:c_s

    begin:

    mov ax,d_s

    mov ds,ax

    mov ah,a1 ; число 10

    mov al,b1 ; число 27

    add ah,al ; 10+27

    mov sum,ah ; 37

    mov ah,a1 ; 10

    mov al,b1 ; 27

    sbb ah,al ; 10-27

    mov raz,ah ; -17

    mov ah,a1 ; 10

    mov al,b1 ; 27

    neg b1 ; -27

    sbb ah,al ; 10-(-27)

    mov tac,ah ; 37

    mov al,a1 ; 27

    mov bl,b1 ; 10

    mov ah,0 ; ah=0 AX=27

    mov bh,0 ;bh=0 а BX=10

    neg al ;-27

    imul bl ;AX=albl=10(-27)=-270

    mov ope,AX ; ope=-270

    mov al,b1 ; 27

    mov bl,a1 ; 10

    mov ah,0 ; ah=0 AX=27

    mov bh,0 ;bh=0 а BX=10

    neg al ;-27

    mul bl ;AX=albl=1027=-270

    mov eop,AX ; eop=-270

    mov al,a1 ; 27

    mov bl,b1 ; 10

    mov ah,0 ; ah=0 AX=27

    mov bh,0 ;bh=0 а BX=10

    div bl ;AX=al/bl

    mov ter,AX ;

    mov al,10001100b

    or al, 01100000b

    not al

    and al,11010011b

    mov tfg,al

    mov ah,10010110b

    mov al,10001100b

    or al, 01100000b

    not al

    and al,11010011b

    xor ah,al

    mov kli,ah

    mov ah,4ch

    int 21h

    c_s ends

    end begin
    2. Контрольные вопросы


    1. Понятие сегмента, характеристики сегмента, организация сегмента.


    Сегмент – это прямоугольная область памяти, характеризующаяся начальным адресом и длиной. Начальный адрес (адрес начала сегмента) – это номер (адрес) ячейки памяти, с которой начинается сегмент. Длина сегмента – это количество входящих в него ячеек памяти. Сегменты могут иметь различную длину. Все ячейки, расположенные внутри сегмента, перенумеровываются, начиная с нуля. Адресация ячеек внутри сегмента ведется относительно начала сегмента; адрес ячейки в сегменте называется смещением или эффективным адресом - EA (относительно начального адреса сегмента).



    1. На какие сегменты разбита память компьютера? В какие регистры записываются начальные адреса сегментов?


    Сегмент данных для хранения операндов, сегмент кода для хранения операторов программы и сегмент стека – дополнительную память для временного размещения информации.

    Сегмент стека. Этот сегмент представляет собой область памяти, называемую стеком. Работу со стеком процессор организует по следующему принципу: последний записанный в эту область элемент выбирается первым.

    Для доступа к этому сегменту служит регистр SS (stack segment register) – сегментный регистр стека, содержащий начальный адрес сегмента стека и начальный адрес нового сегмента кода загружается в сегментный регистр CS



    1. Какие регистры микропроцессора используются при выполнении арифметических операций?


    AX – (AH, AL), BX – (BH, BL), CX – (CH, CL), DX – (DH, DL)



    1. На какие флаги воздействуют арифметические команды?


    Арифметические команды воздействуют на статусные и управляющие флаги. К ним относятся:

    • CF (Carry Flag) – флаг переноса. Устанавливается в 1, если при выполнении арифметических и некоторых операций сдвига возникает «перенос» из старшего разряда;

    • PF (Parity Flag) – флаг чётности. Проверяет младшие 8 битов результатов над данными. Чётное число единиц приводит к установке этого флага в 1, нечётное – в 0;

    • AF (Auxiliary Carry Flag) – флаг логического переноса в двоично-десятичной арифметике. Устанавливается в 1, если арифметическая операция приводит к переносу или займу четвёртого справа бита однобайтового операнда. Используется при арифметических операциях над двоично-десятичными кодами и кодами ASCII;

    • ZF (Zero Flag) – флаг нуля. Устанавливается в 1, если результат операции равен 0, в противном случае ZF обнуляется;

    • SF (Sign Flag) – флаг знака. Устанавливается в 1, если результат арифметической операции является отрицательным, в 0, если результат положительный;

    • OF (Overflow Flag) – флаг переполнения. Устанавливается в единицу при арифметическом переполнении, когда результат выходит за пределы разрядной сетки.

    К управляющим флагам относятся:

    • TF (Trap Flag) – флаг трассировки. Единичное состояние этого флага переводит процессор в режим пошагового выполнения программы;

    • IF (Interrupt Flag) – флаг прерываний. При нулевом состоянии этого флага прерывания запрещены, при единичном – разрешены (о механизме прерываний речь пойдёт в следующей главе);

    • DF (Direction Flag) – флаг направления. Используется в строковых операциях для задания направления обработки данных; при единичном состояния строки обрабатываются «справа налево», при нулевом – «слева направо».





    1. Какие режимы адресации могут применяться для доступа к данным при выполнении арифметических и поразрядных логических операций?


    Особенностью данных команд является то, что они записывают результат на место первого операнда (приёмника), вследствие чего операнд - приёмник должен находиться в регистре процессора. Операнд - источник может иметь любой режим адресации.


    1. Особенности выполнения операции умножения. Особенности выполнения операции деления. Распределение регистров.


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

    Второй операнд задан неявно; его местоположение фиксировано и зависит от размера операндов. Знаки результатов в операциях со знаком определяются по алгебраическим правилам.


    1. Основные логические операции и принципы их выполнения.




    • Инвертировать NOT OPR (OPR)not OPR – инвертирование всех битов операнда;

    • Объединить по «ИЛИ» OR DST, SRC (DST)(DST) or (SRC) –выполнение операции логического «ИЛИ» над соответствующими парами битов источника и приёмника;

    • Объединить по «И» AND DST, SRC (DST)(DST) and (SRC) – выполнение операции логического «И» над соответствующими парами битов источника и приёмника.




    1. Правила формирования масок для установки и сброса битов.


    Для установки и сброса битов используются несколько логических операций над двоичными словами. Их порядок очень важен, т.к. это обеспечит корректное выполнение команды на языке Ассемблер, что позволит выполнить определённое действие над числами. Формирование маски для установки битов и их сброс происходят в несколько этапов, а именно:

    • mov al,01001101b – переслать в регистр al двоичное значение 01001101b;

    • not al – инвертировать биты содержимое регистра al;

    • or al, 10000001b – установить нулевой и седьмой биты в регистре al в логическую единицу;

    • and al, 11110101b – сброс первого и третьего бита в регистре al.

    • mov tfg, al – пересылка выполненной операции над данными в ячейку памяти.


    1. Каким образом выполняются логические команды над словами?


    Логические команды на языке Ассемблера составляют неотъемлемую часть при написании программы. Как правило, они связаны с двоичными числами и действиями над ними.

    Любые логические операции над двоичными числами имеют следующий синтаксис, а именно:

    • mov al,10001100b – пересылка числа в регистр;

    • or al, 01100000b – выполнение операции;

    • mov tfg, al – пересылка выполненной операции над данными в ячейку памяти.

    После этого, результат выполненной команды или операции отображается на экране монитора.


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