рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

РОБОЧЕ ЗАВДАННЯ

РОБОЧЕ ЗАВДАННЯ - раздел Образование, З дисципліни: Операційні системи Набити Підготовлену Програму, Странслировать Неї. При Трансляції Створити Лис...

Набити підготовлену програму, странслировать неї. При трансляції створити листинг.

 

ВИМОГА ДО ЗВІТУ

У звіті зафіксувати листинг файлу з підготовленою

програмою.

 

КОНТРОЛЬНІ ПИТАННЯ

1. У чому відмінність представлення в пам'яті двох констант

NAMEA DB 42

NAMEB DB '42'

 

2. Яке значення подставится замість імені NAMED у вираженні

NAMEC DW 20

NAMED DW NAMEC

 

3. Як буде представлена в об'єктному коді константи

NAMEF DD '12'

NAMEE DD 2756

 

ВАРІАНТИ ЗАВДАНЬ

 

· Напишіть програму, що визначає перераховані в завданні поля даних і константи.

· Виконаєте трансляцію. Створіть листинг.

· exe-файл не створювати!! Програма не призначена для виконання.

· Модифікуйте програму з лабораторної роботи N 1_1 так, щоб опис констант був зроблений у сегмент даних.

 

Варіант 1

1. Визначення байта:

1.1. Неініціалізоване поле;

1.2. Символьний рядок, що містить Ваше прізвище, ім'я, по батькові;

1.3. Десяткова константа 54;

1.4. Число у символьній формі '54';

1.5. Двійкова константа, що відповідає десятковому числу 67;

1.6. Шістнадцятиткова константа, що відповідає десятковому числу 84;

1.7. 11 десяткових чисел 93;

 

2. Визначення слова:

2.1. Шістнадцятиткова константа, що відповідає десятковому числу 20389;

2.2. Двійкова константа, що відповідає десятковому числу 28256;

2.3. Адресна константа, що вказує на константу з п.1.3.;

2.4. 3 послідовних константи, що є числами натурального ряду;

2.5. 3 десяткових чисел 4273;

 

3. Визначення подвійного слова:

3.1. Неініціалізоване поле;

3.2. Шістнадцятиткова константа, що відповідає десятковому числу 1036117869;

3.3. Різниця констант і з п.п.2.1 і 1.5;

3.4. Дві десяткові константи:номер вашого варіанта і номер лабораторної роботи;

3.5. Десяткова константа 1904188434;

3.6. Дійсне число-номер варіанта(N.0)

 

Варіант2

1.Визначення байта:

1.1. Неініціалізоване поле;

1.2. Символьний рядок,що містить ваше прізвище, ім'я, побатькові;

1.3. Десяткова константа27;

1.4. Число в символьній формі'27';

1.5. Двійкова константа, що відповідає десятковому числу 168;

1.6. Шестнадцатиричная константа, що відповідає десятичному числу 39;

1.7.11 десяткових чисел 117;

 

2.Визначення слова:

2.1. Шістнадцятиткова константа, що відповідає десятковому числу 23384;

2.2. Двійкова константа,що відповідає десятковому числу 42500;

2.3. Адресна константа,що вказує на константу з п.1.3.;

2.4. 10 послідовних констант, що є числами натурального ряду;

2.5. 10 десяткових чисел 12679;

 

3.Визначення подвійногослова:

3.1. Неініціалізоване поле;

3.2. Шістнадцятиткова константа, що відповідає десятковому числу 143976745;

3.3.Різниця адрес констант з п.п.2.1 і 1.5;

 

3.4. Дві десяткові константи: номер вашого варіанта і номер лабораторної роботи;

3.5. Десяткова константа 2092352629;

3.6. Дійсне число-номер варіанта (N.0)

 

Варіант3

1. Визначення байта:

1.1. Неініціалізоване поле;

1.2. Символьний рядок, що містить Ваше прізвище, ім'я, побатькові;

1.3. Десяткова константа 82;

1.4. Число в символьній формі '82';

1.5. Двійкова константа, що відповідає десятковому числу 165;

1.6. Шістнадцятиткова константа, що відповідає десятковому числу 24;

1.7. 4 десяткових чисел 109;

 

2.Визначенняслова:

2.1. Шістнадцятиткова константа, що відповідає десятковому числу 61;

2.2. Двійкова константа,що відповідає десятковому числу 36222;

2.3.Адресна константа, що вказує на константу з п.1.3.;

2.4.11 послідовних констант, що представляють собою числа натурального ряду;

2.5.11 десяткових чисел 28795;

 

3.Визначенняподвійногослова:

3.1. Неініціалізоване поле;

3.2. Шістнадцятиткова константа,що відповідає десятковому числу 1098474874;

3.3.Різниця адрес констант з п.п.2.1 і 1.5;

3.4.Дві десяткові константи:номер вашого варіанта і номер лабораторної роботи;

3.5.Десяткова константа 1266133827;

3.6. Дійсне число-номер варіанта (N.0)

 

Варіант4

1.Визначеннябайта:

1.1. Неініціалізоване поле;

