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

3 чел.

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

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

Кафедра ЕОМ

Лабораторна робота №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

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


 

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

50530. Изучение детекторных характеристик детекторов 251 KB
  Диодный детектор. Детекторные характеристики диодного детектора при различной омической нагрузке. Транзисторный детектор.
50531. Генерация второй гармоники в твердотельном минилазере 1.36 MB
  Генерация второй гармоники в твердотельном минилазере для студентов нелазерных специальностей Москва 2007 г. Целью лабораторной работы является изучение принципа действия твердотельных лазеров и экспериментальное исследование основных параметров такого лазера при генерации второй гармоники. Данная лабораторная работа включает 3 этапа: 1 предварительное изучение методических указаний Особенности устройства и работы твердотельных лазеров 2 изучение принципа действия генераторов второй гармоники и...
50532. Гомогенизатор А1-ОГМ 260.5 KB
  Цель работы: Оценить технический уровень состояние гомогенизатора А1ОГМ и дать предложения по развитию его конструкции для повышения эффективности процесса гомогенизации. Изучить устройство и принцип работы гомогенизатора А1ОГМ. Определить теоретическую и экспериментальную производительности а также мощности привода гомогенизатора А1ОГМ при различном давлении гомогенизации и обработать результаты испытаний. Дать предложения по техническому обслуживанию гомогенизатора А1ОГМ.
50533. Введение в язык разметки гипертекста версии 5.06 MB
  Научиться использоватьосновные теги HTML принаписании страниц Web. Научиться форматироватьтекст средствами HTML. План Введение Языки разметки Создание файла HTML Основные теги Заголовки Стилевое оформление текста Гиперссылки Изображения Форматирование текста с помощью тега FONT Специальные символы горизонтальные линейки и другие разделители Обзор ресурсов Интернет и Всемирной паутины Резюме Терминология Типичные ошибки программирования Внешний вид документа Хороший стиль программирования Упражнения для...
50535. Основи роботи з Mathcad. Робота з текстом 101.5 KB
  Робота з текстом Мета роботи навчитися оформлювати робочий документ Mthcd текстовими коментарями та виконувати над ними операції форматування. Після завантаження Mthcd спілкування користувача із системою відбувається на рівні вхідної мови максимально наближеної до звичайної мови описання математичних задач. Документ створений у Mthcd зберігається у файлі типу .
50537. Проект базы данных по учету данных физических и юридических лиц с использованием Microsoft Access 563.5 KB
  В качестве инструмента построения базы данных использован Microsoft ccess. Вот только некоторые из преимуществ использования вычислительной техники при работе с какими либо данными документами: возможность оперативного контроля за достоверностью информации уменьшается число возможных ошибок при генерировании производных данных; сразу после ввода данные могут участвовать в различных операциях; возможность быстрого получения необходимых отчетов; существенная экономия времени и людских ресурсов при выполнении операций связанных с...
50538. ПРИБОР РЕГИСТРИРУЮЩИЙ ДИСК 250М 3.64 MB
  Кроме того можно заказать комплект принципиальных электрических схем прибора по форме: Комплект схем прибора регистрирующего ДИСК 250М. Для подключения прибора к компьютеру можно дополнительно заказать преобразователь интерфейсов ND6520. Таблица 1 Исполнения приборов Обозначение исполнения прибора Функциональные особенности исполнения 10 регистрация; цифровая индикация результата измерения источник питания внешних датчиков. Возможна работа прибора с узлом внешней термокомпенсации блоком соединительным выпускаемым на заводе и...