Лабораторная работа №6 Организация вычислительного процесса с переходами и ветвлениями Требования к отчету по лабораторной работе



Скачать 71.85 Kb.
Дата12.11.2016
Размер71.85 Kb.
Лабораторная работа № 6
Организация вычислительного процесса с переходами и ветвлениями
Требования к отчету по лабораторной работе:

  1. Конспект теоретического материала.

  2. Выполненное на ПК практическое задание.

  3. Занесенные в тетрадь результаты выполнения практического задания (протоколы исполнения команд)


1. Краткие сведения о системе команд процессора
Команды перехода в системе команд процессора занимают одно из центральных мест. Рассмотрим основные команды передачи управления:

  1. безусловный переход – команда jmp

Формат команды: jmp адрес

– безусловный переход на ячейку с указанным адресом. Используется очень часто. По сути, выполняет то же самое действие, что и оператор goto в языках программирования


Например:
0C9D:0100 MOV AX,0001

0C9D:0103 MOV BX,0001

0C9D:0106 MOV CX,0001

0C9D:0109 ADD AX,0001

0C9D:010C ADD BX,AX

0C9D:010E JMP 0109





  1. Условный переход – условный переход выполняется в зависимости от сути проверяемого условия. Ассемблер содержит целую группу команд условного перехода. Переход выполняется, если соответствующее условие выполнено. Каждое условие является каким-либо состоянием флагов. Обычно перед командой условного перехода выполняется команда cmp, хотя это совсем не обязательно.

Формат команды: cmp операнд1, операнд2

– по вычитанию операнда2 из операнда1, команда меняет только флаги. Значение операндов не меняется

FLAGS – 16-битный регистр, где каждый бит имеет определенное значение:


11

10

?

?

7

6

4

2

0

OF

DF

IF

TF

SF

ZF

AF

PF

CF

CF (Carry Flag) - флаг переноса. Содержит значение "переносов" (0 или 1) из старшего разряда при арифметических операциях, некоторых операциях сдвига и циклического сдвига

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

AF (Auxiliary Carry Flag) - дополнительный флаг переноса. Устанавливается в 1, если арифметическая операция приводит к переносу четвертого справа бита (бит номер 3) в регистровой однобайтовой команде. Данный флаг имеет отношение к арифметическим операциям над символами кода ASCII.

ZF (Zero Flag) - флаг нуля. Устанавливается в качестве результата арифметических команд и команд сравнения. Как это ни странно, ненулевой результат приводит к установке нулевого значения этого флага, а нулевой - к установке единичного значения. Кажущееся несоответствие является, однако, логически правильным, так как 0 обозначает "нет" (т.е. результат не равен нулю), а единица обозначает "да" (т.е. результат равен нулю). Команды условного перехода JE и JZ проверяют этот флаг.

SF (SIgn Flag) - знаковый флаг. Устанавливается в соответствии со знаком результата (старшего бита) после арифметических операций: положительный результат устанавливает 0, а отрицательный - 1. Команды условного перехода JG и JL проверяют этот флаг.

TF (Trap Flag) - флаг пошагового выполнения. Этот флаг вам уже приходилось устанавливать, когда использовалась команда Т в отладчике DEBUG. Если этот флаг установлен в единичное состояние, то процессор переходит в режим пошагового выполнения команд, т.е. в каждый момент выполняется одна команда под пользовательским управлением.

IF (Interrupt Flag) - флаг прерывания. При нулевом состоянии этого флага прерывания запрещены, при единичном - разрешены.

DF (DIrection Flag) - флаг направления. Используется в строковых операциях для определения направления передачи данных. При нулевом состоянии команда увеличивает содержимое регистров SI и DI, вызывая передачу данных слева направо, при нулевом - уменьшает содержимое этих регистров, вызывая передачу данных справа налево

OF (Overflow Flag) - флаг переполнения. Фиксирует арифметическое переполнение, т.е. перенос вниз старшего (знакового) бита при знаковых арифметических операциях.

Например:

Команда CMP сравнивает два операнда и воздействует на флаги AF, CF, OF, PF, SF, ZF. Однако, нет необходимости проверять все эти флаги по отдельности. В следующем примере проверяется: содержит ли регистр BX нулевое значение:


0100 CMP BX,00 - сравнение BX с нулем

0103 JZ 0150 - переход на ячейку с адресом 0150 если нуль

…….. - (действия при не нуле)

0150 MOV AX, BA .. - точка перехода при BX=0


Если BX содержит нулевое значение, команда CMP устанавливает флаг нуля ZF в единичное состояние, и возможно изменяет (или нет) другие флаги. Команда JZ (переход, если нуль) проверяет только флаг ZF. При единичном значении ZF, обозначающее нулевой признак, команда передает управление на адрес, указанный в ее операнде.
При необходимости значение флагов можно устанавливать принудительно с помощью специальных команд ассемблера.
Команды ассемблера управления флагами


stc – установить CF в 1

clc – установить CF в 0

cld – установить DF=0

std – установить DF=1

cli – запретить прерывания (IF=0)

sti – разрешить прерывания (IF=1)

pushf – поместить FLAGS в стек

popf – загрузить FLAGS из стека



Команды условного перехода

В общем случае формат команд условного перехода можно представить следующим образом: jcc адрес (jcc – одна из команд в нижеследующей таблицы) – условный переход.



Код команды

Реальное условие

Условие для CMP

Код
команды

Реальное
условие

Условие для CMP

JA

CF=0 и ZF=0

если выше

JG

ZF=0 и SF=OF

если больше

JAE
JNC


CF=0

если выше или равно
если нет переноса

JGE

SF=OF

если больше или равно

JB
JC


CF=1

если ниже
если перенос

JL

SF<>OF

если меньше

JBE

CF=1 ZF=1

если ниже или равно

JLE

ZF=1 | SF<>OF

если меньше или равно

JE
JZ


ZF=1

если равно
если ноль

JNE
JNZ


ZF=0

если не равно
если не ноль

JO

OF=1

если есть переполнение

JNO

OF=0

если нет переполнения

JS

SF=1

если есть знак

JNS

SF=0

если нет знака

JP

PF=1

если есть четность

JNP

PF=0

если нет четности


2. Задания для самостоятельной работы
1. Письменно в тетради ответить на данное задание: предположим, что регистры AX, BX, CX и DX - содержат данные. Определите команды CMP (где необходимо) и команды безусловного перехода для следующих проверок:

а) значение в DX больше, чем в CX?

б) значение в BX меньше, чем в AX?

в) CX содержит нуль?

г) значение в BX равно или меньше, чем в AX?

д) значение в DX равно или больше, чем в CX?




  1. Согласно номеру вашего варианта выполните индивидуальное задание:


Вариант 1

Большее из трех натуральных чисел умножить на 10, среднее по величине — на 5, меньшее — на 2.


База данных защищена авторским правом ©bezogr.ru 2016
обратиться к администрации

    Главная страница