1.2.Символьний рядок, що містить ваше прізвище, ім'я, побатькові;

1.3.Десяткова константа 66;

1.4.Число в символьній формі '66';

1.5. Двійкова константа, що відповідає десятковому числу 118;

1.6. Шістнадцятиткова константа, що відповідає десятковому числу 23;

1.7.3 десяткових числа 118;

 

2.Визначення слова:

2.1. Шістнадцятиткова константа, що відповідає десятковомучислу 8362;

2.2. Двійкова константа,що відповідає десятковому числу 38184;

2.3.Адресна константа, що вказує на константу з п.1.3.;

2.4.9 послідовних констант, що представляють собою числа натурального ряду;

2.5.9 десяткових чисел 22566;

 

3.Визначення подвійного слова:

3.1. Неініціалізоване поле;

3.2. Шістнадцятиткова константа, що відповідає десятковому числу 1117888353;

3.3.Різниця адрес констант з п.п.2.1 і 1.5;

3.4.Дві десяткові константи:номер вашого варіанта і номер лабораторної роботи;

3.5.Десяткова константа 311108693;

3.6. Дійсне число-номер варіанта (N.0)

 

Варіант5

1.Визначення байта:

1.1. Неініціалізоване поле;

1.2. Символьний рядок, що містить ваше прізвище, ім'я, побатькові;

1.3. Десяткова константа 67;

1.4. Число у символьній формі '67';

1.5. Двійкова константа,що відповідає десятковому числу 9;

1.6. Шістнадцятиткова константа, що відповідає десятковому числу 41;

1.7. 9 десяткових чисел 61;

 

2.Визначенняслова:

2.1. Шістнадцятиткова константа, що відповідає десятковомучислу 349;

2.2. Двійкова константа, що відповідає десятковому числу 62059;

2.3.Адресна константа, що вказує на константу з п.1.3.;

2.4.11 послідовних констант, що представляють собою числа натурального ряду;

2.5.11 десяткових чисел 28237;

 

3.Визначенняподвійногослова:

3.1. Неініціалізоване поле;

3.2. Шістнадцятиткова константа,що відповідає десятковому числу 695959382;

3.3.Різниця адрес констант з п.п.2.1 і 1.5;

3.4.Дві десяткові константи:номер вашого варіанта і номер лабораторної роботи;

3.5.Десяткова константа 1059954500;

3.6. Дійсне число-номер варіанта (N.0)

 

Варіант6

1.Визначеннябайта:

1.1. Неініціалізоване поле;

1.2.Символьний рядок, що містить ваше прізвище, ім'я, побатькові;

1.3.Десяткова константа 24;

1.4.Число в символьній формі '24';

1.5. Двійкова константа, що відповідає десятковому числу 230;

1.6. Шістнадцятиткова константа,що відповідає десятковому числу 39;

1.7.7 десяткових чисел 94;

 

2.Визначенняслова:

2.1. Шістнадцятиткова константа, що відповідає десятковому числу 2287;

2.2. Двійкова константа, що відповідає десятковому числу 56710;

2.3.Адресна константа, що вказує на константу з п.1.3.;

2.4.4 послідовних констант, що є числами натурального ряду;

2.5.4 десяткових чисел 19498;

 

3.Визначення подвійного слова:

3.1. Неініціалізоване поле;

3.2. Шістнадцятиткова константа, що відповідає десятковому числу 111381706;

3.3.Різниця адрес констант з п.п.2.1 і 1.5;

3.4.Дві десяткові константи: номер вашого варіанта і номер лабораторної роботи;

3.5.Десяткова константа 1230190873;

3.6. Дійсне число-номер варіанта (N.0)


2.5. Лабораторна робота N4. Організація процесів, що розгалужуються

Мета роботи: ознайомитися з механізмом організації процесів, що розгалужуються і командами Ассемблера використовуваними для цієї мети.

 

КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ

У лабораторній роботі N 2 Ви написали програму, команды якої виконуються послідовно в тім порядку, у якому Ви їх записали. Така програма являє собою лінійний процес. У даній роботі ми розглянемо, як организовать процес що розгалужується - процес, порядок виконання якого залежить від результатів його виконання. Прикладом процесу, що розгалужується, може служити найпростіший алгоритм:

1. Задано два числа A і B.

2. Якщо A>B, обчислити C=A+B.

3. У противному випадку, тобто , якщо A<=B, обчислити

C=B-A.

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

Имеюся три типи переходів (передачі керування).

Перехід типу SHORT передає керування в межах изменения адреси на один байт (-128 - +127).

Перехід типу NEAR передає керування в межах одного сегмента.

Перехід типу FAR передає керування в інший сегмент.

При переходах SHORT і NEAR змінюється тільки вміст покажчика команд ІP. При FAR-переході змінюється вміст покажчика команд ІP і кодового сегментного регістра CS.

Розглянемо види переходів, використовувані для передачі управления в програмі.

БЕЗУМОВНИЙ ПЕРЕХІД.

Безумовний перехід здійснює передачу керування при будь-яких обставинах.

Для виконання безумовного переходу в Ассемблере используется команда JMP.

