Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
11
Добавлен:
01.05.2014
Размер:
26.62 Кб
Скачать

Санкт-Петербургский государственный университет

Кафедра МО-ЭВМ

Отчёт по лабораторной работе №8

по дисциплине «Организация и функционирование ЭВМ»

Выполнил: Добряков М.М.

Ст. гр. 0341

Проверил:

Санкт-Петербург

2002

  1. Постановка задачи

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

Выполнить трансляцию программы с подготовкой ее ассемблерной версии и отладочной информации. Для выбранного контрольного набора исходных данных прогнать программу под управлением отладчика td. При этом для каждой команды сопроцессора следует фиксировать содержимое используемых ячеек памяти, регистров ЦП и численных регистров сопроцессора до и после выполнения этой команды.

Проверить корректность выполнения вычислений для нескольких наборов исходных данных.

  1. Цель работы

Научиться использовать команды сопроцессора, а так же научиться использовать ассемблер для написания подпрограмм используемых в языках высокого уровня таких например как C.

  1. Теоретическая подготовка

Вычисление гиперболического косинуса происходит по формуле , для вычисления экспоненты используется эмуляция математического сопроцессора средствами языка C. Содержимое регистров сопроцессора после выполнения каждой команды показано на листинге 1.

Компиляция осуществляется с помощью строки вида: tcc -f87 lab8c lab8.asm,

где tcc - Turbo C Version 2.01 Copyright (c) 1987, 1988 Borland International

-f87 - 8087 floating point,

затем указывается исходник тестирующей подпрограммы на C, а затем исходник подпрограммы на ассемблере.

  1. Проверка работоспособности программы

X=3, то cos(X)= 10.542768 Истинное значение 10,0676619957777658419539360351159

X=43, то cos(X)= 2363919734114673150.0 Истинное значение 2363919734114673280,7372287

X=0.0000001, то cos(X)= 1 Истинное значение 1,00000000000000500000000000000417

Листинг 1

80486 IPTR=5A5F7 OPCODE=546 OPTR=6D13C ; fld [x]

Valid ST(0) 3

Empty ST(1)

Empty ST(2)

Empty ST(3)

Empty ST(4)

Empty ST(5)

Empty ST(6)

Empty ST(7)

80486 IPTR=5A5FA OPCODE=1E1 OPTR=5D180 ; fabs

Valid ST(0) 3

Empty ST(1)

Empty ST(2)

Empty ST(3)

Empty ST(4)

Empty ST(5)

Empty ST(6)

Empty ST(7)

80486 IPTR=5D039 OPCODE=5D9 OPTR=5D180 ; int 3eh; db 0d9e8h

Valid ST(0) 20.085536923187668

Empty ST(1)

Empty ST(2)

Empty ST(3)

Empty ST(4)

Empty ST(5)

Empty ST(6)

Empty ST(7)

80486 IPTR=5A600 OPCODE=1E8 OPTR=5D180 ; fld1

Valid ST(0) 1

Valid ST(1) 20.085536923187668

Empty ST(2)

Empty ST(3)

Empty ST(4)

Empty ST(5)

Empty ST(6)

Empty ST(7)

80486 IPTR=5A602 OPCODE=1C0 OPTR=5D180 ; fld st

Valid ST(0) 1

Valid ST(1) 1

Valid ST(2) 20.085536923187668

Empty ST(3)

Empty ST(4)

Empty ST(5)

Empty ST(6)

Empty ST(7)

80486 IPTR=5A604 OPCODE=6F9 OPTR=5D180 ; fdivp ST(1), ST

Valid ST(0) 1

Valid ST(1) 20.085536923187668

Empty ST(2)

Empty ST(3)

Empty ST(4)

Empty ST(5)

Empty ST(6)

Empty ST(7)

80486 IPTR=5A606 OPCODE=6C1 OPTR=5D180 ; faddp

Valid ST(0) 21.085536923187668

Empty ST(1)

Empty ST(2)

Empty ST(3)

Empty ST(4)

Empty ST(5)

Empty ST(6)

Empty ST(7)

80486 IPTR=5A608 OPCODE=506 OPTR=5D372 ; fld half

Valid ST(0) 0.5

Valid ST(1) 21.085536923187668

Empty ST(2)

Empty ST(3)

Empty ST(4)

Empty ST(5)

Empty ST(6)

Empty ST(7)

80486 IPTR=5A60C OPCODE=6C9 OPTR=5D180 ; fmulp

Valid ST(0) 10.542768461593834

Empty ST(1)

Empty ST(2)

Empty ST(3)

Empty ST(4)

Empty ST(5)

Empty ST(6)

Empty ST(7)

Соседние файлы в папке Лабораторная работа №81