- •Оглавление
- •Введение
- •Лабораторная работа № 1
- •Позиционные системы счисления. Перевод чисел.
- •Лабораторная работа № 2
- •Позиционные системы счисления. Арифметика.
- •Лабораторная работа № 3
- •Аксиомы и свойства алгебры логики
- •Лабораторная работа № 4
- •Минимизация функций алгебры логики
- •Лабораторная работа № 5
- •Содержание отчета
- •Разработка дешифратора для семисегментного индикатора
- •Лабораторная работа № 6
- •Содержание отчета
- •Проектирование реверсивного счетчика
- •Лабораторная работа № 7
- •Содержание отчета
- •Система команд процессоров х86
- •Текст программы:
- •Результаты работы программы («скриншот»)
- •Лабораторная работа № 8
- •Содержание отчета
- •Организация условных переходов в процессорах х86
- •Текст программы:
- •Результаты работы программы («скриншот»)
- •Лабораторная работа № 9
- •Содержание отчета
- •Организация циклов в процессорах х86
- •Текст программы:
- •Результаты работы программы («скриншот»)
- •Лабораторная работа № 10
- •Содержание отчета
- •Программирование на ассемблере х86.
- •Текст программы 1:
- •Текст программы 2:
- •Результаты работы программ («скриншоты»)
- •Заключение
- •Библиографический список
Лабораторная работа № 7
Тема: Система команд процессоров х86.
Цель: Приобретение навыков разработки программ с использованием команд процессора х86.
Задание: Пользуясь ассемблерными вставками в Pascal написать программу вычисления выражения. Варианты заданий приведены в таблице 11.
Таблица 11.
Вариант |
Выражение |
Вариант |
Выражение |
1 |
|
14 |
|
2 |
|
15 |
|
3 |
|
16 |
|
4 |
|
17 |
|
5 |
|
18 |
|
6 |
|
19 |
|
7 |
|
20 |
|
8 |
|
21 |
|
9 |
|
22 |
|
10 |
|
23 |
|
11 |
|
24 |
|
12 |
|
25 |
|
13 |
|
|
|
Содержание отчета
Тема работы
Условие задания
Укрупненное словесное описание алгоритма
Текст программы с подробными комментариями
Результаты работы программы.
Пример выполнения:
Система команд процессоров х86
Задание:
Пользуясь ассемблерными вставками в Pascal написать программу вычисления выражения
Укрупненное описание алгоритма:
Ввод исходных данных (чисел А и В)
Вычисление первого слагаемого числителя 2a4b
Вычисление второго слагаемого числителя 5b3
Вычисление числителя
Вычисление знаменателя
Вычисление результата Y
Вывод значения выражения
и числа из Y.
Текст программы:
Program Prim;
var A, B, Y : integer; {переменные для исходных данных и результата}
begin
write('А, В?:'); read(A, B); {вводим исходные данные}
asm {начало ассемблерной вставки}
{вычисляем первое слагаемое числителя}
mov ax, A {помещаем в регистр ax число из А}
imul ax {возводим его в квадрат}
push ax {запоминаем квадрат А в стеке}
imul ax {получаем четвертую степень А}
imul B { четвертую степень А умножаем на В}
mov bx, 2 {и еще на 2}
imul bx
mov si, ax {полученное значение числителя сохраняем в si}
{вычисляем второе слагаемое числителя}
mov ax, 5 {помещаем в регистр ax число 5}
imul B {трижды умножаем его на В}
imul B
imul B
{вычисляем числитель}
add ax, si {к второму слагаемому добавляем первое}
{вычисляем знаменатель}
pop bx {квадрат А извлекаем из стека}
inc bx {увеличиваем его на 1}
{вычисляем результат}
cwd {преобразуем 16 – разрядное значение числителя в 32 - разрядное}
idiv bx {делим значение числителя на значение знаменателя}
mov Y, ax {частное помещаем в переменную Y}
end; {конец ассемблерной вставки}
{выводим результаты по выражению и ассемблерной вставке}
writeln('Result: ', (2*sqr(sqr(A))*B+5*sqr(B)*B)
div (sqr(A)+1), ', Y = ', Y)
end.