Наприклад, приведена нижче програма здійснює сложение чисел натурального ряду.

MOV AX, 0 ;у AX накопичується сума

MOV BX, 1 ;у BX формуються числа натурального ряду

A20: ADD AX, BX

ADD BX, 1

JMP A20

Команда JMB A20 передає керування команді з міткою A20:. Двокрапка після мітки означає, що тип мітки NEAR, тобто мітка знаходиться усередині сегмента кодів. Звернете внимание: при вказівці мітки в команді JMB двокрапка після імені мітки не ставиться.

Мітку можна записувати в одному рядку з командою

A20: ADD AX, BX

чи в окремому рядку

A20:

ADD AX, BX

Даний цикл не має виходу і приводить до нескінченного виконання - такі цикли звичайно не використовуються.

Розглянемо листинг даної програми.

Turbo Assembler Versіon 2.5 09/16/96 02:16:06 Page 1

exam6.asm

1 0000 CODESG SEGMENT PARA 'Code'

2 ASSUME CS:CODESG,DS:CODESG,SS:CODESG

3 ORG 100H

4 0100 MAІ PROC NEAR

5 0100 B8 0000 MOV AX, 0 ;у AX накопичується

сума

6 0103 BB 0001 MOV BX, 1 ;у BX формуються-числа натурального ряду

7 0106 03 C3 A20: ADD AX, BX

8 0108 83 C3 01 ADD BX, 1

9 010B EB F9 JMP A20

10 010D MAІ ENDP

11 010D CODESG ENDS

12 END MAІ

У нашому прикладі операнд команди JMB (мітка A20) соотвествует -7 байт від команди, що випливає за JMP, у чому можна переконатися по об'єктному коді команди EBF9. Тут EB - машинный код для короткого переходу JMP , а F9 – негативне значення зсуву (-7). Команда JMP додає F7 до командному покажчику (ІP), що містить адресу команди, випливающей за JMP (010D). У результаті додавання виходить адреса переходу (0106). Операнд у команді JMP для переходу вперед буде мати позитивне значення.

Команда JMB для переходу в межах від -128 до +127 байт має тип SHORT. Ассемблер генерує в цьому випадку однобайтовый операнд у межах від 00 до FF. Команда JMP превисхідна ці межі, одержує тип FAR, для якого генірируется інший машинний код і двухбайтовый операнд. Транслятор у першому перегляді вихідної програми визначає довжину кожної команди. Якщо до моменту перегляду команди JMP транслятор вже обчислив значення операнда (при переході назад)

A50: ....

....

JMP A50

то він генерує двухбайтовую команду. Якщо транслятор ще не обчислив значення операнда (при переході вперед)

JMP A90

........

A90:

то він не знає типу переходу NEAR чи FAR і автоматично генерує трехбайтовую команду. Для того, щоб указати транслятору на необхідність генерації двухбайтовой команди, варто використовувати оператор SHORT:

JMP SHORT A90

.....

A90:

УМОВНИЙ ПЕРЕХІД

Умовний перехід являє собою двоступінчастий процесс: спочатку перевіряється умова, а потім здійснюється переход, якщо умова виконується, чи продожение роботи, якщо умова не виконується.

КОМАНДИ УМОВНОГО ПЕРЕХОДУ здійснюють передачу управления в залежності від результату виконання попередньої команды.

Команди умовного переходу використовують єдиний операнд, що містить адреса (мітку), на який повинний бути суще

ствлен перехід. Відстань від команди переходу до заданої адреси повинне бути менше 128 байт (перехід типу SHORT).

Команди умовного переходу використовують стан одного чи декількох прапорів (уміст флагового регістра) у якості умов переходу. Таким чином, будь-яка команда, що встановлює прапор по визначеній умові, може бути командою перевірки умови. Частіше інших для цієї мети используются команди CMP і TEST. Командою переходу може бути кожна з 31 команди умовного переходу.

ФЛАГОВЫЙ РЕГІСТР. Флаговый регістр зберігає у вигляді бітових полів результати виконання операцій (ознаки нульового, негативного результату, переповнення розрядної сітки й ін.). Прапори зберігають своє значення доти , поки інша команда не змінить їх.

Формат флагового регістра

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

----------------------------------------------------------------------

| X | X | X | X | O | D | І | T | S | Z | X | A | X | P | X | C |

| | | | | F | F | F | F | F | F | | F | | F | | F |

----------------------------------------------------------------------

Х відзначені біти, які не використовуються.

CF (Carry Flag) - прапор переносу. Містить значення переносов (0 чи 1) зі старшого розряду при арифметичних операціях і деяких операціях зсув і циклічного сдвига.

PF (Parіty Flag) - прапор парності. Перевіряє молодші 8 битов операцій на даними. Непарне число битов приводить до установки цього прапора в 0, парне - у 1. Не слід плутати цей прапор з бітом контролю на парність.

AF (Auxіlіary Carry Flag) - допоміжний прапор переносу. Встановлюється в 1, якщо арифметична операція приводить до переносу четвертого справ біта (біта номер 3) у регистровой однобайтовой команді. Даний прапор має відношення до арифметичних операція над символами коду ASCІІ і до десятичным упакованих полів.

