Зв'язок програми мовою ассемблера з програмами на мовах високого рівня "Сі" и "Паскаль"

Страницы работы

Содержание работы

Лабораторна робота № 9.

Тема: ЗВ'ЯЗОК ПРОГРАМИ  МОВОЮ АССЕМБЛЕРА З ПРОГРАМАМИ НА МОВАХ ВИСОКОГО РІВНЯ "СІ" И "ПАСКАЛЬ"

Мета: Закріплення практичних навичок складання і налагодження програм, що включають модулі на мовах високого рівня і   мовою ассемблера

й організації передачі даних між модулями.

Індивідуальне завдання:

5. Задано масиви А и В по N = 50 елементів (констант типу WORD).

Визначити кількість пар елементів, що задовольняють умові

Aі > Bі.

Хід виконання лабораторної роботи.

Вибір перемінних

Ma, mb – початкові масиви

Kol – кількість елементів в масиві

К – кількість пар Ai>Bi

Текст головної програми на мові Паскаль

program main;

var

      ma:ARRAY[1..10] of word;

      mb:ARRAY[1..10] of word;

      kol,K,i:word;

      Procedure SIGM(ma:word; mb:word; kol: word; k:word); EXTERNAL;

 begin

 kol:=10;

  {$L sva}

{ Указание объектного модуля функции на языке ассемблера }

{/* инициализация массивов */}

    for i:=1 to 10 do

     ma[i]:=i+4;

    for i:=1 to 10 do

     mb[i]:=i;

    Writeln('Обращение к функции');

 {**************************}

    SIGM(ofs(ma), ofs(mb), kol, ofs(k));

    Writeln('Выход из функции');

    Writeln('k= ',k);

End.

Текст процедури на мові Assembler:

.   .model small

   .386

   public SIGM

   .code

     SIGM proc near

; сохранение всех регистров

        push bp

        mov bp, sp

        push ax

        push dx

        push si

        push di

        push bx

        push cx

        push es      

    mov si,[bp+10]; mas a

          mov di,[bp+8]; mas b

          mov cx,[bp+6];kol

          xor ax,ax ;  k

m1:

          mov bx,[si]

          cmp bx,[di]; сравнение Ai и Bi

          jle m2; если A<=B

          inc ax

m2:

          add si, 2

          add di, 2

          loop m1

          mov si, [bp+4]; возвращаем в основную программу кол-во пар

          mov [si], ax

          ; восстанавливаем регистры

          pop es

    pop cx

    pop bx

    pop di

    pop si

    pop dx

    pop ax

    pop bp

          ret

   SIGM    endp

         End

Алгоритм

Результати роботи програми

Обращение к функции

K=10

Выход из функции

Висновки:

   У роботі ознайомилися:

    -с використанням стека для передачі параметрів між модулями;

    - зі структурою й організацією процедур  мовою ассемблера;

    - с  описом  і  ініціалізацією  масивів  на мовах високого рівня "Си" або "Паскаль";

    - с  операторами звертання до функцій на мовах високого рівня "Си" або "Паскаль"

    - с  операторами  висновку на екран у мовах високого рівня "Си" або "Паскаль"

Похожие материалы

Информация о работе