36942

Оволодіти навиками створення програм, частини яких написані різними мовами програмування. Засвоїти правила взаємодії різних модулів

Лабораторная работа

Информатика, кибернетика и программирование

Звичайно доступ наприклад до двох параметрів переданих через стек здійснюється в такий спосіб: PUSH EBP MOV EBPESP MOV EX[EBP8] MOV EDX[EBP12] . POP EBP RET Деякі версії мови C розрізняють великі і малі букви тому ім'я асемблерного модуля повинне бути представлено в тому ж символьному регістрі який використовують для посилання Cпрограми.code _clc proc push ebp mov ebpesp mov ex[ebp16] shr ex01 mov ebx[ebp8] shl ebx02 sub ebxex sub ebx[ebp12] sub ebx[ebp8] mov ex[ebp20] dd exebx pop ebp ret _clc endp END ...

Украинкский

2013-09-23

169.07 KB

4 чел.

Міністерство освіти і науки, молоді та спорту України

Національний університет “Львівська політехніка”

Кафедра ЕОМ

Лабораторна робота №2
дисципліни:”
Системне програмування

Виконав:

Ст.. гр. –КІ-32

Приймак Д.В.

Перевірив:

 Олексів М.В.

                      

Львів – 2011


Мета: оволодіти навиками створення програм, частини яких написані різними мовами програмування. Засвоїти правила взаємодії різних модулів 

Теоретичні відомості :

Труднощі опису зв'язку програм мовою C і асемблерних програм полягає в тому, що різні версії мови C мають різні угоди про зв'язки і для більш точної інформації варто користатися посібником з наявної версії мови C.

  1.  Більшість версій мови C забезпечують передачу параметрів через стек у зворотній (у порівнянні з іншими мовами) послідовності. Звичайно доступ, наприклад, до двох параметрів, переданих через стек, здійснюється в такий спосіб:

PUSH EBP

MOV EBP,ESP

MOV EAX,[EBP+8]

MOV EDX,[EBP+12]

...

POP EBP

RET

  1.  Деякі версії мови C розрізняють великі і малі букви, тому ім'я асемблерного модуля повинне бути представлено в тому ж символьному регістрі, який використовують для посилання C-програми.
  2.  У деяких версіях мови C потрібно, щоб асемблерні програми, що змінюють регістри EDI і ESI, записували їхній вміст у стек при вході і відновлювали ці значення зі стека при виході.
  3.  Ассемблерні програми повинні повертати значення, якщо це необхідно, у регістрі EAX (подвійне слово) чи в регістровій парі EDX:EAX (8 слів).
  4.  Для деяких версій мови C, якщо ассемблерна програма встановлює прапор DF, те вона повинна скинути його командою CLD перед поверненням.

Щоб скомпонувати разом модулі C++ і Макро асемблера, повинні бути дотримані наступні три умови:

  1.  У модулях Макро Асемблера повинні використовуватися угоди про імена, прийняті в C++.
  2.  C++ і Макро Асемблер повинні спільно використовувати відповідні функції й імена змінних у формі, прийнятної для C++.
  3.  Для комбінування модулів у виконувану програму потрібно використовувати утіліту-компоновщик (TLINK, LINK тощо).

.

Завдання:

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

Основний модуль – створюється мовою С.

Він повинен забезпечувати:

  1.  ввід даних з клавіатури;
  2.  виклик підпрограми обчислення виразу;
  3.  вивід на екран результату обчислення виразу.

Модуль безпосередніх обчислень – здійснює всі обчислення виразу. Створюється  мовою Assembler.

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

Основний модуль – створюється мовою С.

Він повинен забезпечувати:

  1.  ввід даних з клавіатури;
  2.  виклик підпрограми обчислення виразу;

Модуль безпосередніх обчислень – здійснює всі обчислення і вивід на екран результату обчислення виразу викликом стандартної функції printf() . Створюється мовою Assembler.

Варіант №22 : 

22

X=K-B1-C1-D2/2+4*B1

45781022

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

Коди програм :

 

# include <stdio.h>

extern "C" int calc(char B, char C, short D, int K);

int K = 0x45781022;

char B,C;

short D;

int Result;

void main()

{

printf("Please enter your numbers \n");

printf("B = ");

scanf("%d",&B);

printf("C = ");

scanf("%d",&C);

printf("D = ");

scanf("%d",&D);

 

Result = calc(B,C,D,K);

printf("Result = %ld", Result);

 

}

.586

.model flat

public _calc

.data

.code

_calc proc

push ebp

mov ebp,esp

mov eax,[ebp+16]

shr eax,01

 

mov ebx,[ebp+8]

shl ebx,02

sub ebx,eax

sub ebx,[ebp+12]

sub ebx,[ebp+8]

mov eax,[ebp+20]

add eax,ebx

pop ebp

ret

_calc endp

END

# include <stdio.h>

extern "C" int calc(char B, char C, short D, int K);

int K = 0x45781022;

char B,C;

short D;

int Result;

void main()

{

printf("Please enter your numbers \n");

printf("B = ");

scanf("%d",&B);

printf("C = ");

scanf("%d",&C);

printf("D = ");

scanf("%d",&D);

 

Result = calc(B,C,D,K);

}

.586

.model flat,C

public calc

.data

PrintRezult BYTE "Result is %d",10,13,0

.code

printf  PROTO  printlist: VARARG

calc proc

push ebp

mov ebp,esp

mov eax,[ebp+16]

shr eax,01

 

mov ebx,[ebp+8]

shl ebx,02

sub ebx,eax

sub ebx,[ebp+12]

sub ebx,[ebp+8]

mov eax,[ebp+20]

add eax,ebx

invoke printf, ADDR PrintRezult, eax

pop ebp

ret

calc endp