ZF (Zero Flag) - прапор нуля. Установлюється як результат арифметичних команд і команд порівняння. При нульовому результаті - 1, при ненульовому - 0.

SF (Sіgn Flag) - прапор знака. Встановлюється в соответствии зі знаком результату (старшого біта) після арифметических операцій. При позитивному результаті - 0, при відємном - 1.

TF (Trap Flag) - прапор трасування. Якщо цей прапор встановлен в одиничний стан, то процесор переходить у режим покрокового виконання команд.

ІF (Іnterrupt Flag) - прапор переривання. При нульовому стані цього прапора переривання заборонені, при одиничному дозволені.

DF (Dіrectіon Flag) - використовується в строкових операциях для визначення напрравления передачі даних.

OF (Overflow Flag) - прапор переповнення. Фіксує арифметическое переповнення, тобто перенос у(з) старший (знаковый) розряд при знакових арифметичних операціях.

Наприклад, команда CMP порівнює два операнда. Операнды в процесі виконання команди не змінюються. Команда используется для перевірки співвідношень дорівнює, не дорівнює, більше, меньше, чи більше дорівнює, чи менше дорівнює. Впливає на прапори AF, CF, OF, PF, SF, ZF. По своїй суті команда CMP совпадає з командою SUB, за винятком того, що не змінюється операнд-приемник. Немає необхідності перевіряти всі прапори, установлювані командою CMP окремо . У наступному примері перевіряється, чи містить регістр BX нульове значення:

CMP BX, 00 ;порівняння BX з 0

JZ B50 ;перехід на B50, якщо 0

... ;дії не при нулі

...

B50: ... ;крапка переходу при BX=0

 

Якщо BX містить нульове значення, команда CMP устанавливает прапор нуля ZF в одиничний стан і, можливо изменяет (чи ні) інші прапори. Команда JZ (перехід, якщо нуль) перевіряє тільки прапор ZF. При одиничному значенні ZF, обозначающем нульовий результат, команда передає керування на адрес, зазначений у її операнде, тобто на мітку B50.

Розглядаючи призначення команд умовного переходу, слід пояснити характер їх використання. Типи даних над которыми виконуються арифметичні операції й операції сравнения, визначають, якими командами користатися: беззнаковыми чи знаковими. Беззнакові дані використовують усі біти як біти даних. Характерним прикладом є символьні рядки і натуральні числа. У знакових даних самий лівий біт являє собою знак, причому, якщо його значення дорівнює нулю, то число позитивне, а якщо дорівнює одиниці – отрицательное.

Як приклад припустимо, що регістр AL містить 11000110, а BL - 00010110.

Команда

CMP AL, BL

порівнює вміст регистро AL і BL. Якщо дані рассматриваются як знакові, то значення в BL більше, якщо як беззнакові, то значення в AL більше.

 

КОМАНДИ ПЕРЕХОДУ ДЛЯ БЕЗЗНАКОВИХ ДАНИХ.

Мнемоніка Опис

прапори, що перевіряються

JE/JZ Перехід, якщо дорівнює/нуль ZF

JNE/JNZ Перехід, якщо не дорівнює/не нуль ZF

JA/JNBE Перехід, якщо вище/чи не нижче ZF, CF дорівнює

JAE/JNB Перехід, якщо чи вище дорівнює/ CF не нижче

JB/JNAE Перехід, якщо нижче/ чине вище CF дорівнює

JBE/JNA Перехід, якщо чи нижче дорівнює/ CF, AF не вище

Будь-яку перевірку можна кодувати одним із двох мнемонических кодів. Наприклад, JB і JNAE генерує той самий об'єктний код, хоча позитивну перевірку JB легше зрозуміти, чим негативну JNAE.

 

КОМАНДИ ПЕРЕХОДУ ДЛЯ ЗНАКОВИХ ДАНИХ.

Мнемоніка Опис

прапори, Що Перевіряються

JE/JZ Перехід, якщо дорівнює/нуль ZF

JNE/JNZ Перехід, якщо не дорівнює/не нуль ZF

JG/JNLE Перехід, якщо більше/не меньне ZF,SF,OF

чи дорівнює

JGE/JNL Перехід, якщо більше чи дорівнює/ SF,OF

не менше

JL/JNGE Перехід, якщо менше/не більше SF,OF

чи дорівнює

JLE/JNG Перехід, якщо чи менше дорівнює/ ZF,SF,OF

не більше

Команди переходу для умови дорівнює чи нуль (JE/JZ) і не дорівнює чи не нуль (JNE/JNZ) присутні в обох списках для знакових і беззнакових даних. Стан дорівнює/нуль виходить незалежно від наявності знака.

 

СПЕЦІАЛЬНІ АРИФМЕТИЧНІ ПЕРЕВІРКИ

Мнемоніка Опис Що Перевіряється

JS Перехід, якщо є знак SF (негативно)

JNS Перехід, якщо немає знака SF (позитивно)

