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

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


 

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

12958. Познайте тайны собственного Я. Классный час (4 класс) 160 KB
  Классный час 4 класс Тема: Познайте тайны собственного Я Цель: способствовать раскрытию внутреннего мира ребенка его индивидуальных качеств; формировать у учащихся нравственные нормы жизни. Оборудование: страницы устного журнала; виз
12959. Внеклассного мероприятия на тему «Белка и Стрелка - первые космонавты» 18.83 KB
  Планконспект пробного урока Внеклассного мероприятия на тему Белка и Стрелка первые космонавты проведенного студентом Трифоновой Евгенией Валерьевной в 1 Б классе 16 апреля 2013 г. Цель: познакомить детей с первыми космонавтами Белкой и Стрелкой. Задач
12960. Классный час «Приходи, Масленица!» 31 KB
  Классный час Приходи Масленица Цели: познакомить учащихся с основными традициями празднования Масленицы в разных странах создать условия для: расширения з наний учащихся об окружающем мире; развития интереса к истории представлений о народных обрядах разн...
12961. Классный час Давайте знакомиться 121.31 KB
  Классный час Дата: 01.04.2013 Тема: Давайте знакомиться Задачи: раскрыть личностные особенности детей познакомиться с их интересами и увлечениями формировать навыки самодисциплины содействовать созданию сплоченного классного коллектива. Оборудов...
12962. Расчет плоских стержневых систем с применением ПК SCAD 348 KB
  Лабораторная работа № 3 Тема: Расчет плоских стержневых систем с применением ПК SCAD Расчетная схема : плоская рама при соотношении жесткостей J2 = 2 J1. ДOKУMEHT 03 ...
12963. Расчет плоских стержневых систем по ПК SCAD 229.5 KB
  Лабораторная работа № 1 Тема : расчет плоских стержневых систем по ПК SCAD Задана многопролетная железобетонная балка постоянного прямоугольного сечения 40х60 см; материал бетон тяжелый класса В30. Результаты расчета по ПК SCAD Деформированная схема
12964. Методы и средства контроля параметров точности цилиндрических зубчатых колес 602.5 KB
  Лабораторная работа № 6 Методы и средства контроля параметров точности цилиндрических зубчатых колес Задание 1. Измерить величину радиального биения зубчатого колеса. Результаты занести в таблицу 1. Определить используя приложение 2 какой степени точности соотве
12965. МЕТОДЫ И СРЕДСТВА КОНТРОЛЯ ПАРАМЕТРОВ ТОЧНОСТИ ЦИЛИНДРИЧЕСКИХ ЗУБЧАТЫХ КОЛЕС 1.01 MB
  Методы и средства контроля параметров точности цилиндрических зубчатых колес Методические указания к лабораторной работе по дисциплине Метрология стандартизация и сертификация ЛАБОРАТОРНАЯ РАБОТА № 6 Методы и средства контроля параметров точности ...
12966. Измерение отклонений формы поверхностей типовых деталей машин 1.95 MB
  Измерение отклонений формы типовых поверхностей деталей машин Методические указания к лабораторной работе по дисциплине Метрология стандартизация и сертификация Лабораторная работа №1. Измерение отклонений формы поверхностей типовых деталей машин. Ц...