Взаємодія програм на мовах низького та високого рівня

Порядок и методика розробки програм, які використовують взаємодію програмних модулів на різних мовах програмування: низького рівня (Асемблер) та високого (С та Паскаль). Розробка структури програми, вибір змінних, особливості взаємодії мов програмування.

Рубрика Программирование, компьютеры и кибернетика
Вид реферат
Язык украинский
Дата добавления 14.02.2009
Размер файла 10,9 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

3

Зміст

Вступ

1. Мета розрахункового завдання

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

3. Розробка методу вирішення та структури програми. Вибір змінних

4. Взаємодія Паскаля та Асемблера. Опис особливостей

4.1 Зміст стеку до та після початку роботи процедури, яка буде виконана на мові Асемблера

4.2 Схема алгоритму роботи

4.3 Схема алгоритму програми

4.4 Текст програми на мові високого рівня

4.5 Текст програми на Асемблері

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

5. Взаємодія С та Асемблера. Опис особливостей

5.1 Зміст стеку до та після початку роботи процедури, яка буде виконана на мові Асемблера

5.2 Схема алгоритму роботи

5.3 Схема алгоритму програми

5.4 Текст програми на мові високого рівня

5.5 Текст програми на Асемблері

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

Висновки

Список використаної літератури

Вступ

У даному розрахунково-графічному завданні вирішується завдання: задано рядок А. За допомогою процедури замінити усі символи "а","b" і "c" на пробіли. При роботі з мовою Паскаль параметри розташовуються у окремому масиві, а адреса масиву буде передана у стек, при роботі з мовою С всі параметри у процедуру передаються у стек.

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

1 Мета розрахункового завдання

Вдосконалення навичок розробки програм, які використовують взаємодію програмних модулів на різних мовах програмування: низького рівня (Асемблер) та високого рівня (С та Паскаль);

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

Задано рядок А. За допомогою процедури замінити усі символи "а","b" і "c" на пробіли.

При роботі з мовою Паскаль параметри розташовуються у окремому масиві, а адреса масиву буде передана у стек, при роботі з мовою С всі параметри у процедуру передаються у стек.

3. Розробка методу вирішення та структури програми. Вибір змінних

Програма складається з головної програми та процедури. Головна програма написана на мові високого рівня (С та Паскаль), процедура написана на мові низького рівня (Асемблер).

У головній програмі визначаються та ініціалізується зміст вхідних даних. Організовується звертання до функції, написаної мовою Асемблера.

У процедурі виконується індивідуальне завдання: замінити усі символи "а","b" і "c" на пробіли.

При роботі з мовою Паскаль параметри розташовуються у окремому масиві, а адреса масиву передана у стек, при роботі з мовою С всі параметри у процедуру передаються у стек.

Вибираємо такі змінні:

а - заданий рядок А

t_adr - масив адрес змінних

kol - кількість символів у рядку A

i - допоміжнa зміннa

4. Взаємодія Паскаля та Асемблера. Опис особливостей

У програмі на мові Паскаль (файл p_asm.pas) створюється масив адрес даних, що передаються у процедуру (файл p_a_st.asm). Виклик процедури є ближнім.

Прототип процедури задається таким чином:

procedure pr_my(ofs_adr: word); external;

Виклик процедури задається таким чином:

pr_my(ofs(t_adr));

4.1 Зміст стеку до та після початку роботи процедури, яка буде виконана на мові Асемблера

4.2 Схема алгоритму роботи

Для компіляції програми створюється файл my.bat такого змісту:

tasm /la/mx/zi/o p_a_ta.asm

параметри:

la - розширений лістинг,

mx - не відрізняти верхній та нижній регістри

zi - відладочна інформація

о - максимальний об'єм obj-файлу

таким чином з використанням пакету tasm створюємо файл p_a_ta.obj, який підключається до головної програми.

4.3 Схема алгоритму програми

4.4 Текст програми на мові високого рівня

{pas_asm.pas}

Program main;

uses crt;

procedure pr_my(ofs_adr: word); external;

{$L proc}

procedure comp(var tex: string; lon: integer);

begin

if length(tex)=0 then

begin

write('The Entered text has size "0", so program terminated...');

readln;

halt;

end;

if length(tex)<>lon then

begin

write('Entered string has wrong size, so program terminated...');

readln;

halt;

end;

end;

var

text1: string;

t_adr: array[1..2] of word;

i: integer;

Begin

clrscr;

randomize;

writeln(' ':12,'Program begin');

writeln;

write('Enter the text width lengtx <=10: ');

readln(text1);

comp(text1,10);

t_adr[1]:=length(text1);

t_adr[2]:=ofs(text1);

pr_my(ofs(t_adr));

writeln('Rezalt text1: '+text1);

writeln;

writeln(' ':12,'Program end, so press enter...');

readln;

End.

4.5 Текст програми на Асемблері

;p_a_ta.asm

MASM

MODEL small

STACK 256

.code

pr_my proc near

public pr_my