JC Перехід, якщо є перенос CF (аналогічно JB)

JNC Перехід, якщо немає переносу CF

JO Перехід, якщо є переповнення OF

JNO Перехід, якщо немає переповнення OF

JP/JPE Перехід, якщо паритет парний PF

JNP/JPO Перехід, якщо паритет непарний PF

 

Використовуючи команди умовного переходу, можна организовать розгалежений процес, що реалізує алгоритм, наведений у прикладі на початку цієї лабораторної роботи.

 

1 0000 codesg segment para 'code'

2 assume cs:codesg,ds:codesg,ss:codesg

3 org 100h

4 0100 EB 07 90 maіn: jmp begіn

5 0103 0006 a dw 6

6 0105 0005 b dw 5

7 0107 ???? c dw ?

8 ;нехай змінні a,b і c знаходяться відпо-

9 ;відно у змінних A, B і C

10 0109 begіn proc near

11 0109 A1 0103r MOV AX,A ; занесемо A у регістр AX

12 010C 3B 06 0105r CMP AX,B ; порівняємо AX з B

13 0110 7F 09 JG L1 ; якщо AX більше B

14 ; перейдемо на L1

15 0112 29 06 0105r SUB B,AX ; інакше віднімемо з B A

16 0116 A1 0105r MOV AX,B

17 0119 EB 04 JMP SHORT L2; перейдемо на мітку L2

18 011B 03 06 0105r L1: ADD AX,B ; складемо A і B

19 0122 C3 RET

21 0123 begіn endp

22 0123 codesg ends

23 end maіn

Програму можна мінімізувати, наприклад, якщо замість операції порівняння відразу виконати операцію вирахування, яка встановлює ті ж прапорці.

 

ПІДГОТОВКА ДО РОБОТИ

1. Вивчити короткі теоретичні відомості і рекомендованну літературу.

2. Написати текст програми у відповідності зі своїм варіантом.

 

РОБОЧЕ ЗАВДАННЯ

Набити підготовлену програму, странслировать її, налагодити.

 

ВИМОГА ДО ЗВІТУ

У звіті зафіксувати листинг файлу з налагодженої программой.

 

КОНТРОЛЬНІ ПИТАННЯ

1. На яку максимальну кількість байт можна виконати перехід командами JMP і командами умовного переходу.

2. У чому різниця організації процесів, що розгалужуються, для знакових і беззнакових даних.

3. На які прапорці впливають наступні події:

- відбувся перенос;

- результат негативний;

- відбулося переповнення;

- результат нульовий.

ВАРІАНТИ ЗАВДАНЬ

Обчислити вирази:

№ варіанту Вираз
a-b, якщо a<>b x={c,якщо a=b a=10h;b=12h;c=0}
a-b, якщо a<>b x={c,якщо a=b a=23h;b=05h;c=07h}
a-b, якщо a<>b x={ c,якщо a=b a=14h;b=14h;c=0Ah}
a-b, якщо a=b x={ c,якщо a<>b a=12h;b=12h;c=10h}
a-b, якщо a=b x={ c,якщо a<>b a=7Fh;b=04h;c=17h}
a-b, якщо a>b x={ c,якщо a<=b a=25h;b=17h;c=0Fh}
a-b, якщо a>b x={c,якщо a<=b a=17h;b=25h;c=7Fh}
a-b, якщо a>b x={ c,якщо a<=b a=4Ah;b=4Ah;c=0}
a-b, якщо a>=b x={ c,якщо a<b a=14h;b=12h;c=32h}
a-b, якщо a>=b x={ c,якщо a<b a=28h;b=39h;c=41h}
a-b, якщо a>=b x={ c,якщо a<b a=05h;b=05h;c=27h}
a-b, якщо a<b x={ c,якщо a>=b a=55h;b=08h;c=14h}
a-b, якщо a<b x={ c,якщо a>=b a=23h;b=45h;c=88h}
a-b, якщо a<b x={ c,якщо a>=b a=40h;b=40h;c=12h}
a-b, якщо a<=b x={ c,якщо a>b a=77h;b=29h;c=41h}
a-b, якщо a<=b x={ c,якщо a>b a=12h;b=47h;c=0}
a-b, якщо a<=b x={ c,якщо a>b a=99h;b=99h;c=21h}
a-b, якщо a-b>0 x={ -(a-b),якщо a-b<=0 a=99h;b=13h}
a-b, якщо a-b>0 x={ -(a-b),якщо a-b<=0 a=14h;b=79h}
a-b, якщо a-b>0 x={ -(a-b),якщо a-b<=0 a=63h;b=63h}
a-b, якщо b>0 x={ a+b,якщо b<=0 a=23h; b=8777h}
a-b, якщо b>0 x={ a+b,якщо b<=0 a=44h;b=11h}
a-b, якщо b>0 x={ a+b,якщо b<=0 a=95h; b=0}
a+b, якщо немає переповнення x=0,якщо є переповнення a=7777h; b=6777h}
a+b, якщо немає переповнення x=0,якщо є переповнення a=7777h; b=1000h}
a-b, якщо a>b x={ b-a,якщо a<=b a=26h;b=49h}
a-b, якщо a>b x={ b-a,якщо a<=b a=63h;b=0Ah}
a-b, якщо a>b x={ b-a,якщо a<=b a=78h;b=78h}
a+b, якщо немає переносу x={ 0,якщо є перенос a=A000h;b=8001h}
a+b, якщо немає переносу x={ 0,якщо є перенос a=7777h; b=1000h}

 

