Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
81
Добавлен:
11.02.2014
Размер:
54.27 Кб
Скачать

3

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

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

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

Флаг

№ бита

0

1

Назначение

C (Перенос)

0

NC

CY

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

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 - нечетное число).

При программировании на ассемблере наиболее часто используются флаги 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.

Задание 4.

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

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

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

Операции условных переходов

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

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

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

Задание 5.

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

Операция сравнения

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

Задание 6.

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

AX

BX

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

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

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

Задание 7.

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

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

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

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

Задание 8.

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

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

CL=

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

Биты DL

Флаг C

7

6

5

4

3

2

1

0

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

Логика

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

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

Задание 9.

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