- •Сборник
- •Практическая работа №1 «Перевод чисел из системы в систему, сложение, числа со знаком»
- •Практическая работа №2 «Ввод, трансляция и исполнение программы»
- •Практическая работа №3 « Модификация первой программы»
- •Практическая работа №4 « Псевдооператоры»
- •Практическая работа №5 « Режимы адресации операндов»
- •Практическая работа №6 « Команды пересылки данных»
- •Практическая работа №7 « Арифметические команды»
- •Практическая работа №8 « Команды манипулирования битами»
Практическая работа №7 « Арифметические команды»
Цель работы: Отработка навыков применения арифметических команд при создании программ.
Материально-техническое оснащение:
ПК, текстовый редактор, служебные программы Tasm.exe, Tlink.exe, TD.exe.
Теория.
Арифметические команды можно подразделить на пять подгрупп:
Команды сложения
Команды вычитания
Команды умножения
Команды деления
Команды расширения знака
Мнемокод |
Формат команды |
Флаги | ||||||||
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF | ||
Команды сложения | ||||||||||
Add |
Add приемник,источник |
+ |
- |
- |
- |
+ |
+ |
+ |
+ |
+ |
Adc |
Adc приемник,источник |
+ |
- |
- |
- |
+ |
+ |
+ |
+ |
+ |
Inc |
Inc приемник |
+ |
- |
- |
- |
+ |
+ |
+ |
+ |
- |
Команды вычитания | ||||||||||
Sub |
Sub приемник,источник |
+ |
- |
- |
- |
+ |
+ |
+ |
+ |
+ |
Sbb |
Sbb приемник,источник |
+ |
- |
- |
- |
+ |
+ |
+ |
+ |
+ |
Dec |
Dec приемник |
+ |
- |
- |
- |
+ |
+ |
+ |
+ |
- |
Cmp |
Cmp приемник,источник |
+ |
- |
- |
- |
+ |
+ |
+ |
+ |
+ |
Neg |
Neg приемник |
+ |
- |
- |
- |
+ |
+ |
+ |
+ |
+ |
Команды умножения | ||||||||||
Mul |
Mul источник |
+ |
- |
- |
- |
? |
? |
? |
? |
+ |
Imul |
Imul источник |
+ |
- |
- |
- |
? |
? |
? |
? |
+ |
Команды деления | ||||||||||
Div |
Div источник |
? |
- |
- |
- |
? |
? |
? |
? |
? |
Idiv |
Idiv источник |
? |
- |
- |
- |
? |
? |
? |
? |
? |
Команды расширения знака | ||||||||||
Cbw |
Cbw |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Cwd |
Cwd |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- флаг не изменяется
+ флаг изменяется
? неопределенное значение
Ход работы.
1. Задача 1. Написать программу для вычисления выpажения:
(3456-2501+1099-794)-(384+101)
2. Получите исполняемый модуль.
Проверьте правильность работы программы, запустив ее из отладчика и отслеживая результаты в нужных окнах.
Задача 2. Написать программу для вычисления выpажения:
(365/5+915)-(31*11-309)
Получите исполняемый модуль.
Проверьте правильность работы программы, запустив ее из отладчика и отслеживая результаты в нужных окнах.
Заключение.
Запишите созданные программы в свой каталог на диске и в тетрадь.
Обобщите все возникшие в процессе создания программы ошибки.
Контрольные вопросы.
Правильно ли записаны следующие команды? Если нет, то почему?
Mul 5
Mov bl,7
Mul bl
Mov al,6
Mov bh,3
Div bh
Mov ax,9
Idiv 3
Mov ax,9
Div al
Add per1,per2
Sbb per1,25
Литература.
1. Л. Скэнлон Персональные ЭВМ IBM PC XT. Программирование на языке ассемблера. М, Радио и связь, 1989 г.
2. В.Юров, С.Хорошенко. Ассемблер: учебный курс - СПб:ПитерКом,1999г.
3. Я. Белецкий Турбо Ассемблер версия 2.0, М, Машиностроение, 1994 г.
4. Под ред. И.Ю. Жукова Ассемблер в задачах защиты информации. М, КУДИЦ-ОБРАЗ, 2002 г.