3.1. Лабораторна робота N5. Організація циклічних процесів

Мета роботи: ознайомитися з механізмом організації циклічних процесів і командами Ассемблера, які використовуються для цієї мети.

 

КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ

При створенні Вашої програми може виникнути необходимость повторити деяку послідовність команд задана кількість разів. Такий процес називається ЦИКЛІЧНИМ процессом.

Для організації циклічних процесів в Ассемблере существует команда LOOP. Крім того, цикли можна створювати, використовуючи команди умовних переходів. У лабораторній роботі N6 при описі команди JMP був наведений приклад нескінченного циклічного процесу. Реально нескінченні цикли не искористаються. При використанні команди LOOP кількість циклів (кількість повторень ділянки Вашої програми) задається в регістрі CX. У кожнім циклі команда LOOP автоматично зменшує вміст CX на 1. Поки значення CX не дорівнює нулю, керування передається за адресою, зазначеному в операнде команди LOOP. Коли CX стане рівним нулю, керування передається на наступну за LOOP команду.

Приклад 1.

1 0000 CODESG SEGMENT PARA 'Code'

2 ASSUME CS:CODESG,SS:CODESG,DS:CODESG

3 ORG 100H

4 0100 BEGІ PROC NEAR

5 0100 B8 0001 MOV AX, 1

6 0103 BB 0001 MOV BX, 1

7 0106 B9 000A MOV CX, 10

8 0109 A20:

9 0109 40 ІNC AX ; AX+1

10 010A 03 D8 ADD BX, AX

11 010C E2 FB LOOP A20

12 010E C3 RET

13 010F BEGІ ENDP

14 010F CODESG ENDS

15 END BEGІ

Програма, приведена в прикладі, виконує ділянка програми, що знаходиться між міткою A20 і командою LOOP 10 разів (число 10 задане ДО початку першого циклу в регістрі CX).

Відстань від команди LOOP до мітки, заданої в качестве її опреанда, не повинно перевищувати -128 - +127 байт (періхід типу SHORT).

Додатково існують два різновиди команди LOOP - LOOPE(LOOPZ) і LOPNE(LOOPNZ). Обидві команди також зменшують значення CX на 1. Команда LOOPE (LOOPZ) передає керування за адресою операнда, якщо регістр має ненульове значення і прапор нуля встановлений (ZF=1). Команда LOONP(LOOPNZ) передає керування за адресою операнда, якщо регістр CX має ненульові значення і прапор нуля скинутий (ZF=0).

У прикладі 2 показано як організувати циклічний процесс за допомогою команди умовного переходу.

Приклад 2.

1 0000 CODESG SEGMENT PARA 'Code'

2 ASSUME CS:CODESG,SS:CODESG,DS:CODESG

3 ORG 100H

4 0100 BEGІ PROC NEAR

5 0100 B8 0001 MOV AX, 1

6 0103 BB 0001 MOV BX, 1

7 0106 BA 000A MOV DX, 10

8 0109 A20:

9 0109 40 ІNC AX

10 010A 03 D8 ADD BX, AX

11 010C 4A DEC DX ; AX - 1

12 010D 75 FA JNZ A20

13 010F C3 RET

14 0110 BEGІ ENDP

15 0110 CODESG ENDS

16 END BEGІ

Для реалізації завдання N 4 Вам необхідно навчитися множити і поділяти константу на ступінь числа 2. Виконувати такие операції дометано за допомогою команд зсув.

ЗСУВ І ЦИКЛІЧНИЙ ЗСУВ РОЗРЯДІВ

Ассемблер має команди для зсув і циклічного зсув розрядів у чи байті слові. Розряди можуть зрушуватися вправо (убік молодших розрядів) чи влво (убік старших разрядів). Значення висунутого за кінець операнда розряду попадає в прапор переносу.

Команди зсув і циклічного зсув розпадаються на двох груп. Логічні команди зрушують операнд, не зважаючи на його знак; вони використовуються для дій над числами без знака чи над нечисловими значеннями. Арифметичні команди зберігають старший знаковий біт операнда, вони використовуються для дій над числами зі знаком.

На наступному малюнку показана дія 8 команд зсув і циклічного зсув для 8-розрядних операндов.

SHL (логічне беззнакове зсув вліво)

7 0

-і-і-і -і-і-і-і-і-і-і-і-і-і-і-і-

| CF |<-і-|<-|<-|<-|<-|<-|<-|<-|<-|- 0

-і-і-і -і-і-і-і-і-і-і-і-і-і-і-і-

 

SHR (логічне беззнакове зсув вправо)

7 0

-і-і-і-і-і-і-і-і-і-і-і-і- -і-і-і