END

Висновок : на даній лабораторній роботі я оволодів навиками створення програм, частини яких написані різними мовами програмування. Засвоїв правила взаємодії різних модулів


 

А также другие работы, которые могут Вас заинтересовать

40141. ОПТИМАЛЬНЫЕ ЛИНЕЙНЫЕ ФИЛЬТРЫ СИГНАЛОВ НА ФОНЕ ПОМЕХ 1.62 MB
  Смысл слова выделение сигнала совпадает с понятием оценки сигнала. Пусть имеется сумма сигнала и шума: 6.1 Требуется чтобы оценка сигнала являющаяся откликом на воздействие t рис.
40142. ОПТИМАЛЬНОЕ ОБНАРУЖЕНИЕ ДЕТЕРМИНИРОВАННЫХ СИГНАЛОВ 231.5 KB
  3 Тема №3 Основы теории обнаружения и различения сигналов ОПТИМАЛЬНОЕ ОБНАРУЖЕНИЕ ДЕТЕРМИНИРОВАННЫХ СИГНАЛОВ Обнаружение сигналов как статистическая задача Пусть на вход обнаружителя поступает сумма сигнала st и шума nt представляющая собой случайный непрерывный процесс 7. Дискретизация проводится в соответствии с теоремой Котельникова: для дискретизации аналогового сигнала без потерь информации частота отсчетов должна быть в...
40143. ОПТИМАЛЬНОЕ ОБНАРУЖЕНИЕ КВАЗИДЕТЕРМИНИРОВАННЫХ СИГНАЛОВ 241 KB
  Для этого потребуется определить распределение вероятностей достаточной статистики у поступающей на пороговое устройство а именно распределение вероятностей корреляционного интеграла y при отсутствии  = 0 и наличии  = 1 сигнала st на входе обнаружителя.5 рассчитываются характеристики оптимального обнаружения детерминированного сигнала в белом шуме.1 сплошными линиями показаны характеристики оптимального обнаружения детерминированного сигнала в белом шуме. Характеристики обнаружения позволяют определить минимальную энергию...
40144. ОПТИМАЛЬНОЕ РАЗЛИЧЕНИЕ ДЕТЕРМИНИРОВАННЫХ СИГНАЛОВ 360 KB
  5 Рош а б ОПТИМАЛЬНОЕ РАЗЛИЧЕНИЕ ДЕТЕРМИНИРОВАННЫХ СИГНАЛОВ Различение двух детерминированных сигналов. Постановка задачи и правило принятия решения Задача различения сигналов находит широкое распространение в дискретной радиосвязи когда передача символа 1 связана с излучением сигнала s1t а передача символа 0 связана с излучением другого сигнала s2t отличающегося от s1t хотя бы одним какимнибудь своим параметром. Поэтому решение о том какой из сигналов принимается может осуществляться с ошибкой. Отсюда возникает задача...
40145. ОПТИМАЛЬНАЯ ОЦЕНКА ПАРАМЕТРОВ СИГНАЛА 683 KB
  Очевидно пользователю для извлечения из полученного сигнала сведений следует определить значения параметров сигнала несущих требуемую информацию. Устройство предназначенное для измерения параметров сигнала будем называть измерителем. Кроме того на измерения может существенно влиять наличие у сигнала не только полезных несущих необходимую информацию параметров но и параметров не известных потребителю и не содержащих интересных для него сведений.
40146. ФИЛЬТРАЦИЯ ИЗМЕНЯЮЩИХСЯ ПАРАМЕТРОВ СИГНАЛА 318 KB
  Полезный сигнал st является функцией времени t и многокомпонентного параметра сообщения представляющего собой векторный случайный процесс. Общая задача фильтрации заключается в том чтобы на основании априорных сведений и по наблюдаемой реализации xt процесса t для каждого момента времени t сформировать апостериорную плотность вероятности сообщения . Априорные сведения о вероятностных характеристиках сообщения и помехи nt задаются либо в форме многомерных плотностей вероятности либо в виде дифференциальных уравнений с...
40147. ЛИНЕЙНАЯ ФИЛЬТРАЦИЯ СООБЩЕНИЙ 539 KB
  2 Здесь Ht известная функция несущее колебание; Htt = s[t t] передаваемый сигнал; nt белый гауссовский шум не обязательно стационарный с нулевым средним значением и односторонней спектральной плотностью N0;  постоянный коэффициент определяющий ширину спектра сообщения t. Первое уравнение определяет алгоритм формирования оценки а следовательно и структурную схему фильтра а второе ошибку фильтрации дисперсию оценки сообщения Rt. Коэффициент Kt зависящий от дисперсии оценки сообщения Rt и...
40148. ИНФОРМАЦИЯ В ДИСКРЕТНЫХ СООБЩЕНИЯХ 412.5 KB
  Когда говорят об информации то имеют в виду как объективные сведения о событиях в материальном мире так и получателя этих сведений то есть субъекта. Определить количество информации и передать его с наименьшими потерями по каналам связи не интересуясь смыслом информации это предмет теории информации которую иногда называют математической теорией связи. Качественная сторона информации например её ценность полезность важность исследуется в семантической теории информации.
40149. ИНФОРМАЦИЯ В НЕПРЕРЫВНЫХ СООБЩЕНИЯХ 1.23 MB
  Представляет интерес определить собственное количество информации заключённое в непрерывном сообщении с тех же позиций что и для дискретного сообщения то есть с использованием понятия энтропии. Замену непрерывной функции времени можно осуществить последовательностью дискретов на основании теоремы Котельникова согласно которой если отсчёты непрерывного сообщения взять через интервал t=1 2Fc где Fc максимальная частота спектра реализации xt то непрерывная функция xt на интервале времени наблюдения [0T] эквивалентна...