Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CP_i_OS_D.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
143.49 Кб
Скачать

22 0050 Bfdd495182a9930c aid dq -0.4570

23 0058 3FDD2BD3C3611340 DQ 0.4564

24 0060 Bfdd2bd3c3611340 dq -0.4564

25 0068 3FDD495182A9930C DQ 0.4570

26 0070 40515D495182A993 DQ 63.4570

27 0078 C049BA57A786C226 DQ -57.4564

28 0080 4049BA57A786C226 DQ 57.4564

29 0088 C0515D495182A993 DQ -63.4570

30 ;------------long_double----------------

31 0090 40058A00000000000000 at DT 63.0

32 009A 4004CC00000000000000 DT 57.0

33 00A4 C0058A00000000000000 bld DT -63.0

34 00AE C004CC00000000000000 DT -57.0

35 00B8 BFFDEA4A8C154C985F07 ail DT -0.4570

36 00C2 3FFDE95E9E1B089A0275 DT 0.4564

37 00CC BFFDE95E9E1B089A0275 DT -0.4564

38 00D6 3FFDEA4A8C154C985F07 DT 0.4570

39 00E0 40058AEA4A8C154C985F DT 63.4570

40 00EA C004CDD2BD3C36113405 DT -57.4564

41 00F4 4004CDD2BD3C36113405 DT 57.4564

42 00FE C0058AEA4A8C154C985F DT -63.4570

43 END

Висновок: в результаті виконання другого завдання курсової роботи були перекладені матеріальні числа з десятичної до двоїчної системи счислення і визначене їх внутрішнє уявлення відповідно до форматів типу Single (float, double, long double )

Задание №3:

Вычисление целочисленных арифметических выражений

Метою виконання завдання є обчислення цілочисельних арифметичних виразів для вхідних даних в знакових форматах довжиною 16 біт Integer з використанням арифметичних операцій ADD, ADC, INC, SUB, SBB, DEC, NEG, IMUL, IDIV, CBW, CWD, SAL, SAR.

Порядок виконання завдання

1) Написати модуль обчислення арифметичного виразу на мові Assembler.

2) Написати на мові С++ програму уводу вхідних даних, обчислення арифметичного виразу та виводу отриманого результата.

3) Виконати стикування asm-модуля і С++-модуля.

4) Виконати тестування програми і виправити помилки, якщо такі знайдуться.

Варіант завдання

(2*c-d*82) / (a/4 -1)

Общие сведение:

Для осуществления стыковки модули должны удовлетворять следующим условиям:

Требования к срр-модулю:

- имена внешних переменных и функций необходимо объявлять как глобальные;

- имена внешних функций должны быть уникальными (то есть не допускается использование внешних функций с одинаковыми именами в разных модулях);

- к именам внешних функций необходимо применить спецификатор сборки extern для их интерпретации в стиле языка С, а не С++;

- константы должны быть локальными;

- вызов внешних функций выполняется по обычным правилам языка С++.

Требования к asm-модулю:

- для модели памяти желательно установить тип Large с обязательным указанием языка программирования С, а не С++;

- внешние переменные, которые передаются из срр-модуля в asm-модуль, разрешается описывать как в сегменте кода, так и в сегменте данных с использованием ключевого слова-модификатора Extrn;

- описание констант необходимо повторить, они должны быть локальными и могут размещаться как в сегменте данных, так и в сегменте кода;

- внешние функции должны быть описаны при помощи директивы описания внешних имен Public с обязательным указанием языка программирования С, а не С++;

для стыковки срр и asm модулей при использовании компиляторов bcc и tasm описание сегментов программы разрешается выполнять как в стиле MASM, так и в стиле IDEAL.

После создания модулей с учетом выше перечисленных правил их стыковка осуществляется следующим образом:

компиляция asm-модуля и создание объектного модуля (.obj) с обязательным указанием ключа /ml (для устранения противоречий из-за чувствительности языка С++ к регистру символов) и дополнительным указанием ключа /l (для создания листинга):

tasm /ml /l имя.asm

В результате получаем объектный модуль (имя.obj).

стыковка модулей, сборка программы и создание исполняемого файла (.exe).

bcc –ml имя1.cpp имя.obj

В результате получаем исполняемый модуль (имя1.exe).

Текст програми task.asm (asm-модуль ):

;y=(2*c-d*82) / (a/4 -1)

title Variant3

.model Large, C

.data

Extrn C a:word

Extrn C b:word

Extrn C c:word

Extrn C d:word

Extrn C y:word

Extrn C v1:word

Extrn c v2:word

.code

Public C prim3

prim3 proc far

mov cx,82

mov ax,d

cwd

imul cx

mov v1,ax

mov cx, 2

mov ax,c

imul ax

mov bx, v1

sub bx, ax

mov v1,bx

mov cx,4

mov ax,a

cbw

idiv cx

mov dx, ax

mov bx, 1

sub dx, bx

mov v2, dx

mov v1,ax

mov v2,cx

cbw

idiv cx

mov y, cx

ret

variant3 endp

end

Turbo Assembler Version 4.1 25/04/11 21:41:46 Page 1

prim31.asm

prim3

1 0000 .model Large, C

2 0000 .data

3 Extrn C a:word

4 Extrn C b:word

5 Extrn C c:word

6 Extrn C d:word

7 Extrn C y:word

8 Extrn C v1:word

9 Extrn c v2:word

10 0000 .code

11 Public C prim3

12 0000 prim3 proc far

13 0000 B9 0003 mov cx,82

14 0003 A1 0000e mov ax,d

15 0006 99 cwd

16 0007 F7 F9 imul ax

17 0009 A3 0000e mov v1,ax

18 000C B9 0002 mov cx, 2

19 000F A1 0000e mov ax,c

20 0012 F7 E8 imul ax

21 0014 8B 1E 0000e mov bx, v1

22 0018 2B D8 sub bx, ax

23 001A 89 1E 0000e mov v1,bx

24 001E B9 0004 mov cx,4

25 0021 A1 0000e mov ax,a

26 0024 98 cbw

27 0025 F7 F9 idiv cx

28 0027 8B D8 mov bx, ax

29 0029 8B 16 0000e mov dx, 1

30 002D 2B D3 sub bx, dx

31 002F 89 16 0000e mov v2, dx

32 0033 A3 0000e mov v1,ax

33 0036 89 0E 0000e mov v2,cx

34 003A 98 cbw

35 003B F7 F9 idiv cx

36 003D 89 0E 0000e mov y, cx

1 37 0041 CB RET 00000h

38 0042 prim3 endp

39 end

Текст программы на срр(cpp-модуль):

#include <iostream.h>

#include <limits.h>

#include <conio.h>

int a, c, d, y, v1, v2;

extern "C"

{void vartiant3 (void);}

void main (void)

{

cout<<endl<<"y=(2*C-D*82)/(A/4 - 1)"<<endl;

cout<<endl<<"Input A: ";

cin>>a;

cout<<"Input C: ";

cin>>c;

cout<<"Input D: ";

cin>>d;

y=(2*c-d*82)/(a/4-1);

cout<<endl<<"reshalka na C++: ";

cout<<"y="<<y;

y=0;

variant3 ();

cout<<endl<<"start vichisleniy assemblera: ";

cout<<"y="<<y;

getch ();

}

Вывод результата:

y=(2*C-D*82)/(A/4-1)

Input A: 16

Input C: 100

Input D: 2

Calculation in C++: y=12

Calculation in Assembler: y=12

Вывод: в результате выполнения данного задания была воспроизведена стыковка asm-модуля с cpp-модулем в COM-файл, который производит вычисление данного уравнения.

Задание №4

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]