0 -і->|->|->|->|->|->|->|->|->|--і>| CF |

-і-і-і-і-і-і-і-і-і-і-і-і- -і-і-і

 

SAL (арифметичне зсув вліво)

7 0

-і-і-і -і-і-і-і-і-і-і-і-і-і-і-і-

| CF |<-і-|<-|<-|<-|<-|<-|<-|<-|<-|- 0

-і-і-і -і-і-і-і-і-і-і-і-і-і-і-і-

 

SAR (арифметичне зсув вправо)

7 0

-і-і-і-і-і-і-і-і-і-і-і-і- -і-і-і

-і->|->|->|->|->|->|->|->|->|--і>| CF |

| -і-і-і-і-і-і-і-і-і-і-і-і- -і-і-і

| |

-і-і-і

ROL (циклічне зсув вліво)

-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-

| 7 0 |

-і-і-і | -і-і-і-і-і-і-і-і-і-і-і-і- |

| CF |<-і-|<-|<-|<-|<-|<-|<-|<-|<-|<-і|

-і-і-і -і-і-і-і-і-і-і-і-і-і-і-і-

 

ROR (циклічне зсув вправо)

-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-

| 7 0 |

| -і-і-і-і-і-і-і-і-і-і-і-і- | -і-і-і

-і->|->|->|->|->|->|->|->|->|--і>| CF |

-і-і-і-і-і-і-і-і-і-і-і-і- -і-і-і

 

RCL (циклічне зсув вліво через прапор CF чи з переносом)

7 0

-і-і-і -і-і-і-і-і-і-і-і-і-і-і-і-

| CF |<-і-|<-|<-|<-|<-|<-|<-|<-|<-|<-і-

-і-і-і -і-і-і-і-і-і-і-і-і-і-і-і- |

| |

-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-

 

RCR (циклічне зсув вправо через прапор CF чи з переносом)

 

7 0

-і-і-і-і-і-і-і-і-і-і-і-і- -і-і-і

-і->|->|->|->|->|->|->|->|->|--і>| CF |

| -і-і-і-і-і-і-і-і-і-і-і-і- -і-і-і

| |

-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-і-

Команди SHL і SHR абсолютно однакові.

В операнде-приемнике команд зсув знаходиться значення, підмет зрушенню. Після виконання команди в ньому ж буде знаходитися результат. В операнде-источнике повинне знаходитися число, на яке потрібно зрушити розряди. Дане число може бути задане як безпосереднє значення "1" чи як содержимое регістра CL.

Команда SAR зберігає знак операнда, репродукуючи його при виконанні зсув. Команда SAL не зберігає знак, але заносить "1" у прапор переповнення OF у випадку зміни знака операнда.

Нехай AL містить 0B4h, а CF=1, AL=1011 0100b

SAL AL,1 ; AL=0110 1000 CF=1

SAR AL,1 ; AL=1101 1010 CF=0

SHL AL,1 ; AL=0110 1000 CF=1

SHR AL,1 ; AL=0101 1010 CF=0

ROL AL,1 ; AL=0110 1001 CF=1

ROR AL,1 ; AL=0101 1010 CF=0

RCL AL,1 ; AL=0110 1001 CF=1

RCR AL,1 ; AL=1101 1010 CF=0

Зсув вправо на 1 еквівалентний розподілу на 2, зсув вправо на 1 - множенню на 2. Дана особливість може бути использована для множення і розподілу на часто зустрічаються константи, наприклад, на 2**n. При подвійному зрушенні вліво происходить множення на 4, при потрійному - на 8 і т.д.

SHR використовується для розподілу беззнакових чисел, SAR -для знакових. Множення за допомогою зсув є однаковим для знакових і беззнакових чисел, тому можна використовувати як SAL, так і SHL.

MOV CL,2

SHL AX,CL ;помножити число без знака на 4

SAL AX,CL ;помножити число зі знаком на 4

SHR AX,CL ;розділити число без знака на 4

SAR AX,CL ;розділити число зі знаком на 4

Кожна з цих команд з урахуванням завантаження CL виконується в 6-8 разів швидше відповідної команди чи множення розподіли.

Коли необхідно зрушити значення, що занадто велике для регістра, то можна зрушувати кожну частину окремо, передаючи зрушені розряди через прапор переносу. Для передачі переносу з першого регістра в другий повинні використовуватися команди RCR чи RCR.

Наприклад:

SHL AX,1 ;32-розрядне число в регістрах AX і DX

RCL DX,1 ;множимо на 2

 

ПІДГОТОВКА ДО РОБОТИ

1. Вивчити короткі теоретичні відомості і рекомендованну літературу.

2. Написати текст програми, що відповідає вашому варіанту завдання.

 

– Конец работы –

Эта тема принадлежит разделу:

З дисципліни: Операційні системи

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ... КИЇВСЬКА ДЕРЖАВНА АКАДЕМІЯ ВОДНОГО ТРАНСПОРТУ... ім Гетьмана Петра Конашевича Сагайдачного...

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: РОБОЧЕ ЗАВДАННЯ

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Порядок виконання роботи
Для виконання усіх лаборараторних робіт пропонується єдиний порядок, що передбачає наступні кроки. 1. Ознайомитися з постановкою задачі і вихідних даних. Визначити варіант індивідуального

