Ассемблер + Pascal icon

Ассемблер + Pascal




Скачати 37.13 Kb.
НазваАссемблер + Pascal
Дата03.08.2012
Розмір37.13 Kb.
ТипЛабораторная работа

ЛАБОРАТОРНАЯ РАБОТА N 13

Ассемблер + Pascal



Ассемблер предоставляет программисту полную свободу действий, но время, затрачиваемое на создание ассемблерных программ, слишком велико. Работая на языках высокого уровня, часто можно столкнуться с ограничениями, которые неизбежны при использовании этих языков:

  • большой объем занимаемой памяти, недостаточное быстродействие,

  • недоступны внутренние ресурсы компьютера.

Тогда рационально переписывать не всю программу на языке высокого уровня, а только несколько фрагментов кода, критичных, например, по времени выполнения. И наоборот, существует много библиотек, написанных на языках высокого уровня, которые с успехом могут применяться в ассемблерных программах. Для объединения текстов программ, написанных на Pascalе и Aссемблере, когда подпрограмма на языке ассемблера вызывается из основной программы на языке Pascal, возможны два варианта:

  1. Подпрограмма записывается на языке ассемблера. Компилируется компилятором Tasm. Получаемый объектный файл компонуется с основной программой, написанной на Turbo Pascal.

  2. Используя встроенный ассемблер пакета Turbo Pascal, отдельные части текста программы можно написать непосредственно на языке ассемблера, заключив их в операторные скобки asm ... end.


Вариант 1

Рекомендуется использовать, когда функция или подпрограмма достаточно большая, и имеет смысл ее компилировать отдельно. Либо в ней нужно использовать инструкции, недопустимые для встроенного в Pascal ассемблера. Для реализации этого варианта необходимо выполнить следующие требования :


1. В Pascal-программе использовать директиву компилятора { $L <имя .obj-файла> }, где .obj-файл - это оттранслированная программа на языке ассемблера, которая вызывается из Pascal-программы.


2. В Pascal-программе подпрограмма, которая реализована на ассемблере, описывается как external и вызывается как обычная функция, написанная на языке Pascal.


3. В ассемблер-программе используется директива PUBLIC, чтобы указать, что процедура, реализуемая в этой программе, может использоваться во внешних по отношению к ней программах.

4. Параметры в ассемблерную подпрограмму передаются через стек.

Правила передачи параметров из Pascal в ассемблер:

  • параметры-значения размером в 1 байт передаются одним словом;несет информацию младший байт.

  • параметры-значения размером в 2 байта передаются одним словом;

  • параметры-значения размером в 4 байта передаются двумя словами;

  • все остальные параметры-значения передаются полными адресами;

  • параметры-переменные и параметры-константы передаются полными адресами.


5. Результаты работы ассемблерной программы записывают в регистры AX (или AX,DX), если в Pascal она объявлена как функция. Правила передачи параметров из функции, т.е. из ассемблера в Pascal:


  • однобайтовый результат передается в регистре AL;

  • слово-результат передается в регистре AX;

  • 4-байтовый результат передается в регистрах DX (старшая часть или адрес сегмента) и AX (младшая часть или смещение).

Если подпрограмма на ассемблере должна вычислять множество значений, например массив, то их нужно объявлять в модуле на Pascale, передавать в ассемблер адрес начала этого множества. Тогда после вычислений на ассемблере в массиве основной программы на языке Pascal будут требуемые значения.


Пример

Составить программу, использующую функцию для вычисления суммы элементов массива целых чисел. Функция записывается на языке Ассемблера.


Основная программа на Pascalе.

Program P_ass1;

const n=10;

var M:array [1..n] of integer;

i: integer;

{$L ass1_p} { подключение файла ass1_p.obj }

function sm (var masiv; n:integer):integer;external;

begin

writeln ('Введите 10 чисел');

for i:= 1 to n do

readln (m[i]);

writeln ('сумма элементов массива:',sm(M,n));

readln;

end.

Вызываемая программа на Ассемблере в отдельном файле.

.Model Large, Pascal

.CODE

Public sm

sm proc near adrm:dword,n:word ; передаваемые параметры

lds si,adrm ; загрузка адреса массива в ds,si

mov bx,0 ; начальное значение суммы

mov cx,n ; счетчик

cld ; обработка строки слева направо - DF=0

@@1:lodsw ; загрузка слова в ax, адрес из ds:si

add bx,ax

loop @@1

mov ax,bx ; результат работы функции

ret

endp

.exit 0

end

