Лабораторна робота № 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
Выход из функции
Висновки:
У роботі ознайомилися:
-с використанням стека для передачі параметрів між модулями;
- зі структурою й організацією процедур мовою ассемблера;
- с описом і ініціалізацією масивів на мовах високого рівня "Си" або "Паскаль";
- с операторами звертання до функцій на мовах високого рівня "Си" або "Паскаль"
- с операторами висновку на екран у мовах високого рівня "Си" або "Паскаль"
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.