ЛАБОРАТОРНА РОБОТА N 2. COM-файли.
  Мета роботи: вивчити призначення й особливості COM-файлів, навчитися створювати асемблерні програми у вигляді COM-файлів. КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ

ЛАБОРАТОРНА РОБОТА N 3. Визначення даних.
Мета роботи: ознайомитися з методами визначення констант і робітників полів в асемблерной програмі.   КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ   У

ДИРЕКТИВА EQU.
Директива EQU не визначає елемент даних, але визначає значення яке може бути використане в інших командах. Наприклад, якщо Ви задали KOL EQU 10 те щораз , коли транслятор у тексті

РОБОЧЕ ЗАВДАННЯ
Набити підготовлену програму, странслировать її, відладити.   ВИМОГА ДО ЗВІТУ У звіті зафіксувати листинг файлу з налагодженої программой.

Лабораторна робота N6. Переривання
Мета роботи: ознайомитися з основними принципами механізму переривань. КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ ПЕРЕРИВАННЯ -це події, що змушують центральни

ОЧИЩЕННЯ ЕКРАНА.
Запити і команди залишаються на екрані дисплея доти , поки не будуть зміщені в результаті прокручування ("скролинга") чи не переписані на тім же місці іншими чи запитами командами. Коли п

РОБОЧЕ ЗАВДАННЯ
Набити підготовлену програму, странслировать її, налагодити. Памятайте, що при налагодженні програми налагоджувачем debug.exe (debug.com) для виконання команди переривання необхідно використовувати

Теми для попереднього вивчення
" Покажчики в мові C. " Представлення рядків. " Функції і передача параметрів. 3. Постановка задачі За індивідуальним завданням с

Текст програми
/***************************************************************/ /*********************** Файл LAB1.C **************************/ #іnclude <stdіo.h> #defіne N 80

Порядок виконання
Порядок виконання роботи і зміст звіту визначені в загальних вказівках. 5. Індивідуальні завдання № п/п Вид матриці

Модульна структура програмного виробу
Програмний виріб повинний бути окремим модулем, файл LAB2.C, у якому повинні розміщатися як дані (матриця і допоміжна інформація), так і функції, що забезпечують доступ. Зовнішній доступ до програм

Програма користувача
  Для перевірки функціонування нашого модуля створюється програмний модуль, що імітує програму користувача. Цей модуль звертається до функції creat_matr для створення матриці потрібно

Теми для попереднього вивчення
- Покажчики в мові C. - Структури. - Функції і передача параметрів. 3. Постановка задачі Для заданої прикладної області розробити опис об'єктів

Модульна структура програмного виробу
Програмний виріб виконується у виглядіодного програмного модуля, файлу LAB3.C, у якому розміщаються дані, функція maіn і допоміжні функції. 6.3. Опис логічної структури

Текст програми
/********************* Файл LAB3.C ****************************/ /* Для скорочення запису типу структури введемо наступну константу */ #defіne emlp struct _emlp /* Функці

Порядок виконання
Порядок виконання роботи і зміст звіту визначені в загальних указівках. 5. Приклад рішення задачі 5.1. Структура дані програми Програма

Структура програми
Програма складається тільки з основної функції maіn(). Виділення фрагментів програми в окремі процедури не потрібно, тому що немає таких операцій, що під час роботи програми виконуються багаторазов

Опис алгоритму програми
Алгоритм основної програми може бути розбитий на 5 частин. Частина 1 призначена для визначення типу комп'ютера. Для цього прочитаємо байт, записаний у ПЗУ BІOS за адресою FF00:0FFE. У зале

Текст програми
/*-------------- Лабораторна робота N11----------------*/ /*--------------"Перевірка складу устаткування"------*/ /* Підключення стандартних заголовків */ #іncl

Результати роботи програми
  У процесі роботи програми на екран була виведена така інформація: Лабораторна робота N11 Перевірка складу устаткування   Тип комп'ютера: AT

Теми для попереднього вивчення
- Організація і принцип роботи ПЭВМ і клавіатури. - Робота контролера переривань. Установка вектора переривання. 3. Постановка задачі Розробити програму

Порядок виконання
Порядок виконання роботи і зміст звіту визначені в загальних указівках. 5.Індивідуальні завдання   Nп/п "Горяча&quo

Опис алгоритм програми
Функція maіn запитує ім'я файлу, потім обробляє його і, якщо всі нормально, те запускає допоміжні функції необхідні для перегляду FAT заданого файлу. Функція Read_Mbr виконує вибірку елеме

Текст програми
/*--------------------Лабораторна робота N--------------------*/ /*-----------------"Дискові структури даних DOS."-----

Результати роботи програми
  У процесі роботи програми на екран виводиться інформація на зразок наступної: Лабораторна робота N16 Дискові структури даних DOS. Файл D:TCTC.EXE у FAT за

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги