
- •Завдання № 1
- •1. Зміст виконання завдання
- •2. Порядок виконання завдання
- •3. Обчислення для свого варіанту цілих чисел
- •Завдання № 2
- •3. Обчислення для свого варіанту матеріальних чисел
- •1. Зміст виконання завдання
- •2. Порядок виконання завдання
- •4) Виконати тестування програми і виправити помилки, якщо такі знайдуться.
- •3. Варіант завдання:
- •Завдання № 4
- •1. Зміст виконання завдання
- •2. Порядок виконання завдання
- •3. Варіант завдання:
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. Конспект лекций по дисциплине «Системное программирование и операционные системы».