Встроенный Ассемблер

Начиная с версии 6.0, Turbo Pascal содержит встроенный ассемблер. Он позволяет включать в программу фрагмент текста на языке Ассемблер в операторных скобках asm...end; . После заголовка ассемблерной функции или подпрограммы необходимо написать служебное слово "assembler". При этом в ассемблерной части программы можно использовать идентификаторы из программы на языке Pascal.

В ассемблерной части нельзя использовать:

  • стандартные процедуры и функции;

  • метки, объявленные не в данном блоке и др.

  • Метки, используемые в ассемблерной части программы должны быть

  • локальными, т.е. начинаться с символа "@".


Пример

Запишем функцию Sm из предыдущего примера на языке Ассемблер внутри программы на Pascalе.


Program p_ass3;

const n=10;

var M:array[1..n] of integer;

s,i,b : integer;

function Sm (var Mas;n:integer):integer;assembler;

asm

lds si,mas {адрес массива}

mov bx,0

ov cx,n

cld

@1:lodsw

add bx,ax

loop @1

mov ax,bx

add ax,b {прибавляется число, объявленное в Pascal - b}

end;

begin

writeln ('Введите начальное приращение');

readln (b);

writeln ('Введите 10 чисел');

for i:= 1 to n do

readln (m[i]);

writeln ('Сумма элементов массива :',sm(m,n));

readln;

end.

Задания к лабораторной работе



1. В соответствии с заданием к лабораторной работе N 10 ычисления y1 и y2 запрограммируйте на языке ассемблера, вычисление y – на языке Pascal. Для вычисления y1 создайте отдельный файл на языке Ассемблера, для вычисления y2 используйте встроенный Ассемблер (конструкция asm...end).

2. Занесите в протокол:

  • исходные данные и полученные результаты вычислений в десятичной форме;

  • текст программ и описание способов вызова процедур и передачи параметров.

Схожі:

Ассемблер + Pascal iconАссемблер + С
Модификатор cdecl указывает, что соглашения о связях и именах при передаче параметров будут использованы согласно принятым в языке...
Ассемблер + Pascal iconЛекція 1: Основні поняття та означення. Елементарні алгоритмічні структури. Елементи мови Pascal. Поняття " алгоритму " Властивості алгоритму
Лекція 1: Основні поняття та означення. Елементарні алгоритмічні структури. Елементи мови Pascal
Ассемблер + Pascal iconНазва модуля: Інформатика Код модуля
Зуев Е. А. Программирование на языке Turbo Pascal 0, – М. – «Техносфера», 1993
Ассемблер + Pascal iconІмені Володимира Даля
Економічна кібернетика”. Edu pas дає можливість знайомства з основами мови Pascal, точним описом та поглибленим вивченням його конструкцій....
Ассемблер + Pascal iconІнформаційна картка про інноваційну розробку
Економічна кібернетика”. Edu pas дає можливість знайомства з основами мови Pascal, точним описом та поглибленим вивченням його конструкцій....
Ассемблер + Pascal iconЛекція 5 Рядки. Записи. Поняття рядка та оголошення змінних рядкового типу Операції над рядками та рядкові вирази Процедури та функції обробки рядків
Рядок це скінченна послідовність символів, яку можна розглядати як особливу форму одновимірного масиву. У мові Pascal є два способи...
Ассемблер + Pascal iconЛекція 7 Процедури Підпрограми, їх різновиди та способи використання Процедури користувача Процедури без параметрів Процедури з параметрами
Одна з найпомітніших переваг такого підходу полягає у простоті механізму внесення змін І виправлень у процедурно-орієнтовані програми....
Ассемблер + Pascal iconЛекція Структуровані типи даних. Одновимірні масиви. Поняття одновимірного масиву та його властивості Базові операції обробки одновимірних масивів
Характерною ознакою простих типів даних є те, що вони не містять як складові елементи дані інших типів. Типи даних, що не задовольняють...
Ассемблер + Pascal iconЛекція 2: Керування порядком обчислень Вибір із двох альтернатив. Вкладеність конструкцій вибору. Поліваріантний вибір Поняття операторного блоку
Алгоритмічна конструкція альтернативного розгалуження, або конструкція вибору з двох альтернатив, дозволяє виконавцеві алгоритму...
Додайте кнопку на своєму сайті:
Документи


База даних захищена авторським правом ©zavantag.com 2000-2013
При копіюванні матеріалу обов'язкове зазначення активного посилання відкритою для індексації.
звернутися до адміністрації
Документи