Лабораторная работа 7 Флаговый регистр
Скачать 49 Kb.
|
Лабораторная работа № 7Флаговый регистрДевять из 16 битов флагового регистра являются активными и определяют текущее состояние машины и результатов выполнения. Многие арифметические команды и команды сравнения изменяют состояние флагов. Назначение флаговых битов:
При программировании на ассемблере наиболее часто используются флаги O, S, Z, и C для арифметических операций и операций сравнения, а флаг D для обозначения направления в операциях над строками Циклический сдвиг влево с переносомИнструкция ассемблера RCL BL,1 производит сдвиг младшего байта регистра BX влево: переносит значение флага С в младший бит регистра и переносит значение старшего бита BL в флаг С, все остальные биты регистра смещаются на один влево. Задание 1. Поместите инструкцию RCL BL,1 по адресу 100, занесите в регистр число B7, выполняйте инструкцию циклического сдвига, каждый раз записывая значения флага С и содержимого BL в шестнадцатеричном и двоичном формате в таблицу до восстановления исходного значения регистра.
Сложение с использованием флага переноса. Инструкция ассемблера ADC AX,<слагаемое> складывает значения AX, слагаемого (значения регистра или напрямую указанного числа) и бит флага переноса. Результат помещается в AX. Задание 2. Напишите инструкции, выполнение которых приведет к выводу на экран значения бита переноса в виде цифры (символы 0 и 1, соответствующие коды 30h и 31h). Оператор циклаИнструкция ассемблера LOOP <смещение> позволяет организовать циклическое исполнение инструкций, расположенных начиная со значения <смещение> до этой инструкции. В регистре CX определяется количество повторений, каждое выполнение инструкции LOOP уменьшает значение CX на 1. Задание 3 Напишите программу, которая выводит на экран в двоичном представлении число, записанное в регистре BL. Флаговый регистр (продолжение) Для всех флагов 1- истинно, 0- ложно.
Задание 1. Используя операцию вычитания, проанализируйте изменение значения флага Z в зависимости от равенства 0 результата операции. Проанализируйте изменение значения флага S в зависимости от знака результата операции вычитания. Используя операцию сложения, проанализируйте изменение значения флага O в зависимости от того, привела ли операция к переполнению (несоответствующему изменению знакового флага S) Операции условных переходовУсловный переход по значению Z: JZ <смещение> - если результат последней арифметической операции – 0- переход по адресу <смещение>. В противном случае выполняется следующая операция. JNZ <смещение> - - переход по адресу в случа, если результат последней операции – не ноль Задание 2. Составьте программу обнуления регистра AX, в котором исходно записано некоторое число. Операция сравненияCMP AX,BX - результатом сравнения являются значения флагов, значения регистров не изменяются Задание 3 Проанализируйте изменения флагов при сравнении разных чисел и составьте таблицу:
Инструкция условного переходаJL <смещение> Переход, если меньше. Эта инструкция выполняет переход по <адресу>, если в результате выполнения предшествующей инструкции CMP первый операнд этой инструкции меньше, чем второй. Задание 4. Составьте блок-схему и напишите на ассемблере программу, которая берет одну цифру младшего разряда из регистра BL (в BX записано число Аh) и выводит ее на экран (в шестнадцатеричном представлении). Перешлите блок-схему и файл программы в качестве отчета. Инструкция сдвига вправоSHR DL,CL DL-это младший байт регистра DX, сдвиг вправо в котором нужно выполнить. CL- это счетчик сдвига. В этом регистре указано число бит, на который производится сдвиг в регистре DL Задание 5 Занесите в регистр DX число 72h Проанализируйте результат выполнения оператора SHR DL,CL при значениях в регистре CL равных 1, 2,4, представьте результат в виде таблицы. CL=
Какой сдвиг нужно выполнить, чтобы перевести цифру старшего разряда числа 72h в позицию младшего разряда? Какая цифра будет при этом записана в старшем разряде числа BL? ЛогикаAND <регистр>,<операнд>.Операция выполняет побитовое логическое сложение операндов и заносит результат в регистр. Каким будет результат логического сложения числа 0Fh и каким-либо двузначным числом? Задание 6. Составьте программу, которая выводит на экран двузначное число из регистра BL, записанное в шестнадцатеричном формате |