Инфоурок Информатика Другие методич. материалыЛабораторная работа "Арифметические операции. Битовые команды"

Лабораторная работа "Арифметические операции. Битовые команды"

Скачать материал

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

Тема: «Арифметические операции. Битовые команды»

Цель работы: изучить арифметические операции языка ассемблера; научиться их использовать при составлении программ; научиться применять битовые команды.

Ход работы:

1.     Изучить теоретическую часть

2.     Выполнить задание в соответствии с указаниями

3.     Ответить на контрольные вопросы

4.     Предъявить преподавателю результаты работы: проект и исходный код

5.     Оформить отчет в соответствии с ходом работы

Теоретическая часть:

Арифметические операции на языке ассемблера выполняются над целыми числами четырех типов:

Беззнаковыми двоичными, знаковыми двоичными, упакованными десятичными и неупакованными десятичными.

В данной лабораторной работе рассматриваются арифметические операции над беззнаковыми числами.

Используются следующие команды:

ADD – сложить, SUB – вычесть.

Описание команд: Работают с 8 и 16 битовыми операндами, инструкция ADD выполняет сложение операнда источника (правого операнда) с содержимым операнда приемника (левый операнд), результат помещается в операнд приемник. Инструкция SUB делает тоже самое, только она вычитает операнд источник из операнда приемника,  результат помещается в операнд приемник. Операндами могут быть регистры, константы, ячейки памяти в различных комбинациях, но нельзя добавить (вычесть) значение одной ячейки памяти к другой, а также в качестве операнда источника использовать константу (непосредственное значение). Команда воздействует на шесть флагов: AF, CF, OF, PF, SF, ZF.

Например, флаг переноса CF=1 если результат действия не помещается в операнде приемнике, в противном случае CF=0.

MUL - умножить.

Описание команд: инструкция MUL перемножает 8 и 16 битовые беззнаковые множители, создавая 16 или 32 битовое произведение. При 8 битовом произведении один из операндов в регистре AL другой может быть 8 битовым регистром общего назначения или переменной памяти соответствующего назначения. Результат помещается в регистр AX (16 битовый). При 16 битовых множителях один из сомножителей в 16 битовом регистре общего назначения другой в переменной памяти, 32 битовый результат в регистрах DX:AX. При этом младшие 16 бит в AX старшие в DX.

Команда воздействует на два флага: CF, OF.

DIV – разделить.

Описание команд: позволяет разделить 32 битовое значение на 16 битовое значение или 16 битовое на 8 битовое. При делении 16 битового значения делимое помещается в AX, 8 битовый делитель помещается в регистр или в переменную соответствующего размера. Результат (8 битовый) помещается в AL, остаток в AH.

Состояние флагов не определено, но если частное не помещается в регистре AL (AX)  процессор генерирует прерывание типа 0 (деление на 0). В заданиях используются директивы и команды, изученные в предыдущих лабораторных работах.

БИТОВЫЕ КОМАНДЫ

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

Логические операции (или булевы команды) – как, следует из названия, выполняют логические операции – отрицание, конъюнкцию, дизъюнкцию и им присуще ряд черт.

Команда not на флаги не действует и работает по следующему принципу. Например:

Все остальные команды сбрасывают CF и OF, а флаги SF, ZF, PF изменяют по обычным правилам.

Команда and производит поразрядное логическое умножение операндов и записывает результат на место первого операнда. Например:

Команда test, аналог предыдущей команды, но результат логического умножения никуда не записывается, основное назначение – установка флагов, особенно флаг нуля ZF.

Команда or производит поразрядное логическое сложение операндов и записывает результат на место первого операнда. Например:

Команда xor производит поразрядное логическое сложение операндов и записывает результат на место первого операнда. Данная операция соответствует фразе «или то, или другое, но не то и не другое», т.е. если биты совпадают, записывается 0, иначе 1.

Команды сдвига – эти команды перемещают содержимое ячейки влево или вправо. Одним из операндов этих команд является количество сдвигов cnt. Оно либо равно 1, либо определяется содержимым регистра CL (при этом CL сохраняет своё содержимое после операции).

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

Арифметические сдвиги – предназначены для реализации быстрого умножения и деления знаковых чисел на степени двойки.

Примечание: команда sal при трансляции будет воспринята как shl, так кА это разные мнемонические названия одной и той машинной команды.

Циклические сдвиги. Особенность циклических  сдвигов в том, что «уходящий» бит не теряется, а возвращается в операнд, но с другого конца.

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

Формула вычислений: X=(A*2+B*C)/(D-3)

