Всероссийские профессиональные конкурсы педагогических работников

Организатор включен в Перечень Минпросвещения России

Конкурсы ко Дню народного единства — 4 ноября

автор: Токаева Яна Юрьевна

преподаватель бюджетное профессиональное образовательное учреждение Вологодской области «Череповецкий металлургический колледж имени академика И.П. Бардина»

МЕТОДИЧЕСКАЯ РАЗРАБОТКА УЧЕБНОГО ЗАНЯТИЯ ПО ТЕМЕ «ДЕЛЕНИЕ. СДВИГ И ОКРУГЛЕНИЕ»

МЕТОДИЧЕСКАЯ РАЗРАБОТКА УЧЕБНОГО ЗАНЯТИЯ 

ПО ТЕМЕ «ДЕЛЕНИЕ. СДВИГ И ОКРУГЛЕНИЕ»

План-конспект учебного занятия 

по теме «Деление. Сдвиг и округление»

 

Разработчик: Токаева Я.Ю., преподаватель БПОУ ВО «ЧМК».

Дисциплина/МДК: МДК 01.01 Системное программирование.

Цель занятия: 

‒ образовательная – изучение особенности реализации команды деления, сдвига и округления на языке Ассемблер;

‒ развивающая – совершенствование учебно-информационных и учебно-интеллектуальных умений;

‒ воспитательная – формирование научного мировоззрения, воспитание устойчивого интереса к изучаемому материалу, положительного отношения к знаниям. 

Задачи:

‒ закрепить особенности применения команды деления и реализации операций сдвига и округления при программировании на языке Ассемблер;

‒ научиться применять на практике различные виды команд при создании фрагментов программы на языке Ассемблер.

Тип занятия: изучения нового материала.

Вид занятия: лекция.

Методы: репродуктивный, частично-поисковый, наглядно-иллюстративный.

Оборудование и наглядные пособия: презентация, мультимедийный проектор.

Список источников:

  1. Зубков С. В. Assembler. Для DOS, Windows и Unix. 12-е изд. – М.: ДМК, 2016. – 514 с.
  2. Углев С.Л. 20 уроков Accembler. – М.: SelfPub, 2018. – 80 с.
  3. Фельдман С. К. Системное программирование. Полный курс лекций. – М.: Бук Пресс, 2016. – 514 с.
  4. Интернет Университет информационных технологий – Интуит (Национальный Открытый университет). – Режим доступа: http://intuit.ru, свободный.

Структура занятия:

  1. Организационный момент.
  2. Актуализация опорных знаний.
  3. Подготовка к активному и осознанному изучению нового материала.
  4. Изучение нового материала.
  5. Закрепление полученных знаний.
  6. Рефлексия, подведение итогов занятия, оценочная деятельность.
  7. Выдача домашнего задания.

Ход занятия:

  1. Организационный момент

Приветствие, преподаватель отмечает присутствующих. 

  1. Актуализация опорных знаний

Проверка ранее изученных понятий: команды ассемблера, типы команд, арифметические команды, логические команды, регистры, типы регистров, регистры общего назначения.

  1. Подготовка к активному и осознанному изучению нового материала

Определение темы занятия.

Постановка целей и задач занятия вместе со студентами.

Определение плана занятия.

  1. Изучение нового материала.

Содержание:

  1. Деление. 
  2. Сдвиг и округление.
  3. Деление. 

Операция деления для беззнаковых данных выполняется командой DIV, a для знаковых ‒ IDIV. Ответственность за подбор подходящей команды лежит на программисте.

Существуют две основные операции деления: деление слова на байт и деление двойного слова на слово.

С какой операцией по данному критерию схожа операция деления?

Деление слова на байт. Делимое находится в регистре AX, а делитель ‒ в байте памяти или в однобайтовом регистре. После деления остаток получается в регистре AH, а частное ‒ в AL. Так как однобайтовое частное очень мало (максимально +255 (шест.FF) для беззнакового деления и +127 (шест.7F) для знакового), то данная операция имеет ограниченное использование.

Деление двойного слова на слово. Делимое находится в регистровой паре DX:AX, а делитель ‒ в слове памяти или в регистре. После деления остаток получается в регистре DX, а частное – в регистре AX. Частное в одном слове допускает максимальное значение +32767 (шест.FFFF) для беззнакового деления и +16383 (шест.7FFF) для знакового.

В единственном операнде команд DIV и IDIV указывается делитель. Рассмотрим следующую команду: 

DIV DIVISOR

В случае, если поле DIVISOR определено как байт (DB), то операция предполагает деление слова на байт. В случае, если поле DIVISOR определено как слово (DW), то операция предполагает деление двойного слова на слово.

При делении, например, 13 на 3, получается результат 4 1/3. Частное есть 4, а остаток ‒ 1. Заметим, что ручной калькулятор выдает в этом случае результат 4,333…. Значение содержит целую часть (4) и дробную часть (,333). Значение 1/3 и 333… есть дробные части, в то время как 1 есть остаток от деления.

Команда DIV делит беззнаковые числа.

Команда IDIV (Integer DIVide) выполняет деление знаковых чисел.

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

При делении на степень числа 2 (2, 4, и так далее) более эффективным является сдвиг вправо на требуемое число битов. В следующих примерах предположим, что делимое находится в регистре AX:

Деление на 2:

SHR AX,1

Деление на 8:

MOV CL,3

SHR AX,CL

В чем состоит отличие данного метода от метода реализации эффективного умножения?

Используя команды DIV и особенно IDIV, очень просто вызвать переполнение. Прерывания приводят (по крайней мере, в системе, используемой при тестировании этих программ) к непредсказуемым результатам. В операциях деления предполагается, что частное значительно меньше, чем делимое.

Деление на ноль всегда вызывает прерывание. Но деление на 1 генерирует частное, которое равно делимому, что может также легко вызвать прерывание.

Чем опасно прерывание?

Рекомендуется использовать следующее правило: если делитель ‒ байт, то его значение должно быть меньше, чем левый байт (AH) делителя; если делитель ‒ слово, то его значение должно быть меньше, чем левое слово (DX) делителя.

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

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

В случае, если частное слишком велико, то деление можно выполнить с помощью циклического вычитания. Метод заключается в том, что делитель вычитается из делимого и в этом же цикле частное увеличивается на 1. Вычитание продолжается, пока делимое остается больше делителя. В следующем примере, делитель находится в регистре AX, а делимое ‒ в BX, частное вырабатывается в CX:

SUB CX,CX ; Очистка частного CХ

CMP AX,BX ; В случае, если делимое < делителя,

JB C30 ; то выйти

SUB AX,BX ; Вычитание делителя из делимого

INC CX ; Инкремент частного

JMP C20 ; Повторить цикл С20:

RET ; Частное в CX, остаток в AX

В конце подпрограммы регистр CX будет содержать частное, а AX ‒ остаток. Пример умышленно примитивен для демонстрации данной техники деления. В случае, если частное получается в регистровой паре DX:AX, то необходимо сделать два дополнения:

  1. В метке C20 сравнивать AX и BX только при нулевом DX.
  2. После команды SUB вставить команду SBB DX,00.

Ответы на вопросы студентов, возникшие в ходе рассмотрения материала, пояснение трудных моментов.

  1. Сдвиг и округление.

Рассмотрим процесс округления числа до двух десятичных знаков после запятой. В случае, если число равно 12,345, то необходимо прибавить 5 к отбрасываемому разряду и сдвинуть число вправо на один десятичный разряд:

Число: 12,345 Плюс 5: +5 ‒ Округленное число: 12,350 = 12,35

В случае, если округляемое число равно 12,3455, то необходимо прибавить 50 и сдвинуть на два десятичных разряда. Для 12,34555 необходимо прибавить 500 и сдвинуть на три десятичных разряда:

12,3455+50 — — — 12,3505 = 12,35 

12,34555+500 — — -12,35055 = 12,35

К числу, имеющему шесть знаков после запятой, необходимо прибавить 5000 и сдвинуть на четыре десятичных разряда и так далее. Поскольку данные представляются в компьютере в двоичном виде, то 12345 выглядит как шест.3039. Прибавляя 5 к 3039, получим 303E, что соответствует числу 12350 в десятичном представлении. Но вот сдвиг на одну двоичную цифру дает в результате шест.181F, или 6175 ‒ то есть, сдвиг на одну двоичную цифру просто делит число пополам.

Но нам необходим такой сдвиг, который эквивалентен сдвигу вправо на одну десятичную цифру. Такой сдвиг можно осуществить делением на 10 (шест.A):

Шест.303E : Шест.A = 4D3 или дес.1235

Преобразование шест.4D3 в ASCII-формат дает число 1235. Теперь остается лишь вставить запятую в правильную позицию числа 12,35, и можно выдать на экран округленное и сдвинутое значение.

Таким образом, можно округлять и сдвигать любые двоичные числа.

Для трех знаков после запятой необходимо прибавить 5 и разделить на 10, для четырех знаков после запятой: прибавить 50 и разделить на 100. Возможно, вы заметили модель: фактор округления (5, 50, 500 и так далее) всегда составляет половину фактора сдвига (10, 100, 1000 и так далее).

Конечно, десятичная запятая в двоичном числе только подразумевается.

Некоторые применения программ допускают наличие отрицательных величин. Знак минус может устанавливаться после числа, например, 12,34-, или перед числом -12,34. Программа может проверять наличие минуса при преобразовании в двоичный формат. Можно оставить двоичное число положительным, но установить соответствующий индикатор исходной отрицательной величины. После завершения арифметических операций знак минус при необходимости может быть вставлен в ASCII поле.

В случае, если необходимо, чтобы двоичное число было также отрицательным, то можно преобразовать, как обычно, ASCII-формат в двоичный. Будьте внимательны при использовании команд IMUL и IDIV для обработки знаковых данных. Для округления отрицательных чисел следует не прибавлять, а вычитать фактор 5.

Важно:

1) ASCII-формат требует один байт на каждый символ. В случае, если поле содержит только цифры от 0 до 9, то замена старших троек в каждом байте на нули создает распакованный десятичный формат. Сжатие числа до двух цифр в байте создает упакованный десятичный формат.

2) После ASCII-сложения необходимо выполнить коррекцию с помощью команды AAA; после ASCII-вычитания ‒ коррекция с помощью команды AAS.

3) Прежде чем выполнить ASCII-умножение, необходимо преобразовать множимое и множитель в «распакованный десятичный» формат, обнулив в каждом байте левые тройки. После умножения необходимо выполнить коррекцию результата с помощью команды AAM.

4) Прежде чем выполнить ASCII-деление, необходимо преобразовать делимое и делитель в «распакованный десятичный» формат, обнулив в каждом байте левые тройки и выполнить коррекцию делимого с помощью команды AAD.

5) Для большинства арифметических операций используйте преобразование чисел из ASCII-формата в двоичный формат. В процессе такого преобразования проверяйте на корректность ASCII-символы: они должны быть от шест.30 до шест.39, могут содержать десятичную запятую (точку) и, возможно, знак минус.

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

Ответы на вопросы студентов, возникшие в ходе рассмотрения материала, пояснение трудных моментов.

  1. Закрепление полученных знаний

Для закрепления изученного материала студентам предлагается построить блок-схемы следующих алгоритмов:

— операции деления знаковой;

— операции деления беззнаковой;

— операции деления посредством вычитания (после построения данной блок-схемы предлагается сравнить все полученные алгоритмы);

— сдвига;

— округления.

  1. Рефлексия, подведение итогов занятия, оценочная деятельность

Подведение итогов занятия.

Оценка студентами своей работы на занятии, выявление трудностей, возникших в ходе изучения вопросов, их анализ. 

Проверка, были ли решены в ходе занятия поставленные задачи:

  • в чем заключается принцип действия операции деления?
  • на какие ключевые моменты необходимо обратить внимание при использовании деления?
  • каким образом в ассемблере реализуется операция округления?

Проверка, была ли достигнута поставленная цель.

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

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

Выставление оценок за занятие.

  1. Выдача домашнего задания

Домашнее задание: 

1) повторение материала по конспекту лекции; 

2) Фельдман С. К. Системное программирование. с.27-34.

 

Технологическая карта учебного занятия 

по теме «Деление. Сдвиг и округление»

 

Группа

