- •Федеральное агентство связи
- •Регистры общего назначения.
- •Сегментные регистры.
- •Регистры состояния и управления.
- •Формат команд.
- •Создание программы на ассемблере.
- •Отладчик Turbo Debugger.
- •Структура программы на ассемблере.
- •Методические указания по выполнению лабораторных работ.
- •Лабораторная работа №1 Изучение пакета tasm и организация ввода данных с клавиатуры.
- •Лабораторная работа №2 Система адресования и последовательность выполнения основных команд пересылки.
- •Лабораторная работа №3 Программирование арифметических операций.
- •Лабораторная работа №4 Программирование логических операций
- •Лабораторная работа №5 Запись и выполнение программ пересылки данных между информационными массивами.
- •Лабораторная работа №6 Программирование ветвящихся вычислительных процессов.
- •Лабораторная работа №7 Программирование итеративных циклических вычислительных процессов.
- •Лабораторная работа №8 Программирование и контроль регулярных циклических вычислительных процессов.
- •Лабораторная работа №9 Программа и стек.
- •Лабораторная работа № 10 Программирование вычислительных процессов с использованием стандартных подпрограмм.
Лабораторная работа №4 Программирование логических операций
Цель работы.
Изучение логических команд микропроцессоров семейства Intel х86 и выполнение программ, использующих вычислительные операции.
2. Задание.
2.1. Предварительная часть.
Изучить содержание, форму записи и последовательность выполнения логических команд микропроцессоров семейства Intel х86, в т.ч. AND, OR, XOR, TEST, NOT, SAR, SAL, SHL, SHR, RCL, RCR, ROL, ROR, и операторов EQ, NE, IT, LE, GT, GE по [1].
Разработать детальную схему алгоритма вычисления функции
Y=X*7=X-2*X+(2*X)*2. Величина Y < 65535.
Таблица 4
Номер бригады |
F |
X |
X1 |
X2 |
1 |
X1V(&(X1VX2))&(X1V) |
148710 |
A1D916 |
C8F516 |
2 |
X1&(X1V)V(&X2) |
563310 |
15F016 |
99BC16 |
3 |
X1&(VX2)V(X1VX1&X2) |
397110 |
7E1A16 |
E88E16 |
4 |
X1&(VX1&X2)VX1& |
811010 |
FA5116 |
881216 |
5 |
(X1V&X2)&(X1V) |
274410 |
C7A816 |
D68116 |
6 |
X1&X2(X1V)V&(X1VX1&X2) |
913810 |
0FFF16 |
FFF016 |
7 |
X1&((V)VX1&X2) |
475110 |
7AC16 |
AD6916 |
8 |
(X1V&X2)&(X1VX1&) |
618910 |
191A16 |
DA7616 |
9 |
X1&(VX2)VX1&X2 |
793410 |
275616 |
600116 |
10 |
X1VX1&X2&(X1V&) |
458610 |
FA4516 |
8AFD16 |
Примечание: операция конъюнкция (&) старше операции дизъюнкции (V)
Экспериментальная часть.
Написать программу на языке ассемблер в текстовом редакторе «Блокнот» реализующую следующие подпункты:
С помощью команд AND, OR, NOT реализовать функцию F (таблица 4). Результат сохранить в переменной ХЗ. При вычислениях желательно использовать регистры АХ, ВХ, СХ, DX. Фиксировать значения всех используемых в программе регистров на каждом шаге выполнения программы.
С помощью команд AND, NOT, XOR реализовать следующую функцию:
f = (Х1⊕Х2⊕Х1&Х2)&(Х1⊕Х1&Х2). Результат сохранить в переменной X4. При вычислениях желательно использовать регистры АХ, ВХ. Фиксировать значения всех используемых в программе регистров на каждом шаге выполнения программы.
С помощью команды циклического сдвига влево через перенос (RCL) выполнить программу вычисления функции Y=X*7. При вычислениях желательно использовать регистры АХ, ВХ. Сохранить Y в регистре DX. Фиксировать значения всех используемых в программе регистров на каждом шаге выполнения программы.
С помощью команды TEST сравнить следующие числа: 4369010 и 2184510; 6168010 и 1542010; 13910 и 24410; 19810 и 24910. Возможно использование одного из сравниваемых чисел как непосредственного операнда. При вычислениях желательно использовать регистры АХ, ВХ. Фиксировать значения всех используемых в программе регистров на каждом шаге выполнения программы. Фиксировать значения флагов ZF,SF,PF.
Произвести компоновку программы, т.е. создать загрузочный модуль с опциями для tasm.exe- [/zi], а для tlink.exe- [/v].
Загрузить отладчик и исследовать в нем программу в пошаговом режиме, нажимая клавишу F7.
Содержание отчета.
Список логических команд микропроцессоров семейства Intel х86.
Детальную схему алгоритма вычислений для пункта 2.1.2.
Текст программы на языке ассемблер.
Дамп памяти содержащий сегмент данных программы (для переменных Х3,X4).
Таблица состояний РОН процессора на каждом шаге выполнения программы для всех пунктов, а регистра флагов только для пункта 2.2.4.
Выводы.
Контрольные вопросы.
4.1. Какие логические операции вы знаете?
4.2. Какие логические команды вы знаете?
4.3. Что такое базис логической функции?
В чем особенность команды TEST?
В чем отличие логических команд от логических операторов?