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

1. Зміст виконання завдання

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

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

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

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

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

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

3. Варіант завдання:

17) (2*c + d*51) / (d - a – 1)

Текст програми:

Cpp - модуль

#include <iostream.h>

#include <limits.h>

extern "C"

{void prim(void);}

int a,d,b;

int z;

void main(void)

{

cout<<endl<<"Input a:";

cin>>a;

cout<<endl<<"Input b:";

cin>>b;

cout<<endl<<"Input d:";

cin>>d;

z=(2*b+d*51)/(d-a-1);

cout<<endl<<"===C++ PROCESSING==="<<endl;

cout<<"z="<<z<<endl;

z=0;

prim();

cout<<endl<<"===ASSEMBLER PROCESSING==="<<endl;

cout<<"z="<<z<<endl;

getch();

}

Asm – модуль

;task3.asm

title task

model LARGE, C

.data

EXTRN C a:word, c:word, d:word, z:dword

y dw 0

t dw 0

.code

Public C task3

task3 proc far

;-------4islitel'-------

mov ax, c

mov cx, 2

mul cx

mov word ptr y, ax

mov word ptr y+2, dx

mov ax, d

mov cx, 51

mul cx

mov word ptr t, ax

mov word ptr t+2, dx

mov ax, y

mov bx, t

add ax, bx

;-------3namenatel'--------

mov cx, d

mov dx, a

sub cx, dx

dec cx

;------delenie drobi--------

xor dx, dx

div cx

mov word ptr z, ax

mov word ptr z+2, dx

ret

task3 endp

end

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

Завдання № 4

Організація умовних переходів”

1. Зміст виконання завдання

Змістом виконання завдання є обчислення заданого умовного виразу для даних у форматах INTEGER та WORD з використанням команд порівняння, умовного і безумовного переходів.

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

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

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

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

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

3. Варіант завдання:

2*a / b + 1, якщо a > b,

17) X = -445, якщо a = b,

(b + 5) / a, якщо a < b;

Текст програми :

Cppмодуль

#include <iostream.h>

#include <math.h>

#include <limits.h>

#include <conio.h>

extern "C"

{void prim(void);}

char a,b;

int x;

void main(void)

{

cout<<endl<<"Input a:";

cin>>a;

cout<<endl<<"Input b:";

cin>>b;

if(a>b)

x=(2*a)/(b+1);

else

if(a<b)

x=(b+5)/a;

else

x=-445;

cout<<endl<<"===C++ PROCESSING==="<<endl;

cout<<"x="<<x<<endl;

x=0;

prim();

cout<<endl<<"===ASSEMBLER PROCESSING==="<<endl;

cout<<"x="<<x<<endl;

getch();

}

Asm – модуль

title task4

model Large C

.data

Extrn C a:byte, b:byte, x:word

public C task4

task4 proc far

.code

mov x, -445

mov cl, a

mov al, b

cmp cl, al

JB Below

JA Above

jmp Exit

Below: add al, 5

cbw

div cl

mov x, ax

Above: mov bl, 2

mul bl

inc al

cbw

div al

mov x, ax

Exit: ret

task4 endp

end

Висновок: розроблена програма для обчислення заданого умовного виразу для даних у форматах INTEGER та WORD з використанням команд порівняння, умовного і безумовного переходів.

Список використаної літератури:

1. Голубь Н.Г. Искусство программирования на Ассемблере. Лекции и упражнения. – СПб.: ООО “ДиаСофт”.

2. Конспект лекций по дисциплине «Системное программирование и операционные системы».

12