Приведенная программа сначала резервирует ячейки памяти под переменные, затем выполняет умножение однобайтовых чисел (А*2), результат умножения – двухбайтовое число в регистре АХ, сохраняется в регистре СХ, далее выполняется умножение однобайтовых чисел (B*C), результат – двухбайтовое число храниться в аккумуляторе AX. После сложения двух сомножителей и вычисления знаменателя (В-3) выполняется деление. Результат присваивается переменной X.

1.     Наберите приведенную программу 1, запишите исходный файл с расширением *.asm, получите файл с расширением *.exe.

2.     Выполните программу с 5 вариантами различных начальных значений переменных A, B, C, D по шагам (см. таблицу 1) и запишите результат выполнения в таблицу (в регистре AL – частное, AH – остаток). Переведите результат в десятичную систему.

                 

3.     Наберите приведенную программу 2, запишите исходный файл с расширением *.asm, получите файл с расширением *.exe.

4.     Выполните программу с 5 вариантами различных начальных значений регистра al. Переведите результат и запишите таблицу 2 в двоичной и десятичной системе.

 

Контрольные вопросы:

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

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

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

4.     В чем особенность выполнения арифметических операций с знаковыми и беззнаковыми числами?

5.     В каком регистре необходимо указывать величину сдвига в команде сдвига?

 

 

 

 

 

 

Просмотрено: 0%
Просмотрено: 0%
Скачать материал
Скачать материал "Лабораторная работа "Арифметические операции. Битовые команды""

Методические разработки к Вашему уроку:

Получите новую специальность за 3 месяца

Администратор баз данных

Получите профессию

Бухгалтер

за 6 месяцев

Пройти курс

Рабочие листы
к вашим урокам

Скачать

Скачать материал

Найдите материал к любому уроку, указав свой предмет (категорию), класс, учебник и тему:

6 663 097 материалов в базе

Скачать материал

Другие материалы

Вам будут интересны эти курсы:

Оставьте свой комментарий

Авторизуйтесь, чтобы задавать вопросы.

  • Скачать материал
    • 04.10.2016 2835
    • DOCX 1.4 мбайт
    • 29 скачиваний
    • Оцените материал:
  • Настоящий материал опубликован пользователем Ченская Ирина Борисовна. Инфоурок является информационным посредником и предоставляет пользователям возможность размещать на сайте методические материалы. Всю ответственность за опубликованные материалы, содержащиеся в них сведения, а также за соблюдение авторских прав несут пользователи, загрузившие материал на сайт

    Если Вы считаете, что материал нарушает авторские права либо по каким-то другим причинам должен быть удален с сайта, Вы можете оставить жалобу на материал.

    Удалить материал
  • Автор материала

    Ченская Ирина Борисовна
    Ченская Ирина Борисовна
    • На сайте: 8 лет и 1 месяц
    • Подписчики: 0
    • Всего просмотров: 112638
    • Всего материалов: 70

Ваша скидка на курсы

40%
Скидка для нового слушателя. Войдите на сайт, чтобы применить скидку к любому курсу
Курсы со скидкой

Курс профессиональной переподготовки

Фитнес-тренер

Фитнес-тренер

500/1000 ч.

Подать заявку О курсе

Курс повышения квалификации

Применение компьютерных моделей при обучении математике и информатике в рамках ФГОС ООО

72 ч. — 180 ч.

от 2200 руб. от 1100 руб.
Подать заявку О курсе
  • Сейчас обучается 49 человек из 28 регионов
  • Этот курс уже прошли 178 человек

Курс повышения квалификации

Методика преподавания информатики в начальных классах

72 ч. — 180 ч.

от 2200 руб. от 1100 руб.
Подать заявку О курсе
  • Этот курс уже прошли 67 человек

Курс профессиональной переподготовки

Информационные системы и технологии: теория и методика преподавания в профессиональном образовании

Преподаватель информационных систем и технологий

300/600 ч.

от 7900 руб. от 3650 руб.
Подать заявку О курсе
  • Этот курс уже прошли 13 человек

Мини-курс

Инновационные технологии в краеведческой и географической работе со школьниками: применение туристических приемов для эффективного обучения

6 ч.

780 руб. 390 руб.
Подать заявку О курсе

Мини-курс

Стратегии B2B маркетинга: от анализа до продаж

6 ч.

780 руб. 390 руб.
Подать заявку О курсе

Мини-курс

Эффективное управление запасами

4 ч.

780 руб. 390 руб.
Подать заявку О курсе