Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
практика програмування.doc
Скачиваний:
23
Добавлен:
16.05.2015
Размер:
580.61 Кб
Скачать

Постановка задачі:

Скласти програму обчислення виразу з виконанням арифметичних операцій на мові АСЕМБЛЕРА.

Методичні вказівки:

В програмі використовувати різні типи поєднань ПАСКАЛЯ з АСЕМБЛЕРОМ, а саме:

  • оператор АSM....END;

  • процедура на мові АСЕМБЛЕРА.

Бажано не викоритовувати команду АСЕМБЛЕРА M UL , а оформити операцію множення цілих чисел у вигляді підпрограми типу процедури на мові АСЕМБЛЕРА.

Приклад програми з використанням процедури

PROGRAM NGB;

VAR X,Y,REZ: WORD;

PROCEDURE DOB(a,b: WORD; VAR R : WORD); ASSEMBLER;

ASM

MOV AX,A {переслати а та в до регістрів}

MOV DX,B

Xor bx,bx {обнулимо вх}

MOV CX,7 {лінійник циклу}

TEST DX, 1 {перевіримо молодший розряд}

JE @M1 {якщо він =0,зробимо перехід}

MOV BX,AX {інакше в проміжну суму множене}

@M1: SHL AX,1 { зсув множника на 1 розряд вліво}

SHR DX,1 {зсув множника на один розряд вправо}

TEST DX,1 {перевіримо молодший розряд}

JE @M2 {якщо там 0 -перехід}

ADD BX, AX {інакше - збільшимо проміжну суму}

@M2: LOOP @M1 {цикл}

lea DI,R {адесу r в DI}

MOV [DI],BX {результат в r }

END;

{ основна програма }

BEGIN

WRITELN(‘ВВЕДІТЬ 2 ЦІЛИХ ДОДАТНІХ ЧИСЛА’);

READLN(X,Y);

DOB(X,Y,REZ);

WRITELN(‘REZ=’,REZ:5);

END.

ВАРІАНТИ ЗАВДАНЬ

ВАРІАНТУ

ВИРАЗ

1

x=4c-b2+z

2

y=b+4c

3

z=c-3b+2z

4

x=z3+4c

5

y=c2+d-z

6

z=b3-4b-5c

7

x=c3+3b-6z

8

y=3c+b-x

9

z=3b-c2

10

x=3c+b-z

11

y=z2-3d3+c

12

z=2x3-5c

13

x=b3+4z3

14

y=c-3b3+z2

15

y=2c+b-x

16

z=3b-5c2

17

x=3c+b-3z2

Оформити звіт.

Тема.

Мета.

Постановка задачі.

Програма.

Результати роботи.

Висновки.

ПРАКТИЧНА РОБОТА №15.

ТЕМА:Програмування задач з використанням вказівного типу даних.

МЕТА:1.Ознайомлення з динамічною структурою даних - однонаправленим списком.

2.Отримання навиків роботи з змінними вказівного типу.

3.ознайомлення з можливістю виконання операції вмключення елементів з списку.

ПОСТАНОВКА ЗАДАЧІ.

Скласти список учбової групи, яка складається не меньше ніж з 15 учнів.

Вказати для кожного учня оцінки, отримані на останіх чотирьох екзаменах. Скласти програму, яка вводить з термінала дані про кожного учня і заносить цю інформацію в однонаправлений список.Опрацювати список відповідно варіанту.

ЗМІСТ ЗВІТУ.

1.Постановка задачі.

2.Список групи учнів з оцінками.

3.Текст програми і результати виконання.

4.Висновки.

МЕТОДИЧНІ ВКАЗІВКИ.

При виконані завдання потрібно ознайомитись з приведеною нижче програмою.Програма Р15 вводить дані про кожного учня, будує список а потім вилучає з списку елементи, які відносяться до невстигаючих учнів.

PROGRAM P15;

TYPE DAT=RECORD

FIO:PACKED ARRAY[1..7] OF CHAR;

OCINKU:ARRAY[1..4] OF INTEGER

END;

SILKA=^ZAPIS;

ZAPIS=RECORD

CC:SILKA;

Y:DAT;

END;

VAR NACH,S1,S2:SILKA; N,I,J:INTEGER;

BEGIN

WRITELN(’КІЛЬКІСТЬ ПРІЗВИЩ В СПИСКУ:’);

READLN(N);

NEW(S1); NACH:=S1;

FOR I:=1 TO N DO

BEGIN

S1^.CC:=NIL;

WRITELN(’ВВЕДІТЬ прізвище З 7 БУКВ ТА ОЦІНКИ:’);

FOR J:=1 TO 7 DO READ(S1^.Y.FIO[J]);

FOR J:=1 TO 4 DO READ(S1^.Y.OCINKU[J]);

READLN;S2:=S1;NEW(S1);

IF I<>N THEN S2^.CC:=S1

ELSE DISPOSE(S1)

END;

S1:=NACH;

REPEAT

FOR I:=1 TO 4

IF S1^.Y.OCINKU[I]=2 THEN

IF S1=NACH THEN NACH:=S1^.CC

ELSE S2^.CC:=S1^.CC;

S2:=S1;

S1:=S1^.CC

UTIL S1=NIL;

WRITELN(’СПИСОК УСПІШНИХ УЧНІВ:’);

S1:=NACH; WHILE S1<>NIL DO

BEGIN WRITE(S1^.Y.FIO);

FOR I:=1 TO 4 DO WRITE(’ ’,S1^.Y.OCINKU[I]:2);

WRITELN;

S1:=S1^.CC

END;

END.