Специальность

Преподаватель

Дисциплина (МДК)

Тема занятия

Цели занятия:

образовательная

развивающая

воспитательная

Тип занятия:

Вид занятия:

Межпредметные связи:

Общие компетенции

Обеспечение занятия

Домашнее задание:

Учебная литература:

основная:

дополнительная:

Интернет-ресурсы:

2ПКС

09.02.03 Программирование в компьютерных системах

Токаева Яна Юрьевна

МДК 01.01 Системное программирование

Деление. Сдвиг и округление

изучение особенности реализации команды деления, сдвига и округления на языке Ассемблер 

совершенствование учебно-информационных и учебно-интеллектуальных умений 

формирование научного мировоззрения, воспитание устойчивого интереса к изучаемому материалу, положительного отношения к знаниям 

изучения нового материала

лекция

МДК 01.02 Прикладное программирование

ОК 1. Понимать сущность и социальную значимость своей будущей профессии, проявлять к ней устойчивый интерес.

ОК 2. Организовывать собственную деятельность, выбирать типовые методы и способы выполнения профессиональных задач, оценивать их эффективность и качество.

ОК 3. Принимать решения в стандартных и нестандартных ситуациях и нести за них ответственность.

ОК 4. Осуществлять поиск и использование информации, необходимой для эффективного выполнения профессиональных задач, профессионального и личностного развития.

ОК 5. Использовать информационно-коммуникационные технологии в профессиональной деятельности.

ОК 6. Работать в коллективе и команде, эффективно общаться с коллегами, руководством, потребителями.

презентация, мультимедийный проектор

1) повторение материала по конспекту лекции; 

2) Фельдман С. К. Системное программирование. с.27-34. 

Углев С.Л. 20 уроков Accembler. – М.: SelfPub, 2018. – 80 с.

Фельдман С. К. Системное программирование. Полный курс лекций. – М.: Бук Пресс, 2016. – 514 с.

Зубков С. В. Assembler. Для DOS, Windows и Unix. 12-е изд. – М.: ДМК, 2016. – 514 с.

Интернет Университет информационных технологий – Интуит (Национальный Открытый университет). – Режим доступа: http://intuit.ru, свободный


Ход занятия

 

Этап занятия Время Содержание деятельности преподавателя и студентов Методы обучения Приемы обучения Средства обучения Формы и методы контроля качества обучения
1. Организационный момент 2 мин Проверка присутствующих Словесный
2. Актуализация опорных знаний 5 мин Проверка ранее изученных понятий Словесный Актуализация знаний Фронтальный устный (ответы на вопросы)
3. Подготовка к активному и осознанному изучению нового материала 5 мин Определение темы занятия, постановка целей и задач, определение плана занятия Словесный, видеометод Постановка проблемных вопросов, применение информационных технологий Персональный компьютер, мультимедийный проектор, презентация
4. Изучение нового материала 35 мин Лекция по новому материалу Словесный, видеометод Актуализация знаний, применение ИКТ, развивающей и личностно-ориентированной технологий Персональный компьютер, мультимедийный проектор, презентация Контроль за качеством восприятия материала через организацию обратной связи (рассмотрение примеров, ответы на вопросы), индивидуальный (диалог со студентами по рассматриваемому вопросу)
5. Закрепление полученных знаний 28 мин Решение задач на изученную тему Словесный, видеометод, практический Постановка проблемных вопросов, применение ИКТ, развивающей и личностно-ориентированной технологий, решение задач Персональный компьютер, мультимедийный проектор, презентация Фронтальный устный (решение задач), индивидуальный (ответ у доски)
6. Рефлексия, подведение итогов занятия, оценочная деятельность  13 мин Подведение итогов занятия. Домашнее задание Словесный, видеометод Постановка проблемных вопросов, актуализация знаний, применение информационных технологий Персональный компьютер, мультимедийный проектор, презентация Фронтальный устный (ответы на вопросы), контроль за качеством восприятия материала через организацию обратной связи (обсуждение со студентами итогов занятия)
7. Выдача домашнего задания 2 мин Выставление оценок Словесный, видеометод Применение информационных технологий Персональный компьютер, мультимедийный проектор, презентация