Взаємодія програм на мовах низького та високого рівня
Порядок и методика розробки програм, які використовують взаємодію програмних модулів на різних мовах програмування: низького рівня (Асемблер) та високого (С та Паскаль). Розробка структури програми, вибір змінних, особливості взаємодії мов програмування.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | реферат |
Язык | украинский |
Дата добавления | 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. Методичні вказівки до лабораторних робіт
Подобные документы
Розробка, налагоджування, тестування і документування програми на мові високого рівня С++ при рішенні на комп'ютері прикладної інженерної задачі. Використання принципів модульного і структурного програмування, зображення алгоритму у вигляді блок-схеми.
курсовая работа [1,1 M], добавлен 07.08.2013Розробка системних програм мовою асемблера або мовою високого рівня з вставками цією мовою. Формати числових даних, виконання арифметичних операцій. Арифметичні команди над двійковими цілими, двійково-десятковими не упакованими та упакованими числами.
методичка [232,4 K], добавлен 11.01.2010Розробка програми на мові програмування Асемблер для обчислення виразу. Розрахунок значень А, В, С у процедурах. Аналіз отриманих результатів за допомогою відлагоджувальника Turbo Debugger при різних заданих значеннях та перевірка їх правильності.
лабораторная работа [203,4 K], добавлен 09.01.2013Побудова блок-схем алгоритмів програм. Створення блок схем алгоритмів за допомогою FCEditor. Експорт блок-схеми в графічний файл. Огляд програмних та апаратних засобів. Мови програмування високого рівня. Цикли та умовний оператор IF з лічильником.
дипломная работа [1,4 M], добавлен 15.12.2013Програмування під DOS мовою низького рівня Асемблер (ASM-86). Функції програми: виведення в довільне місце екрану тексту заданого стилю та кольору, змінення шрифту, розміру літер та напрямку їх виводу. Алгоритм програми, системні вимоги до комп'ютера.
курсовая работа [47,4 K], добавлен 03.06.2009Три типи файлів, які містять програми на Turbo Pascal. Призначення модулів та їх структура: заголовок, інтерфейсна частина та кінець. Стандартні модулі, їх особливості. Компіляція програм, які використовують модулі. Підключення модулів до програм.
контрольная работа [19,6 K], добавлен 18.05.2009Модель аналізу-синтезу компіляції. Формальний опис вхідної мови програмування. Вибір технології програмування, проектування таблиць транслятора та вибір структур даних. Опис програми реалізації лексичного аналізатора. Розробка дерев граматичного розбору.
курсовая работа [75,8 K], добавлен 26.12.2009Загальна структура комп'ютера, архітектура процесора типу Intel 8086. Принцип роботи пам'яті, її види (постійна та оперативна). Основи програмування на мові асемблер та її синтаксис. Особливості використання позначок, кодів команд, операндів і директив.
лабораторная работа [36,0 K], добавлен 27.02.2013Модель в об’єктно-орієнтованих мовах програмування. Програмна модель створена на мові програмування С++, в середовищі програмування Borland С++ Builder 6.0. Вибір засобів реалізації програми. Види інструментів для об'єктно-орієнтованої розробки.
курсовая работа [116,9 K], добавлен 06.06.2010Розробка алгоритму програми для проведення розрахунків аналітичних виразів та обробки структурованих даних з метою вирішення завдань управління військами. Заповнення двовимірного масиву програмних елементів речового типу та генератор випадкових чисел.
курсовая работа [1,0 M], добавлен 15.05.2019