- •Методичні вказівки
- •"Системне програмування та операційні системи”
- •Лабораторна робота №1
- •Загальні відомості
- •Компілятор Turbo Assembler
- •Компонування програми
- •Складові частини програми
- •Лабораторна робота №2
- •Програмна модель пристрою fpu
- •Приклад побудови програми
- •Завдання до лабораторної роботи №1
- •Варіанти завдань до лабораторної роботи №2
- •Лабораторна робота №3
- •Опис логічних операцій мови програмування асемблер
- •Приклад програми використання логічних операцій
- •Варіанти завдань до виконання лабораторної роботи №3
- •Лабораторна робота №4
- •Команди для роботи з масивами
- •Приклад програми для роботи з масивами
- •Варіанти завдань до виконання лабораторної роботи №6
- •Лабораторна робота №5
- •Команди для роботи зі стрічками
- •Приклад програми для роботи із стрічками
- •Варіанти завдань до виконання лабораторної роботи №5
- •Контрольні запитання
- •Порядок оформлення звітів до виконання лабораторних робіт
- •Література
- •Навчальне видання
- •« Системне програмування та операційні системи »
Варіанти завдань до лабораторної роботи №2
На мові програмування асемблер скласти програму, що обчислює нижче наведені вирази:
-
обчислення арифметичного виразу: Z=36*12+289/(19-17mod3)
протабулювати функцію F(X)=cos(x1/2)arcsin(x/7)*22*x для x від 0 до 2 з кроком 0,24.
Обчислити функцію
-
обчислення арифметичного виразу: Z=18/2+529/(2*7+19mod10)
протабулювати функцію F(X)=log2(x1/2)arctg(x/7)*86*x для x від 0.01 до 1.62 з кроком 0,18.
Обчислити функцію
-
обчислення арифметичного виразу:
Z=3*(2+18)+121/(19-17mod10)
протабулювати функцію F(X)=exp(x1/2)arcsin(x/2)*0.522.3*x для x від 1 до 2.1 з кроком 0,14.
Обчислити функцію
-
обчислення арифметичного виразу: Z=118mod12+1089/(21+2*(3+3))
протабулювати функцію F(X)=log2(exp(x1/2))*0.240.16*x для x від 0.016 до 2.36 з кроком 0,24.
Обчислити функцію
-
обчислення арифметичного виразу: Z=36*12+289/(19-17mod7).
протабулювати функцію F(X)=cos(2x-2.3)*arcsin(x/7)*22*x для x від 0 до 2 з кроком 0,24.
Обчислити функцію
-
обчислення арифметичного виразу: Z=3*2/4+811/(27+41mod6).
протабулювати функцію F(X)=tg(sin(arctg(x1/2)))*0.3x/2 для x від 0.32 до 2.24 з кроком 0,21.
Обчислити функцію
-
обчислення арифметичного виразу: Z=9*12/4+1681/(59+26mod4-6*3-2)
протабулювати функцію F(X)=exp(cos(x1/2))*tg(22*x) для x від 0 до 2 з кроком 0,24.
Обчислити функцію
-
обчислення арифметичного виразу: Z=30*12+324/(20-17mod3)
протабулювати функцію F(X)=sin(x1/2)arcsin(x/7)*22*x для x від 0 до 2 з кроком 0,24.
Обчислити функцію
-
обчислення арифметичного виразу: Z=20*2+169/(14-10mod3)
протабулювати функцію F(X)=exp(x1/2)arcsin(x/7)*22*x для x від 0 до 2 з кроком 0,24.
Обчислити функцію
-
обчислення арифметичного виразу: Z=36/12+196/(16-17mod3)
протабулювати функцію F(X)=tg(sin(arctg(x1/2)))*0.6x для x від 0.32 до 2.24 з кроком 0,21.
Обчислити функцію
-
обчислення арифметичного виразу: Z=25*3+225/(17-17mod3)
протабулювати функцію F(X)=sin(2x-2.3)*arcsin(x/7)*2x для x від 0 до 2 з кроком 0,24.
Обчислити функцію
-
обчислення арифметичного виразу: Z=26*2+324/(19-21mod5)
протабулювати функцію F(X)=exp(x2)arcsin(x)*0.54.3*x для x від 1 до 2.1 з кроком 0,13.
Обчислити функцію
*При виконанні програми слід враховувати, що аргументом прямих тригонометричних функцій може бути число від -2 до 2
Лабораторна робота №3
Тема. Логічні операції мови програмування асемблер.
Мета. Вивчити логічні команди процесорів серії х86, набути практичних навичок складання і відлагодження програм з використанням набору логічних команд.
Опис логічних операцій мови програмування асемблер
Асемблер має розвинену структуру логічних операторів, що дозволяє будувати в програмі складну розгалужену систему булевої логіки. Всі логічні операції проводяться побітово між бітами одного операнда команди та відповідними бітами другого операнда команди.
AND - Логiчне I
код операції |
команда |
число тактових циклів |
опис |
24 ib |
AND AL,imm8 |
1 |
Операцiя логiчного I для без-посереднього байта та AL |
25 iw |
AND AX,imm16 |
1 |
Операцiя логiчного I для без-посереднього слова та AX |
25 id |
AND EAX,imm32 |
1 |
Операцiя логiчного I для без-посереднього подвiйного слова та EAX |
80 /4 ib |
AND r/m8,imm8 |
1/3 |
Операцiя логiчного I для без-посереднього байта та байта в r/m |
81 /4 iw |
AND r/m16,imm16 |
1/3 |
Операцiя логiчного I для без-посереднього слова та слова в r/m |
81 /4 id |
AND r/m32,imm32 |
1/3 |
Операцiя логiчного I для без-посереднього подвiйного слова та подвiйного слова в r/m |
83 /4 ib |
AND r/m16,imm8 |
1/3 |
Операцiя логiчного I для безпосереднього розширеного знаком байта та слова в r/m |
83 /4 ib |
AND r/m32,imm8 |
1/3 |
Операцiя логiчного I для безпосереднього розширеного знаком слова та подвiйного слова в r/m |
20 /r |
AND r/m8,r8 |
1/3 |
Операцiя логiчного I для байтового регiстра та байта в r/m |
21 /r |
AND r/m16,r16 |
1/3 |
Операцiя логiчного I для регiстра слова та слова в r/m |
21 /r |
AND r/m32,r32 |
1/3 |
Операцiя логiчного I для регiстра подвiйного слова та подвiйного слова в r/m |
22 /r |
AND r8,r/m8 |
1/2 |
Операцiя логiчного I для байта в r/m та байтового регiстра |
23 /r |
AND r16,r/m16 |
1/2 |
Операцiя логiчного I для слова в r/m та регiстра слова |
23 /r |
AND r32,r/m32 |
1/2 |
Операцiя логiчного I для подвiйного слова в r/m та регiстра подвiйного слова |
код операції |
команда |
число тактових циклів |
опис |
24 ib |
AND AL,imm8 |
1 |
Операцiя логiчного I для без-посереднього байта та AL |
25 iw |
AND AX,imm16 |
1 |
Операцiя логiчного I для без-посереднього слова та AX |
25 id |
AND EAX,imm32 |
1 |
Операцiя логiчного I для без-посереднього подвiйного слова та EAX |
80 /4 ib |
AND r/m8,imm8 |
1/3 |
Операцiя логiчного I для без-посереднього байта та байта в r/m |
81 /4 iw |
AND r/m16,imm16 |
1/3 |
Операцiя логiчного I для без-посереднього слова та слова в r/m |
81 /4 id |
AND r/m32,imm32 |
1/3 |
Операцiя логiчного I для без-посереднього подвiйного слова та подвiйного слова в r/m |
83 /4 ib |
AND r/m16,imm8 |
1/3 |
Операцiя логiчного I для безпосереднього розширеного знаком байта та слова в r/m |
Робота команди:
DEST < DEST AND SRC;
CF < 0;
OF < 0;
Опис:
Кожний бiт результату виконання команди AND рiвний 1, якщо обидва вiдповiдних бiти операндiв рiвнi 1; в противному випадку бiт результату рiвний 0.
Змiнюванi прапорцi:
Прапорцi CF та OF очищюються ; прапорцi PF, SF та ZF встановлюються у вiдповiдностi до результату.
Винятки захищеного режиму:
#GP(0), якщо результат повинен помiщатись в сегмент, для якого заборонений запис; #GP(0) у випадку недопустимої виконуваної адреси операнда памятi в сегментах CS, DS, ES, FS або GS; #SS(0) у випадку недопустимої адреси в сегментi SS; #PF(код збою) у випадку сторiнкового збою; #AC для невирiвняного посилання до пам"ятi при рiвнi привiлейованостi, рiвному 3.
Винятки режиму реальних адрес:
Переривання 13, якщо частина операнда лежить поза простором виконуваних адрес вiд 0 до 0FFFFH.
Винятки вiртуального режиму 8086:
Тi ж винятки, що i для режиму реальних адрес: #PF (код збою) для сторiнкових збоів ; #AC для невирiвняного посилання до памятi при рiвнi привiлейованостi - 3.
NOT - Заперечення з доповненням до одного (порозрядне доповнення)
код операції |
команда |
число тактових циклів |
опис |
F6 /2 |
NOT r/m8 |
1/3 |
Змiна на протилежне значення кожного бiта в байтi r/m байтi r/m |
F7 /2 |
NOT r/m16 |
1/3 |
Змiна на протилежне значения кожного бiта в словi r/m |
F7 /2 |
NOT r/m32 |
1/3 |
Змiна на протилежне значения кожного бiта в подвiйному словi r/m |
Робота команди:
r/m < NOT r/m.
Опис:
Команда NOT інвертує операнд: кожна 1 стає 0, та навпаки.
Прапорцi, що змінюються:
Вiдсутнi.
Винятки захищеного режиму:
#GP(0), якщо призначенням є сегмент, що є недоступним для
запису; #GP(0) у випадку недопустимої виконуваної адреси операнда пам’ятi в сегментах CS, DS, ES, FS або GS; #SS(0) у випидку недопустимої адреси в сегментi SS; #PF(код збою) у випадку сторiнкового збою; #AC для невирiвняного посилання до пам’ятi при рiвнi привiлейованостi - 3.
Винятки режиму реальних адрес:
Переривання 13, якщо частина операнда лежить поза простором виконуваних адрес вiд 0 до 0FFFFH.
Винятки вiртуального режима 8086:
Тi ж винятки, що i для режиму реальних адрес: #PF (код збою) для сторiнкових збоїв . #AC для невирiвняного посилання до пам’ятi при рiвнi привiлейованостi, рiвному 3.
OR - Логiчне АБО
код операції |
команда |
число тактових циклів |
опис |
0C ib |
OR AL,imm8 |
1 |
Операцiя логiчного АБО безпо-середнього байта та AL безпосереднього байта та AL байтi r/m |
0D iw |
OR AX,imm16 |
1 |
Операцiя логiчного АБО безпо-середнього байта та AX |
0D id |
OR EAX,imm32 |
1 |
Операцiя логiчного АБО безпо-середнього подвiйного слова та EAX |
80 /1 ib |
OR r/m8,imm8 |
1/3 |
Операцiя логiчного АБО безпо-середнього байта та байта в r/m |
81 /1 iw |
OR r/m16,imm16 |
1/3 |
Операцiя логiчного АБО безпо-середнього слова та слова в r/m |
81 /1 id |
OR r/m32,imm32 |
1/3 |
Операцiя логiчного АБО безпо-середнього подвiйного та подвiйного в r/m |
83 /1 ib |
OR r/m16,imm8 |
1/3 |
Операцiя логiчного АБО безпо-середнього розширеного знаком байта та слова в r/m |
81 /1 ib |
OR r/m32,imm8 |
1/3 |
Операцiя логiчного АБО безпо-середнього розширеного знаком слова та подвiйного слова в r/m |
08 /r |
OR r/m8,r8 |
1/3 |
Операцiя логiчного АБО бай-тового регiстра та байта в r/m |
09 /r |
OR r/m16,r16 |
1/3 |
Операцiя логiчного АБО регiстра слова та слова в r/m |
09 /r |
OR r/m32,r32 |
1/3 |
Операцiя логiчного АБО регiстра подвiйного слова та подвiйного слова в r/m |
0A /r |
OR r8,r/m8 |
1/2 |
Операцiя логiчного АБО байта в r/m та байтового регiстра |
0B /r |
OR r16,r/m16 |
1/2 |
Операцiя логiчного АБО слова в r/m та регiстра слова |
0B /r |
OR r32,r/m32 |
1/2 |
Операцiя логiчного АБО под-вiйного слова в r/m та регiстра подвiйного слова |
Робота команди:
DEST < DEST OR SRC;
CF < 0;
OF < 0;
Опис:
Команда OR обчислює включаюче АБО для її двох операндiв та розмiщує результат в першому операндi. Кожний бiт результату рiвний 0, якщо обидва вiдповiдних бiта операнда рiвнi 0; в противному випадку бiт результату рiвний 1.
Змiнюванi прапорцi:
Прапорцi CF та OF очищюються ; прапорцi PF, SF та ZF встановлюються у вiдповiдностi до результату; флаг AF невизначений.
Винятки захищеного режиму:
#GP(0), якщо результат повинен мiститися в сегментi, для якого заборонений запис ; #GP(0) у випадку недопустимоі виконуваноі адреси операнда пам’ятi в сегментах CS, DS, ES, FS або GS; #SS(0) у випадку недопустимоі адреси в сегментi SS; #PF(код збою) у випадку сторiнкового збою; #AC для невирiвняного посилання до пам’ятi при рiвнi привiлейованостi, рiвному 3.
Винятки режиму реальних адрес:
Переривання 13, якщо частина операнда лежить поза простором виконуваних адрес вiд 0 до 0FFFFH.
Винятки вiртуального режиму 8086:
Тi ж винятки, що i для режиму реальних адрес: #PF (код збою) для сторiнкових збоїв ; #AC для невирiвняного посилання до пам’ятi при рiвнi привiлейованостi, рiвному 3.
XOR - Логiчне виключаюче АБО
код операції |
команда |
число тактових циклів |
опис |
34 ib |
XOR AL,imm8 |
1 |
XOR для безпосереднього байта та AL байтi r/m |
35 iw |
XOR AX,imm16 |
1 |
XOR для безпосереднього слова та AX байтi r/m |
35 id |
XOR EAX,imm32 |
1 |
XOR для безпосереднього подвiйного слова та EAX байтi r/m |
80 /6 ib |
XOR r/m8,imm8 |
1 |
XOR для безпосереднього байта та байта r/m |
81 /6 iw |
XOR r/m16,imm16 |
1/3 |
XOR для безпосереднього слова та слова r/m |
81 /6 id |
XOR r/m32,imm32 |
1/3 |
XOR для безпосереднього подвiйного слова та подвiйного слова r/m |
83 /6 ib |
XOR r/m16,imm8 |
1/3 |
XOR для безпосереднього розширеного знаком байта та слова r/m |
83 /6 ib |
XOR r/m32,imm8 |
1/3 |
XOR для безпосереднього розширеного знаком байта та подвiйного слова r/m |
30 /r |
XOR r/m8,r8 |
1/3 |
XOR для регiстра байта та байта r/m |
31 /r |
XOR r/m16,r16 |
1/3 |
XOR для регiстра слова та слова r/m |
31 /r |
XOR r/m32,r32 |
1/3 |
XOR для регiстра подвiйного слова та подвiйного слова r/m |
32 /r |
XOR r8,r/m8 |
1/2 |
XOR для регiстра байта та байта r/m |
33 /r |
XOR r16,r/m16 |
1/2 |
XOR для регiстра слова та слова r/m |
33 /r |
XOR r32,r/m32 |
1/2 |
XOR для регiстра подвiйного слова та подвiйного слова r/m |
Робота команди:
DEST < LeftSRC XOR RightSRC;
CF < 0;
OF < 0;
Опис:
Команда XOR обчислює виключаюче АБО (XOR) для двох заданих їй операндiв. кожний бiт результату рiвний 1, якщо вiдповiднi бiти операндiв рiзнi; в противному випадку цей бiт рiвний 0. Результат заміщує собою перший операнд.
Змiнюванi прапорцi:
Прапорцi OF та CF очищюються; прапорцi SF, ZF та PF встановлюються в вiдповiдностi до результату; прапорець AF невизначений.
Винятки захищеного режима:
#GP(0), якщо призначенням є сегмент, що є недоступним для запису; #GP(0) у випадку недопустимої виконуваної адреси операнда пам’яті в сегментах CS, DS, ES, FS або GS; #SS(0) у випадку недопустимоі адреси в сегментi SS; #PF (код збою) у випадку сторiнкового збою; #AC для невирiвняного посилання до пам’ятi при рiвнi привiлейованостi, рiвному 3.
Винятки режима реальних адрес:
Переривання 13, якщо частина операнда лежить поза простором виконуваних адрес вiд 0 до 0FFFFH.
Винятки вiртуального режима 8086:
Тi ж винятки, що i для режиму реальних адрес: #PF (код збою) для сторiнкових збоїв. #AC для невирiвняного посилання до пам’ятi при рiвнi привiлейованостi, рiвному 3.
