Лабораторная работа №9 Использование ассемблера в языках высокого уровня 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Лабораторная работа №9 Использование ассемблера в языках высокого уровня

 

Цель работы: Изучение особенностей построения разноязыковых программ; изучение взаимосвязи разных уровней представления программы.

 

Порядок выполнения работы

1. Изучить стандартные соглашения о регистрах, соглашения о метках и типах, соглашения о передаче параметров. Изучить процедуры пролога и эпилога.

2. Изучить пример выполнения задания.

3. Разработать алгоритм вычисления выражения из индивидуального задания.

4. Разработать процедуру на языке высокого уровня С++, реализующую вычисление функции из индивидуального задания.

5. Разработать процедуру вычисления функции на языке ассемблера, используя встроенные средства языка С++.

6. Разработать отдельную процедуру вычисления функции на языке ассемблера и подключить её к проекту на языке С++.

7. Провести тестирование всех разработанных в пп.4-6 процедур.

8. Выполнить анализ реализованных процедур вычисления заданной функции по быстродействию, для чего разработать соответствующую главную функцию на языке С++. Все данные между главной функцией из пункта 8 и разработанными в пунктах 4-6 процедурами обязательно должны передаваться списком параметров.

9. Составить отчет.

 

Пример выполнения задания

a+b.

 

Текст процедуры на языке языке C++

short sumC(short p1, short p2)

{

return (p1 + p2);

}

 

Текст процедуры на языке языке C++ с ассемблерной вставкой

short sumCA(short p1, short p2)

{

_asm

{

     mov ax, p1;

     add p2, ax

}

return p2;

}

 

Текст процедуры на языке ассемблер

.586

.MODEL SMALL, C

.CODE

sumA PROC C p1:word, p2:word;

           mov ax, p1;

           mov bx, p2;

           add ax, bx

ret

sumA ENDP

 

Пример работы программы для анализа времени выполнения процедур представлены на рисунке 3. Приведенные выше тексты соответствуют 2, 4, 5 строкам вывода.

Рисунок 3. Пример работы программы оценивающей время выполнения приведённых выше процедур

 

 

Содержание отчета

1. Текст задачи

2. Схема алгоритма решения задачи

3. Тексты всех разработанных в пп. 4-6,8 модулей

4. Тесты

6. Вывод, содержащий анализ быстродействия проведенный в п.8

 

Варианты индивидуальных заданий

1. (2*c – d + 23) / (a/4 – 1)

2. (c + 4*d – 123) / (1 – a/2)

3. (-2*c + d*82) / (a/4 – 1)

4. (2*c + d – 52) / (a/4 + 1)

5. (c/4 – d*62) / (a*a + 1)

6. (-2*c – d + 53) / (a/4 – 1)

7. (2*c – d/4) / (a*a + 1)

8. (2 + c – d*23) / (2*a*a – 1)

9. (2*c – d/3) / (b – a/4)

10. (4*c + d – 1) / (c – a/2)

11. (2*c – d*42) / (c + a – 1)

12. (25/c – d + 2) / (b + a*a – 1)

13. (c – d/2 + 33) / (2*a*a – 1)

14. (4*c – d/2 + 23) / (a*a – 1)

15. (c*d + 23) / (a/2 – 4*d – 1)

 

Контрольные вопросы

1. Какие существуют формы комбинирования программ на языке высокого уровня с ассемблером? Дайте им характеристику.

2. Процедуры пролога и эпилога.

3. Соглашения о регистрах, соглашения о метках и типах, соглашения о передаче параметров.

4. Возможности встроенных средств С++ для использования языка ассемблера.



Поделиться:


Последнее изменение этой страницы: 2024-06-17; просмотров: 58; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.005 с.)