push bp

mov bp, sp

mov bx, [bp+4] ; ofs t_adr

mov cx, [bx] ; length text1

mov si, [bx+2] ; ofs text1

m1: mov al,'a'

cmp [si],al

jne m2

mov dl,' '

mov [si],dl

m2:

mov al,'b'

cmp [si],al

jne m3

mov dl,' '

mov [si],dl

m3:

mov al,'c'

cmp [si],al

jne m4

mov dl,' '

mov [si],dl

m4:

inc si

loop m1

pop bp

ret 2

pr_my endp

end

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

Був заданий рядок A: dfscaidilaxlclblw. Після виконання програма

видає на екран:

Rezalt text1:

Dfs idil xl l lw

що співпадає з очікуваними результатами.

5. Взаємодія С та Асемблера. Опис особливостей

У програмі на мові C (файл c_asm.c) задаються початкові дані, що передаються у процедуру (файл c_a_st.asm). Виклик процедури є дальнім.

Прототип процедури задається таким чином:

extern pr_my(int kol, char* tex1);

Виклик процедури задається таким чином:

Pr_my(strlean(text1),text1);

5.1 Зміст стеку до та після початку роботи процедури, яка буде виконана на мові Асемблера

5.2 Схема алгоритму роботи

Для компіляції програми створюється файл my2.bat такого змісту:

tasm /la/mx/zi/o с_a_st.asm

параметри:

la - розширений лістинг,

mx - не відрізняти верхній та нижній регістри

zi - відладочна інформація

о - максимальний об'єм obj-файлу

таким чином з використанням пакету tasm створюємо файл c_a_st.obj, який підключається до головної програми.

У середовищі BorlandC створюємо файл проекту таким чином:

Меню Project - Open Project, створюємо my3.obj, підключаючи до нього файли c_asm.c та c_a_st.obj. Далі завантажуємо tlink.exe та отримуємо з нього

файл c_asm.exe.

5.3 Схема алгоритму програми

5.4 Текст програми на мові високого рівня

#include <stdio.h>

#include <stdlib.h>

#include <dos.h>

#include <conio.h>

#include <string.h>

#include <time.h>

int comp(char* tex, int isize);

int main()

{ extern pr_my(int kol, char* tex1);

char text1[127];

clrscr();

randomize();

printf("\t\tProgram begin\n");

printf("\nEnter first text width length <=10: ");

scanf("%s",text1);

if (comp(text1,10))

return 1;

pr_my(strlen(text1),text1);

printf("Rezult text:%s",text1);

getch();

return 0;

}

int comp(char tex[127], int isize)

{ int i;

i=strlen(tex);

if (i==0)

{ printf("\nYou have entered string with size '0', so program terminated...");

getchar();

return 1;

}

if (i!>=isize)

{ printf("\nYou have entered string with wrong size, so program terminated...");

getchar();

return 1;

}

return 0;

}

5.5 Текст програми на Асемблері

MASM

MODEL small

STACK 256

.code

_pr_my proc near

public _pr_my

push bp

mov bp, sp

mov cx, [bp+4] ; length text1

mov si, [bp+6] ; ofs text1

m1: mov al,'a'

cmp [si],al

jne m2

mov dl,' '

mov [si],dl

m2:

mov al,'b'

cmp [si],al

jne m3

mov dl,' '

mov [si],dl

m3:

mov al,'c'

cmp [si],al

jne m4

mov dl,' '

mov [si],dl

m4:

inc si

loop m1

pop bp

ret

_pr_my endp

end

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

Був заданий рядок A: dfscaidilaxlclblw. Після виконання програма

видає на екран:

Rezalt text1:

Dfs idil xl l lw

що співпадає з очікуваними результатами.

Висновки

У ході виконання розрахунково-графічного завдання було вирішено завдання: задано рядок А. За допомогою процедури замінити усі символи "а","b" і "c" на пробіли.

При роботі з мовою Паскаль параметри розташовуються у окремому масиві, а адреса масиву буде передана у стек, при роботі з мовою С всі параметри у процедурі передаються у стек.

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

У ході виконання розрахунково-графічного завдання було вдосконалено навики розробки програм, які використовують взаємодію програмних модулів на різних мовах програмування: низького рівня (асемблер) та високого рівня (С та Паскаль).

Список використаної літератури

1. Юров В.И. Assembler. Практикум. 2-е изд - СПб.: Питер, 2006. - 399 с.: ил.

2. Зубков С.В. Assembler для DOS, Windows и Unix. - М.: ДМК Пресс, 2000. - 608 с.: ил.

3. С. Липпман, Ж. Лажойе, Б. Му Язык программирования С++. Вводный курс, 4-е издание, 2007. - 896 с.: ил

4. А. Епанешников, В. Епанешников Программирование в среде Turbo Pascal 7.0. - 4-е изд. - М.: «ДИАЛОГ-МИФИ»,2001. - 367 с.

5. Методичні вказівки до лабораторних робіт


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.