автор: Токаева Яна Юрьевна
преподаватель бюджетное профессиональное образовательное учреждение Вологодской области «Череповецкий металлургический колледж имени академика И.П. Бардина»
МЕТОДИЧЕСКАЯ РАЗРАБОТКА УЧЕБНОГО ЗАНЯТИЯ ПО ТЕМЕ «ДЕЛЕНИЕ. СДВИГ И ОКРУГЛЕНИЕ»
МЕТОДИЧЕСКАЯ РАЗРАБОТКА УЧЕБНОГО ЗАНЯТИЯ
ПО ТЕМЕ «ДЕЛЕНИЕ. СДВИГ И ОКРУГЛЕНИЕ»
План-конспект учебного занятия
по теме «Деление. Сдвиг и округление»
Разработчик: Токаева Я.Ю., преподаватель БПОУ ВО «ЧМК».
Дисциплина/МДК: МДК 01.01 Системное программирование.
Цель занятия:
‒ образовательная – изучение особенности реализации команды деления, сдвига и округления на языке Ассемблер;
‒ развивающая – совершенствование учебно-информационных и учебно-интеллектуальных умений;
‒ воспитательная – формирование научного мировоззрения, воспитание устойчивого интереса к изучаемому материалу, положительного отношения к знаниям.
Задачи:
‒ закрепить особенности применения команды деления и реализации операций сдвига и округления при программировании на языке Ассемблер;
‒ научиться применять на практике различные виды команд при создании фрагментов программы на языке Ассемблер.
Тип занятия: изучения нового материала.
Вид занятия: лекция.
Методы: репродуктивный, частично-поисковый, наглядно-иллюстративный.
Оборудование и наглядные пособия: презентация, мультимедийный проектор.
Список источников:
- Зубков С. В. Assembler. Для DOS, Windows и Unix. 12-е изд. – М.: ДМК, 2016. – 514 с.
- Углев С.Л. 20 уроков Accembler. – М.: SelfPub, 2018. – 80 с.
- Фельдман С. К. Системное программирование. Полный курс лекций. – М.: Бук Пресс, 2016. – 514 с.
- Интернет Университет информационных технологий – Интуит (Национальный Открытый университет). – Режим доступа: http://intuit.ru, свободный.
Структура занятия:
- Организационный момент.
- Актуализация опорных знаний.
- Подготовка к активному и осознанному изучению нового материала.
- Изучение нового материала.
- Закрепление полученных знаний.
- Рефлексия, подведение итогов занятия, оценочная деятельность.
- Выдача домашнего задания.
Ход занятия:
- Организационный момент
Приветствие, преподаватель отмечает присутствующих.
- Актуализация опорных знаний
Проверка ранее изученных понятий: команды ассемблера, типы команд, арифметические команды, логические команды, регистры, типы регистров, регистры общего назначения.
- Подготовка к активному и осознанному изучению нового материала
Определение темы занятия.
Постановка целей и задач занятия вместе со студентами.
Определение плана занятия.
- Изучение нового материала.
Содержание:
- Деление.
- Сдвиг и округление.
- Деление.
Операция деления для беззнаковых данных выполняется командой 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, то необходимо сделать два дополнения:
- В метке C20 сравнивать AX и BX только при нулевом DX.
- После команды SUB вставить команду SBB DX,00.
Ответы на вопросы студентов, возникшие в ходе рассмотрения материала, пояснение трудных моментов.
- Сдвиг и округление.
Рассмотрим процесс округления числа до двух десятичных знаков после запятой. В случае, если число равно 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) повторение материала по конспекту лекции;
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 мин | Выставление оценок | Словесный, видеометод | Применение информационных технологий | Персональный компьютер, мультимедийный проектор, презентация |




