Студопедия

Мы поможем в написании ваших работ!




Краткие сведения о системе команд процессора

Лабораторная работа № 6

Организация вычислительного процесса с переходами и ветвлениями

 

Цель: Познакомиться с основными командами процессора, осуществляющими операции перехода (безусловно и по условию). Закрепить знание мнемонической записи команд. Научиться составлять вычислительные программы на языке Ассемблер с использованием ветвлений.

Оборудование:ПК, ОС Windows, программа Debug, методические указания.

 

Требования к отчету по лабораторной работе:

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

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

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

 

Краткие сведения о системе команд процессора

 

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

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

 

 

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

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

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

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

 

? ?
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, обозначающее нулевой признак, команда передает управление на адрес, указанный в ее операнде.

При необходимости значение флагов можно устанавливать принудительно с помощью специальных команд ассемблера.


<== предыдущая страница | следующая страница ==>
Пределы измерения __ . Класс точности | Задания для самостоятельной работы. 1. Письменно в тетради ответить на данное задание: предположим, что регистры AX, BX, CX и DX - содержат данные

Дата добавления: 2015-07-26; просмотров: 164; Нарушение авторских прав




Мы поможем в написании ваших работ!
lektsiopedia.org - Лекциопедия - 2013 год. | Страница сгенерирована за: 0.133 сек.