Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
13
Добавлен:
12.05.2015
Размер:
38.4 Кб
Скачать

Завдання

Написати підпрограму на асемблері, котра покладе в АХ номер варіанту, якщо (СХ) = 0 або виконає задане варіантом перетворення, якщо (СХ) = 1.

Таблиця варіантів:

Примітка:

div - цілочисельне ділення

mod - остача від ділення

shr - зсув вправо

shl - зсув вліво

and - логічне «І»

or - логічне «АБО»

xor - сума по модулю 2

1: AX := (((BX + 100) xor 8) shr 1);

2: AX := (((BX - 100) and 80) shl 1);

3: AX := (((BX or 500) + 100) shr 2);

4: AX := (((BX xor 50) * 4) shr 2);

5: AX := (((BX div 50) and 4) shl 5);

6: AX := (((BX mod 50) or 45) + 5);

7: AX := (((BX and 50) xor 4) shl 3);

8: AX := (((BX div 3) + 4) shl 3);

9: AX := (((BX * 7) and 10) or 20);

10: AX := (((BX - 70) mod 25) or 100);

11: AX := (((BX + 12) mod 45) or 100);

12: AX := (((BX xor 200) - 5) and 127);

13: AX := (BX xor (BX and 1) * 3);

14: AX := (BX or (BX + 15) xor 10);

15: AX := (BX xor (BX - 5)or 100);

16: AX := ((BX mod 90) + (BX and 34));

17: AX := (BX xor (BX mod 5) - 100);

18: AX := (BX and (BX - 50) - 60);

19: AX := (BX xor (BX - 5) - 100);

20: AX := (BX or (BX + 50) shl 300);

21: AX := ((BX mod 310) and BX - 10);

22: AX := ((BX xor 31) shr 10 - BX);

23: AX := ((BX and 4) xor (BX - 220));

24: AX := (((BX and 70) + BX) shl 5);

25: AX := (((BX or 13) and BX) shl 9);

26: AX := (((BX or 18) shl 4) + 7);

27: AX := (((BX div 38) mod 130) or 19);

28: AX := (((213 and BX) - 14) xor 70);

29: AX := (((98 xor BX) shl 4) or 7);

30: AX := (((BX * 30) xor BX ) shr 2);

31: AX := (((BX - 58) * 89) or 6);

32: AX := (BX mod ((190 or BX) xor 32));

33: AX := ((BX + 675) or 7 - BX);

34: AX := (BX + (45 or BX)) * 67;

35: AX := ((BX mod 450 * 2) shr 1);

36: AX := ((BX mod 50 and BX) shl 2);

37: AX := (((BX xor 927) shr 3) - 43) ;

38: AX := ((BX * 70) + (BX xor 85)) + 49;

39: AX := ((BX * 7) + (BX xor 85) shr 3) + (90 - BX);

40: AX := ((BX xor (300 - (BX or 85)) - BX));

41: AX := (BX xor (30 - BX mod 120)) + BX;

42: AX := ((BX * 331 - BX mod 654) - 98 or BX);

43: AX := ((BX xor 881) shl 6) - ((BX mod 54) + BX);

44: AX := (BX xor (26 * BX) - (BX + 194));

45: AX := ((BX + 2) and BX) shl 2 xor (BX - 478);

46: AX := ((778 - BX) and 23 + (BX - 56) or 20 and BX);

47: AX := (BX - 19 * 23 xor BX) and (500 or BX);

48: AX := ((76 or BX) - (13 and BX) xor (45 + BX)) shl 4;

49: AX := (((BX and 60) - BX) xor (BX * 30));

50: AX := ((BX * 60) xor BX + (200 xor BX) shr 2);

51: AX := (BX or (BX div 100 - 50 * BX));

52: AX := (50 xor BX + (BX -20 * BX)) shr 3;

53: AX := (BX * (5 xor BX) shl 2 - BX);

54: AX := (BX - 40) xor (30 and BX) shl 3;

55: AX := (BX and 58 xor BX div 60);

56: AX := (BX mod 5) + 50 * BX shr 2;

57: AX := ((BX div 100) mod 120 * BX);

58: AX := (250 xor (BX - 70) shl 2);

59: AX := (BX and (650 xor BX) div 30);

60: AX := (BX - 400) or (20 * BX);

Виконання роботи

Разом із завданням надані всі засоби, необхідні для компіляції програми – транслятор, компонувальник, бібліотеки, командний файл make.bat для виконання збірки програми, а також початковий код прикладу у файлі g.asm.

Задача зводиться до модифікації підпрограми func у файлі g.asm, виходячи з варіанту завдання. Після внесення змін, запустіть make.bat. В результаті повинен створитись виконавчий файл g.exe. Якщо це не відбувається, дивіться помилки у файлі output.txt.

Для перевірки достатньо запустити отриманий після компіляції файл. На екрані з’явиться зображення, яке характеризує роботу підпрограми func (графік у полярних координатах). Після натискання будь-якої клавіші зображення доповниться правильним графіком для вказаного варіанту. Якщо два малюнки співпадуть, то завдання виконано вірно.

Приклад підпрограми

В якості прикладу розглянемо реалізацію 60-го варіанту:

func proc

cmp cx, 0 ; якщо АХ = 0 , то функцію запитали про варіант

jz var

push bx ; зберігаємо у стеку вміст регістрів,

push cx ; які змінюються під час обчислень

mov ax, bx ; AX := (BX - 400) | (20 * BX)

sub bx, 400

mov cx, 20

mul cx

or ax, bx

pop cx ; встановлюємо регістри

pop bx

jmp ex ; стрибок на вихід

var: mov ax, 60 ; повертаємо в АХ номер варіанту

ex: ret ; вихід

func endp

Соседние файлы в папке SP_ukr