
- •Сборник
- •Практическая работа №1 «Перевод чисел из системы в систему, сложение, числа со знаком»
- •Практическая работа №2 «Ввод, трансляция и исполнение программы»
- •Практическая работа №3 « Модификация первой программы»
- •Практическая работа №4 « Псевдооператоры»
- •Практическая работа №5 « Режимы адресации операндов»
- •Практическая работа №6 « Команды пересылки данных»
- •Практическая работа №7 « Арифметические команды»
- •Практическая работа №8 « Команды манипулирования битами»
Практическая работа №8 « Команды манипулирования битами»
Цель работы: Отработка навыков применения команд манипулирования битами при создании программ.
Материально-техническое оснащение:
ПК, текстовый редактор, служебные программы Tasm.exe, Tlink.exe, TD.exe.
Теория.
Программистам обычно приходится иметь дело с отдельными битами или группой битов. Для этого в языке Ассемблера существуют команды манипулирования битами. Их можно разделить на три группы:
Логические команды
Команды сдвига
Команды циклического сдвига
Мнемокод команды |
Формат команды |
Флаги | ||||||||
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF | ||
Логические команды | ||||||||||
And |
and приемник,источник |
0 |
- |
- |
- |
+ |
+ |
? |
+ |
0 |
Or |
Or приемник,источник |
0 |
- |
- |
- |
+ |
+ |
? |
+ |
0 |
Xor |
Xor приемник,источник |
0 |
- |
- |
- |
+ |
+ |
? |
+ |
0 |
Not |
Not приемник |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Test |
Test приемник,источник |
0 |
- |
- |
- |
+ |
+ |
? |
+ |
0 |
Команды сдвига | ||||||||||
Sal/Shl |
Sal приемник,счетчик |
+ |
- |
- |
- |
+ |
+ |
? |
+ |
+ |
Shr |
Shr приемник,счетчик |
+ |
- |
- |
- |
+ |
+ |
? |
+ |
+ |
Sar |
Sar приемник,счетчик |
+ |
- |
- |
- |
0 |
+ |
? |
+ |
+ |
Команды циклического сдвига | ||||||||||
Ror |
Ror приемник,счетчик |
+ |
- |
- |
- |
- |
- |
- |
- |
+ |
Rol |
Rol приемник,счетчик |
+ |
- |
- |
- |
- |
- |
- |
- |
+ |
Rcr |
Rcr приемник,счетчик |
+ |
- |
- |
- |
- |
- |
- |
- |
+ |
Rcl |
Rcl приемник,счетчик |
+ |
- |
- |
- |
- |
- |
- |
- |
+ |
- флаг не изменяется
+ флаг изменяется
флаг обнуляется
? неопределенное значение
Ход работы.
Задача 1. С помощью команд манипулирования битами уменьшите содержимое регистра AX в 32 раза.
Получите исполняемый модуль.
Проверьте правильность работы программы, запустив ее из отладчика и отслеживая результаты в нужных окнах.
Задача 2. Создать программу, определяющую, чему равен пятый бит во введенном из порта 61h слове. Для решения этой задачи необходимо наложить маску на тестируемый бит. Результат выведите на экран.
Получите исполняемый модуль.
Проверьте правильность работы программы, запустив ее из отладчика и отслеживая результаты в нужных окнах.
Измените порт и отработайте программу вновь
Задача 3. Написать программу разложения четырехзначного числа, заданного преподавателем на единицы, десятки, сотни и тысячи.
Получите исполняемый модуль.
Проверьте правильность работы программы, запустив ее из отладчика и отслеживая результаты в нужных окнах.
Задача 4. Создайте программу, извлекающую из порта 61h байт и определяющую сколько бит в нем установлены в 1, а сколько в 0. (*Результат выведите на экран).
Получите исполняемый модуль.
Проверьте правильность работы программы, запустив ее из отладчика и отслеживая результаты в нужных окнах.
Измените порт и отработайте программу вновь
Заключение.
Запишите созданные программы в свой каталог на диске и в тетрадь.
Обобщите все возникшие в процессе создания программы ошибки.
Контрольные вопросы.
Если регистр AX содержит значение 1234h, а регистр BX значение 4321h, то какое значение будет содержать регистр AX после выполнения каждой из следующих команд?
And ax,bx
Or ax,bx
Xor ax,bx
Not ax
Test ax,bx
Предположим, что регистр AL содержит значение 0B4h. Какое значение будет содержать регистр AL и флаг CF (возможно и флаг OF) после выполнения каждой из следующих команд?
Sal al,1
Sar al,1
Shl al,1
Shr al,1
Rol al,1
Ror al,1
Rcl al,1
Rcr al,1
Литература.
1. Л. Скэнлон Персональные ЭВМ IBM PC XT. Программирование на языке ассемблера. М, Радио и связь, 1989 г.
2. В.Юров, С.Хорошенко. Ассемблер: учебный курс - СПб:ПитерКом,1999г.
3. Я. Белецкий Турбо Ассемблер версия 2.0, М, Машиностроение, 1994 г.
4. Под ред. И.Ю. Жукова Ассемблер в задачах защиты информации. М, КУДИЦ-ОБРАЗ, 2002 г.