Лабораторная Работа №1 - "Вычисление Целочисленных Арифметических Выражений."

Цель работы:

Вычислить заданное целочисленное выражение для исходных данных в знаковых и беззнаковых форматах длиной 8 и 16 бит: signed char, unsigned char и signed int , unsigned int , используя арифметические операции ADD, ADC, INC, SUB, SBB , DEC, NEG, MUL, IMUL, DIV, IDIV , CBW, CWD. Исходные значения переменных вводятся пользователем с клавиатуры. Они должны быть максимально приближены к максимально-возможным для тех типов данных, с которыми решается задача. При вводе данных рекомендуется вывести диапазон возможных значений. Размер и тип числителя, знаменителя и результата зависит от заданного выражения.

Порядок работы:

  • Внимательно изучить свой вариант арифметического выражения;
  • Для каждого из перечисленных 4 типов данных написать ASM - модули вычисления арифметического выражения;
  • Вызовы этих модулей должны осуществляться из модулей, написанных на языке Си, в которых должен осуществляться ввод исходных данных и вывод результатов. Модули на языке Си должны обеспечивать вычисление данного выражения на языке Си для проверки результатов и вызов ASM - модуля для вычисления заданного выражения. Программа на языке Си должна вывести на экран числитель, знаменатель и результат вычисления на языке Си, а также числитель, знаменатель и результат вычисления на языке ASM. Обмен данными между Си и ASM - модулем должен осуществляться через глобальные переменные, определенные в модуле Си.

Варианты Заданий:

Вариант №

Арифметическое выражение

1 (3*c+8-d)/(a-c/4)
2 (b+3*c+1)/(b/a-2)
3 (a*a-b+2)/(7*c/2-1)
4 (55-b+1*a)/(-88/c+1)
5 (4*b-36*a)/(b+c/a-1)
6 (-17*a+32-b)/(c-a*c/b)
7 (b*c-8/a)/(31+b-1)
8 (a*a-2+c)/(c+22/b)
9 (53+c*2-1)/(b-a+4)
10 (c-33+8*d)/(122/b+1)
11 (2*d-96/a)/(34/b-a+1)
12 (a+b*c-1)/(a/3+1)
13 (44+c*d-15)/(a+c-6)
14 (a*2+113/c)/(a-c*b/3)
15 (b*2+c/25)/(a+a/b-1)
16 (b*7+64/a)/(31-c*b/2)
17 (-74/a+c-5)/(1+c*b/2)
18 (c*149+b*b)/(a+b-117)
19 (-35/b+d-b)/(1+a*b/4)
20 (c*3+a*54)/(d+a-1)
21 (4*c-a/3+11)/(1+a-b)
22 (1+7*b/2)/(a+b*2/d)
23 (2*a/b-1)/(a-28+c)
24 (22/c+3*b)/(36-a*c/3)
25 (44/a*b+1)/(b-a*9/2)
26 (-3*a-b+53)/(c-a/2+1)
27 (b-28/a+54)/(140/b+c-1)
28 (a+b*c-23)/(1+c/5-a)
29 (14*b-16/a)/(b-c+1)
30 (a*20+c-8)/(4*d/3-a)
31 (89*b-d/4)/(b+d+a-1)
32 (86/b-19+a)/(a*d/3-1)
33 (7*d/4-1)/(1+32/c+d)
34 (-26*a+d*89)/(a/6+1)
35 (2*d-1+b/2)/(a*a/2+d)
36 (7*b-54+a)/(25/c-1+c)

Методические указания:

Перед выполнением Лабораторной Работы №1 необходимо ознакомится с параграфами:

Контрольные вопросы и задания:


Программирование на Машинно-Ориентированных Языках.
Преподаватель: Коробов С.А.