- •Сборник
- •Практическая работа №1 «Перевод чисел из системы в систему, сложение, числа со знаком»
- •Практическая работа №2 «Ввод, трансляция и исполнение программы»
- •Практическая работа №3 « Модификация первой программы»
- •Практическая работа №4 « Псевдооператоры»
- •Практическая работа №5 « Режимы адресации операндов»
- •Практическая работа №6 « Команды пересылки данных»
- •Практическая работа №7 « Арифметические команды»
- •Практическая работа №8 « Команды манипулирования битами»
Практическая работа №6 « Команды пересылки данных»
Цель работы: Отработка навыков применения команд пересылки данных при создании программ.
Материально-техническое оснащение:
ПК, текстовый редактор, служебные программы Tasm.exe, Tlink.exe, TD.exe.
Теория.
Команды пересылки данных можно подразделить на четыре подгруппы:
Команды общего назначения
Команды ввода-вывода
Команды пересылки адреса
Команды пересылки флагов
Мнемокод |
Формат команды |
Флаги | ||||||||
OF |
DF |
IF |
TF |
SF |
ZF |
AF |
PF |
CF | ||
Команды общего назначения | ||||||||||
Mov |
Mov приемник,источник |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Push |
Push источник |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Pop |
Pop приемник |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Xchg |
Xchg приемник,источник |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Xlat |
Xlat табл_источник |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Команды ввода-вывода | ||||||||||
In |
In аккумулятор,порт |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Out |
Out порт,аккумулятор |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Команды пересылки адреса | ||||||||||
Lea |
Lea регистр16,память16 |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Lds |
Lds регистр16,память32 |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Les |
Les регистр16,память32 |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Команды пересылки флагов | ||||||||||
Pushf |
Pushf |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Popf |
Popf |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
Lahf |
Lahf |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Sahf |
Sahf |
- |
- |
- |
- |
+ |
+ |
+ |
+ |
+ |
- флаг не изменяется
+ флаг изменяется
Ход работы.
1. Задача 1. Создать программу в которой:
сохранить начальное значение регистра флагов в стеке
любой известной вам командой изменить значение одного или нескольких флагов
сохранить измененное значение регистра флагов в стеке
любой известной вам командой изменить значение одного или нескольких флагов
сохранить измененное значение регистра флагов в стеке
извлечь все значения регистра флагов из стека в другую область памяти в порядке их помещения в стек.
2. Получите исполняемый модуль.
Проверьте правильность работы программы, запустив ее из отладчика в пошаговом режиме.
В Turbo Debugger’е просмотрите:
сегмент стека через Dump памяти или окно CPU
регистр флагов
окно регистров
сегмент данных после извлечения флагов из стека.
Задача 2. Из определенной в сегменте данных таблицы байтов создать в этом же сегменте новую таблицу, состоящую из 2, 4, 6 и 8 элементов исходной таблицы. Для решения задачи используйте команду Xlat.
Получите исполняемый модуль.
Проверьте правильность работы программы, запустив ее из отладчика в пошаговом режиме.
В Turbo Debugger’е просмотрите сегмент данных для определения правильности работы программы.
Задача 3. Создать программу, помещающую в стек 10 байт, извлеченных из портов 10, 20, 30, 40, 50.
Получите исполняемый модуль.
Проверьте правильность работы программы, запустив ее из отладчика в пошаговом режиме.
В Turbo Debugger’е просмотрите сегмент стека для определения правильности работы программы.
* Задача 4. В сегменте данных определить таблицу ASCII - кодов цифр от 0 до 9. Вывести на экран любые три цифры, используя эту таблицу.
Получите исполняемый модуль.
Проверьте правильность работы программы, запустив ее из отладчика.
Заключение.
Запишите созданные программы в свой каталог на диске и в тетрадь.
Обобщите все возникшие в процессе создания программы ошибки.
Контрольные вопросы.
Перечислите подгруппы команд пересылки данных.
Каков формат команды LAHF и ее назначение?
Каков формат команды MOV и ее назначение?
Какие сочетания операндов невозможны для команды MOV?
Каков формат команды LEA и ее назначение?
Каков формат команды LES и ее назначение?
Каков формат команды XCHG и ее назначение?
Какие сочетания операндов невозможны для команды XCHG?
Каков формат команды POPF и ее назначение?
Литература.
1. Л. Скэнлон Персональные ЭВМ IBM PC XT. Программирование на языке ассемблера. М, Радио и связь, 1989 г.
2. В.Юров, С.Хорошенко. Ассемблер: учебный курс - СПб:ПитерКом,1999г.
3. Я. Белецкий Турбо Ассемблер версия 2.0, М, Машиностроение, 1994 г.
4. Под ред. И.Ю. Жукова Ассемблер в задачах защиты информации. М, КУДИЦ-ОБРАЗ, 2002 г.