Лабораторная работа №3pzks.nmu.org.ua/ua/labs/asm_metod.pdf · 2018-09-03 ·...

31
Вступ Мова асемблера допомагає розкрити всі секрети апаратного й програмного забезпечення, з його допомогою можна одержати інформацію про те, як апаратна частина взаємодіє з операційною системою (ОС) і як прикладні програми звертаються до ОС. Більшість програмістів працюють з мовами високого рівня, де окремий оператор перетворюється в набір процесорних команд. Мова асемблера є мовою машинного рівня й кожна команда безпосередньо інтерпретується в команду процесора, що дає підставу вважати його мовою низького рівня. Компілятор з мови асемблера претворює вихідний текст програми в машинні команди. Компілятор асемблера може створювати листинг програми, з номерами рядків, адресами пам'яті, операторами, таблицею перехресних посилань символів і змінних, що використовують у програмі. Програмісти часто пишуть підпрограми мовою асемблера й викликають їх із програм, на язиках високого рівня. У деяких випадках такі підпрограми називають інтерфейсними підпрограмами (interface subroutines), оскільки вони забезпечують взаємодію з зовнішніми пристроями комп'ютера. У комп'ютерних іграх, наприклад, інтерфейсні підпрограми можуть забезпечувати прямий доступ до апаратних портів відеоадаптера і звукової плати для досягнення найвищого рівня продуктивності. Головним недоліком мови є більша тривалість розробки програми й трудомісткість її налагодження. Для кожного сімейства процесорів використовується своя мова асемблера зі своїм синтаксисом. Це є наслідком того, що мова асемблера дуже близька машинним командам і архітектурі процесора. Коли створювана програма повинна виконуватися на різних комп'ютерах, необхідно використовувати мову високого рівня.

Upload: others

Post on 21-Jan-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Лабораторная работа №3pzks.nmu.org.ua/ua/labs/asm_metod.pdf · 2018-09-03 · Де повинні знаходитися ділене та дільник при

Вступ

Мова асемблера допомагає розкрити всі секрети апаратного й програмногозабезпечення, з його допомогою можна одержати інформацію про те, як апаратна частинавзаємодіє з операційною системою (ОС) і як прикладні програми звертаються до ОС.Більшість програмістів працюють з мовами високого рівня, де окремий операторперетворюється в набір процесорних команд. Мова асемблера є мовою машинного рівня йкожна команда безпосередньо інтерпретується в команду процесора, що дає підставувважати його мовою низького рівня. Компілятор з мови асемблера претворює вихіднийтекст програми в машинні команди. Компілятор асемблера може створювати листингпрограми, з номерами рядків, адресами пам'яті, операторами, таблицею перехреснихпосилань символів і змінних, що використовують у програмі.

Програмісти часто пишуть підпрограми мовою асемблера й викликають їх ізпрограм, на язиках високого рівня. У деяких випадках такі підпрограми називаютьінтерфейсними підпрограмами (interface subroutines), оскільки вони забезпечуютьвзаємодію з зовнішніми пристроями комп'ютера. У комп'ютерних іграх, наприклад,інтерфейсні підпрограми можуть забезпечувати прямий доступ до апаратних портіввідеоадаптера і звукової плати для досягнення найвищого рівня продуктивності.

Головним недоліком мови є більша тривалість розробки програми й трудомісткістьїї налагодження. Для кожного сімейства процесорів використовується своя мова асемблеразі своїм синтаксисом. Це є наслідком того, що мова асемблера дуже близька машиннимкомандам і архітектурі процесора. Коли створювана програма повинна виконуватися нарізних комп'ютерах, необхідно використовувати мову високого рівня.

Page 2: Лабораторная работа №3pzks.nmu.org.ua/ua/labs/asm_metod.pdf · 2018-09-03 · Де повинні знаходитися ділене та дільник при

Лабораторна робота №1

Тема: Компіляція, компоновка та відлагодження програми на Асемблері.

Мета: Ознайомитися з етапами отримання виконавчого файлу на мові Асемблеру.Дослідити етапи компіляції, компоновки та відлагодження програми.

Порядок виконання роботи:1. За допомогою редактора «Блокнот» набрати запропоновану викладачем програму. 2. Використовуючи компілятор TASM.EXE, отримати обєктний файл з розширенням

*.obj.3. Використовуючи компоновщик TLINK.EXE отримати виконавчий файл з

розширенням *.exe.4. Запустити відладчик TD.EXE і виконати наступні дії: відкрити файл з розширенням

*.exe, переглянути зміст пам’яті, запустити програму в пошаговому режимі.5. Переглянути результати виконання програми на екрані.6. Оформити звіт.

Зміст звіту:1. Найменування та номер лабораторної роботи.2. Текст програми.3. Файл лістингу.4. Результат роботи програми (у вікні відладчика та на екрані).5. Виводи за отриманим результатом.

Загальні теоретичні відомостіРозглянемо основні строки заданої програми:

Директива MODEL SMALL говорить про те, що в даній програмі необхідновикористовувати не більше 64 Кбайт пам’яті для коду та не більше 64 Кбайт дляданих.

Директива STACK встановлює розмір простору для стеку 100h (256 байт). Директива DATA визначає початок сегменту даних, де зберігаються змінні. Тут

під ім’ям MESSAGE зберігається строка 'HELLO!'. DB – директива визначеннябайту, яка резервує пам’ять для одного або декількох 8-розрядних значень. Алеіснують інші директиви розміщення даних (DW- слово, DD-подвійне слово,DQ-вісім байтів, DT- десять байтів).

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

Перші дві команди коду пересилають адресу сегменту даних @data в регістрDS.

Команда MOV- це команда пересилки даних. Вона завжди супроводжуєтьсядвома операндами: перший показує куди пересилати данні, а другий – звідки.

Команда INT 21H з кодом 4Ch у регістрі АН закінчує програму та передаєуправління операційній системі.

В самому кінці програми знаходиться директива END, яка закінчує програму.Наступна за нею мітка START визначає точку входу в програму.

Запуск програми на мові асемблеру виконується в три етапи:

Page 3: Лабораторная работа №3pzks.nmu.org.ua/ua/labs/asm_metod.pdf · 2018-09-03 · Де повинні знаходитися ділене та дільник при

1. компіляція (tasm.exe, *.asm→*.obj)2. компоновка (tlink.exe, *.obj→*.map, *.exe-результат компоновки)3. відладчик (td.exe, *.exe)

Умови задачі:1. Ввести програму, ознайомитися з її структурою, призначенням директив компілятора, командами пересилок даних. 2. Виконати компіляцію та компоновку програми.3. Запустити виконавчий файл (*.exe) з командного рядка або за допомогою відладчика.4. Ознайомитися з вікнами та меню відладчика td.exe.

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

model smallstack 256data message DB 'HELLO!'codestart: mov ax, @data mov ds, ax mov ah, 9 ; output message mov dx, offset hello int 21h mov ah, 4Ch int 21h end start

Питання для підготовки до захисту лабораторної роботи:

1. Назвіть етапи отримання виконавчого файлу на мові Асемблера.2. Яке призначення мають директиви: MODEL SMALL, STACK, DATA, CODE, END.3. Як можна зарезервувати пам'ять для одного або декількох байтів.4. Яке призначення мають команди, що записані на початку програми:

mov ax, @datamov ds, ax

5. Яке призначення мають команди, що записані у кінці програми: mov ah, 4Chint 21h

6. За допомогою якої команди виконується пересилка даних.7. Назвіть призначення основних вікон відладчика.8. Покажіть, де знаходяться коди команд та дані програми.9. Як виконати програму у пошаговому режимі.10. Як можна загрузити програму, не виходячи з середовища відладчика.

Page 4: Лабораторная работа №3pzks.nmu.org.ua/ua/labs/asm_metod.pdf · 2018-09-03 · Де повинні знаходитися ділене та дільник при

Лабораторна робота №2

Тема: Програмування простих арифметичних операцій.

Мета: Навчитися складати та відлагоджувати програми на мові Асемблеру для простихарифметичних операцій.

Порядок виконання роботи:1. Створити програму згідно з завданням свого варіанту.2. Прорахувати самостійно контрольний приклад для відлагодження задачі.3. Отримати виконавчий файл з розширенням ЕХЕ.4. Завантажити відладчик та виконавчий файл.5. Внести данні контрольного прикладу в сегмент даних програми.6. Виконати программу в пошаговому режимі, контролюючи результати обчислень на

кожному кроці.7. Результати, які ви отримали по закінченню роботи програми повинні збігатися з

даними вашого контрольного прикладу. Якщо результати виявилися різними, топотрібно виправити помилки та виконати знову пункти 3-6.

8. Оформити звіт.

Зміст звіту:6. Найменування та номер лабораторної роботи.7. Завдання згідно з вашим варіантом.8. Контрольний приклад, розрахований самостійно.9. Текст програми.10. Результат роботи програми.11. Виводи за отриманим результатом.

Загальні теоретичні відомості

1. Додавання ADD приймач, передавач (складає два операнди розміром байт, слово, двійнеслово)

2. Віднімання SUB операнд_1, операнд_2 (віднімання між цілими значеннями)

3. Множення MUL співмножник_1 (перемноження двох цілих значень без врахування знаку )

4. Ділення DIV дільник (виконує операцію ділення двох двійкових без знаковихзначень)

Умови задачі та варіанти завдань: Скласти програму для обчислення простихарифметичних операцій згідно свого варіанту.

A+B=C; A-B=C; A*B=C; A/B=C.

Page 5: Лабораторная работа №3pzks.nmu.org.ua/ua/labs/asm_metod.pdf · 2018-09-03 · Де повинні знаходитися ділене та дільник при

1. A= 124; B= -15.2. A= 700; B= 2.3. A= -42; B= 3.4. A= 1235; B=10.5. A=23456; B=-3.6. A= -100; B= 33.7. A=8356; B= 9.8. A= 999; B= -33.9. A= -5040; B= 6.10. A= 987; B= 11.11. A= 7357; B=7.12. A= 398; B= -4.13. A= -5181; B= -11.14. A= 897; B=25.15. A= -4243; B=12.16. A= 88; B= 44.17. A= -56385; B= 7.18. A= 2245; B= 9.19. A= 83527; B= 5.20. A= -293; B= -27.21. A= 732; B=123.22. A= 931; B= 223.23. A= 6938; B= 30.24. A= 333; B= 31.25. A= -2547; B= -19.

Питання для підготовки до захисту лабораторної роботи:

1. Де повинні знаходитися операнди та результат при виконанні команд додавання ADD та віднімання SUB.

2. Де повинні знаходитися співмножники та результат при виконанні команд множення MUL та ІMUL.

3. Де повинні знаходитися ділене та дільник при виконанні команд DIV та ІDIV, а також результат та залишок.

4. Як можна внести данні контрольного прикладу в сегмент даних программи.5. Чим відрізняються відображення в пам’яті додатних та від’ємних даних.6. Яким чином розташовуються в пам’яті дані розміром слова або двійного слова.7. Які регістри використовують для зберігання даних, що мають розмір байта, слова

або двійного слова.8. Які команди використовують для розширення даних зі зберіганням знаку.

Page 6: Лабораторная работа №3pzks.nmu.org.ua/ua/labs/asm_metod.pdf · 2018-09-03 · Де повинні знаходитися ділене та дільник при

Лабораторна робота №3

Тема: Програмування арифметичних, логічних команд, та команд зсувів.

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

Порядок виконання роботи:1. Створити програму згідно з завданням свого варіанту.2. Прорахувати самостійно контрольний приклад для відлагодження задачі.3. Отримати виконавчий файл з розширенням ЕХЕ.4. Завантажити відладчик та виконавчий файл.5. Внести данні контрольного прикладу в сегмент даних програми.6. Виконати программу в пошаговому режимі, контролюючи результати обчислень на

кожному кроці.7. Результати, які ви отримали по закінченню роботи програми повинні збігатися з

даними вашого контрольного прикладу. Якщо результати виявилися різними, топотрібно виправити помилки та виконати знову пункти 3-6.

8. Оформити звіт.

Зміст звіту:1. Найменування та номер лабораторної роботи.2. Завдання згідно з вашим варіантом.3. Контрольний приклад, розрахований самостійно.4. Текст програми.5. Результат роботи програми.6. Виводи за отриманим результатом.

Загальні теоретичні відомості У цій роботі потрібно використовувати наступні команди:1. Команди двійкової арифметики:

Додавання ADC приймач, передавач (складає два операнди з умовою переносу з молодшогорозряду). INC операнд (збільшення значення операнду в пам’яті або регістрі на 1 ).

ВідніманняSBB операнд_1, операнд_2 (використовується для віднімання старших частокзначень многобайтних операндів з умовою можливого попереднього позичання привідніманні молодших частей значень цих операндів).

DEC операнд (зменшення значення операнду в пам’яті або в регістріна 1).

Множення IMUL співмножник_1 (перемноження двох цілих значень зі знаком)

Ділення IDIV дільник (виконує операцію ділення двох двійкових значень зізнаком )

2. Зміни знаку та логіки NEG передавач (зміна знаку)

Page 7: Лабораторная работа №3pzks.nmu.org.ua/ua/labs/asm_metod.pdf · 2018-09-03 · Де повинні знаходитися ділене та дільник при

NOT передавач (порозрядна інверсія). OR приймач, передавач (порозрядне логічне складання). AND приймач, передавач(порозрядне логічне множення). XOR приймач, передавач(порозрядне логічне складання по модулю 2-ки або нееквівалентність).

3. Арифметичного здвигу SAL операнд, кількість здвигів (здвиг операнда вліво) SAR операнд, кількість здвигів (здвиг операнда вправо)

4. Розширення знаку CWD (розширення слова зі знаком до двійного слова зі знаком) CBW (розширення байта до слова)

Умови задачі та варіанти завдань:

Скласти програму для обчислення лінійного обчислювального процесу за своїмваріантом.

1. W = A² + AB – B/22. Z = XY – X² + Y²3. Z = L² – M² + LM4. V = M² –NM + N²5. W = 25 + MR – M/R6. Q = G + S² – G/S7. G = X + Y²/X – 348. Z = (X + 56) ² – (Y–41) ²9. Z = (X²/Y – 35) – Y10.Y = (A + B + C) ²/(A + B)11. Q = (A + B) ² + (C + D) ²/(A –B)12.V = ((X + 1) ² – (Y + 1) ²)/213.E = M² + (K – L) ²14.X = (C + D)² / (C –D) + 1015.W = X² + Y² – (X + Y)/(X –Y)16.Z = (L + M)²/ L² + M²17.Q = (N + K) ² / (N –K) ² + 1618.S = 5 + (A + B)/(A –B) + A²19.S = 2N + N²/(N + 1)20.F = 10 + (A –2) ²/(A +5) ²21.M = K²/(K + L) –L²22.Z = F + (F + T) ²/T²23.F = (E² +K² + D²)/424.D = A²/2 + B²/4 – C²/225.Q = (X² + Y² + Z²)/(X – Y –Z)

Питання для підготовки до захисту лабораторної роботи:1. Чим відрізняється результат виконання команди ADC від команди ADD.2. Якими можуть бути операнди команд INC або DEC.3. Чим відрізняється результат виконання команди SBB від команди SUB.4. За допомогою якої команди можна перетворити додатне число на від’ємне.5. Яка логічна команда використовує один операнд.6. Яка з логічних команд дає нульовий результат при двох однакових операндах.

Page 8: Лабораторная работа №3pzks.nmu.org.ua/ua/labs/asm_metod.pdf · 2018-09-03 · Де повинні знаходитися ділене та дільник при

7. Яку команду здвигу використовують для множення чисел, кратних ступені двійки.8. Де розміщуються дані при виконанні команд CWD та CBW.

Page 9: Лабораторная работа №3pzks.nmu.org.ua/ua/labs/asm_metod.pdf · 2018-09-03 · Де повинні знаходитися ділене та дільник при

Лабораторна робота №4

Тема: Програмування команд умовних та безумовних переходів.

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

Порядок виконання роботи:1. Створити програму згідно з завданням свого варіанту.2. Прорахувати самостійно контрольний приклад для відлагодження задачі.3. Отримати виконавчий файл з розширенням ЕХЕ та COM.4. Завантажити відладчик та виконавчий файл.5. Внести данні контрольного прикладу в сегмент даних програми.6. Виконати программу в пошаговому режимі, контролюючи результати обчислень на

кожному кроці.7. Результати, які ви отримали по закінченню роботи програми повинні збігатися з

даними вашого контрольного прикладу. Якщо результати виявилися різними, топотрібно виправити помилки та виконати знову пункти 3-6.

8. Оформити звіт.

Зміст звіту:1. Найменування та номер лабораторної роботи.2. Завдання згідно з вашим варіантом.3. Контрольний приклад, розрахований самостійно.4. Текст програми.5. Результат роботи програми.6. Виводи за отриманим результатом

Загальні теоретичні відомості: Команди умовного переходу дуже зручно використовувати для перевірки різних

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

Команда Стан флагів Умова переходу

JA CF = 0 и ZF = 0 Якщо вище

JAE CF = 0 Якщо вище або дорівнює

JB CF = 1 Якщо нижче

JBE CF = 1 или ZF = 1 Якщо нижче або дорівнює

JC CF = 1 Якщо перенос

JE ZF = 1 Якщо дорівнює

JZ ZF = 1 Якщо 0

JG ZF = 0 та SF = OF Якщо більше

JGE SF = OF Якщо більше або дорівнює

JL SF <> OF Якщо менше

JLEZF=1 або SF <>

OFЯкщо менше або дорівнює

Page 10: Лабораторная работа №3pzks.nmu.org.ua/ua/labs/asm_metod.pdf · 2018-09-03 · Де повинні знаходитися ділене та дільник при

JNA CF = 1 та ZF = 1 Якщо не вище

JNAE CF = 1 Якщо не вище або дорівнює

JNB CF = 0 Якщо не нижче

JNBE CF=0 та ZF=0 Якщо не нижче або дорівнює

JNC CF = 0 Якщо немає переносу

JNE ZF = 0 Якщо не дорівнює

JNGZF = 1 або SF <>

OFЯкщо не більше

JNGE SF <> OF Якщо не більше або дорівнює

JNL SF = OF Якщо не менше

JNLE ZF=0 та SF=OF Якщо не менше або дорівнює

JNO OF=0 Якщо немає переповнення

JNP PF = 0Якщо кількість одиничних битів результату непарне (непарний

паритет)

JNS SF = 0Якщо знак плюс (знаковий (старший)

біт результату дорівнює 0)

JNZ ZF = 0 Якщо немає 0

JO OF = 1 Якщо переповнення

JP PF = 1Якщо кількість одиничних битів результату парне (парний

паритет)

JPE PF = 1 Теж саме, що й JP, тобто парний паритет

JPO PF = 0 Теж саме, що й JNP

JS SF = 1Якщо знак мінус (знаковий (старший) біт результату дорівнює

1)

Приклад складання програми у COM форматі:m-n | m<n+a

; L= m-a | m=n+a; a+n | m>n+a

model tiny .code org 100h start:;

xor ax,ax xor cx,cx; cx=n+a

mov cl,nadd cl,aadc ch,0

; dx=mxor dx,dxmov dl,m

cmp dx,cx

Page 11: Лабораторная работа №3pzks.nmu.org.ua/ua/labs/asm_metod.pdf · 2018-09-03 · Де повинні знаходитися ділене та дільник при

je gr_equjg gr

;если m<n+a -- ax=m-nmov al,dlsub al,n

jmp end_compute

gr_equ: ;если m=n+a -- ax=m-a

mov al,dlsub al,a

jmp end_compute

;если m<n+a -- ax=a+ngr: mov ax,dxend_compute: mov L,ax ;L=ax;

ret; .data m db 06h n db 05h a db 02h L dw ? end startСтруктура програми у COM – форматі

Умови задачі та варіанти завдань:Скласти програми для обчислення розгалуженого обчислювального процесу та

виконання їх у COM- та EXE- форматах за своїм варіантом.

1.ВякщоА

BякщоА

BякщоА

REZ

,0

,2

,1

А і В – байти, REZ – слово

2.YякщоXYX

YякщоXXY

YякщоXYX

V

,

,

,

X і Y – слова, V – подвійне слово

3.1,

1,1

1,1

BякщоABA

BякщоA

BякщоAA

D

А і В – слова, D – подвійне слово

4.5,5

5,0

5,

якщоYYX

якщоY

якщоYYX

Z

Page 12: Лабораторная работа №3pzks.nmu.org.ua/ua/labs/asm_metod.pdf · 2018-09-03 · Де повинні знаходитися ділене та дільник при

X і Y – байти, Z – подвійне слово

5.XякщоAAX

XякщоAXA

XякщоA

К

,

,

,0

A, X і K – байти

6.BякщоA

BякщоABA

BякщоABA

Z

1,0

1,1

1,1

А і В – байти, Z – слово

7.ANякщоMNA

ANякщоMAM

ANякщоMNM

L

,

,

,

M, А і N – байти, L – слово

8.BAякщоX

BAякщоX

BAякщоX

K

,1

,0

,1

X, А і B – байти, K – слово

9.BякщоA

BякщоA

BякщоABA

W

,1

,0

,7

А і В – слова, W – подвійне слово

10.YякщоXY

YякщоXX

YякщоXYX

F

,5

,1

,5

X, Y – байти, F – слово

11.01,

01,

01,

якщоXAX

якщоXA

якщоXBAX

Y

X, A і B– байти, Y – слово

12.0,10

0,0

0,1

BякщоABA

BякщоA

BякщоABA

Z

A і B– байти, Z – слово

Page 13: Лабораторная работа №3pzks.nmu.org.ua/ua/labs/asm_metod.pdf · 2018-09-03 · Де повинні знаходитися ділене та дільник при

13.CякщоBCB

CякщоB

CякщоBCB

Q

,7

,1

,

C і В – слова, Q – подвійне слово

14.LякщоKLK

LякщоKLK

LякщоKLK

M

,9

,

,

K і L– байти, M – слово

15.0,25

0,

0,6

YякщоXX

YякщоXYX

YякщоXYX

Z

X і Y – слова, Z – подвійне слово

16.NякщоDDN

DякщоN

NякщоDND

P

,

,8

,4

D і N– байти, P – слово

17.GякщоFFG

GякщоF

GякщоFFG

R

,

,0

,4

G і F – слова, R – подвійне слово

18.5,1

,0

,10

PNякщоM

PNякщоM

PNякщоM

H

P, M і N– байти, H – слово

19.DякщоADA

DякщоA

DякщоADA

E

,2

,0

,

A і D – слова, E – подвійне слово

20.TSякщоQ

TSякщоQSQ

TSякщоQTS

V

,5

,

,

Q, S і T– байти, V – слово

21.BякщоA

BякщоA

BякщоA

S

,10

,0

3,10

Page 14: Лабораторная работа №3pzks.nmu.org.ua/ua/labs/asm_metod.pdf · 2018-09-03 · Де повинні знаходитися ділене та дільник при

A і B– байти, S – слово

22.DякщоC

DякщоCDC

DякщоCDC

N

,0

1,1

,

C і D – слова, N – подвійне слово

23.YякщоXYX

YякщоX

YякщоXYX

U

,

,12

3,3

X і Y – слова, U – подвійне слово

24.QякщоWQW

QякщоW

QякщоWQW

С

,

2,0

,

W і Q– байти, C – слово

25.4,

,0

,

AякщоBAB

BякщоA

BякщоABA

X

A і B– байти, X – слово

Питання для підготовки до захисту лабораторної роботи:1. Які прапорці використовуються в командах умовних переходів.2. Як формується адреса команди, на яку здійснюється перехід.3. Скільки байтів займає команда безумовного переходу.4. Чи можливо програмно змінювати адресу переходу у командах безумовного

переходу.5. Скільки байтів займає команда умовного переходу.6. Назвіть команди умовних переходів, які перевіряють два або більше

прапорців.7. Чи можливо за допомогою команди умовного переходу пересуватися у будь-

яке місце сегменту, що має розмір 64Кб.8. Скільки (мінімально) команд умовних та безумовних переходів потрібно для

розгалуження програми на N гілок.

Page 15: Лабораторная работа №3pzks.nmu.org.ua/ua/labs/asm_metod.pdf · 2018-09-03 · Де повинні знаходитися ділене та дільник при

Лабораторна робота №5

Тема: програмування циклів та обробка одномірних масивів.

Мета: Навчитися складати та відлагоджувати програми на мові Асемблеру при роботі зодномірними масивами.

Порядок виконання роботи:1. Створити програму згідно з завданням свого варіанту.2. Прорахувати самостійно контрольний приклад для відлагодження задачі.3. Отримати виконавчий файл з розширенням ЕХЕ.4. Завантажити відладчик та виконавчий файл.5. Внести данні контрольного прикладу в сегмент даних програми.6. Виконати программу в пошаговому режимі, контролюючи результати обчислень на

кожному кроці.7. Результати, які ви отримали по закінченню роботи програми повинні збігатися з

даними вашого контрольного прикладу. Якщо результати виявилися різними, топотрібно виправити помилки та виконати знову пункти 3-6.

8. Оформити звіт.

Зміст звіту:1. Найменування та номер лабораторної роботи.2. Завдання згідно з вашим варіантом.3. Контрольний приклад, розрахований самостійно.4. Текст програми.5. Результат роботи програми.6. Виводи за отриманим результатом

Загальні теоретичні відомості: Масив-це структурований тип даних, який складається з елементів одного типу.При необхідності використання масиву в програмі його можна об’явити так:

mas dd 1, 2, 3, 4, 5; масив із 5 елементів, розмір яких 4 байта.

Використовуючи оператор повторення dup. Наприклад:

mas dw 5 dup(0) ; масив із 5 нульових елементів.

Використовуються директиви label і rept. Пара цих директив можеспростити опис великих масивів в пам’яті.Використовуючи декілька директив label, які записані одна за одній, можнаприсвоїти одній і тій же області пам’яті різні імена та різний тип, що іпоказано у наступному фрагменті:...n=0...mas_b label bytemas_w label wordrept 4

dw 0f1f0hendm

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

Page 16: Лабораторная работа №3pzks.nmu.org.ua/ua/labs/asm_metod.pdf · 2018-09-03 · Де повинні знаходитися ділене та дільник при

організувати ефективну роботу з масивами в пам’яті. При роботі з масивамивикористовують наступні режими адресації даних:

Відносна адресація — режим адресації, при використанніякого ефективний адрес формується з двох компонент:наприклад є масив

mas dw 0,1,2,3,4,5

Постійного (базового) — вказівкою прямої адреси масиву у вигляді імені ідентифікатору, визначаючого початок масиву;

Наприклад:

Lea bx, mas; Або

mov bx, offset mas...

mov ax, [bx]

Змінного (індексного) —вказівкою імені індексного регістру. Наприклад: mas dw 0,1,2,3,4,5...mov si,4;записати 3-й елемент масиву mas в регістр ax:

mov ax,mas[si]

Команди, які використовуються для організації циклів:

1. LOOP мітка (використовується для організації циклу з лічильником урегістрі СХ).

2. LOOPE мітка (використовується для організації циклу з лічильником урегістрі СХ, приймаючи до уваги значення флагу ZF).

Якщо ZF=0, це означає вихід з циклу; Якщо ZF=1, це означає перехід до початку циклу.

3. LOONE мітка (використовується для організації циклу з лічильником урегістрі СХ, приймаючи до уваги значення флагу ZF).

Якщо ZF=0, це означає перехід до початку циклу; Якщо ZF=1, це означає вихід з циклу.

Умови задачі та варіанти завдань:Обчислити суму елементів масиву, заданих за допомогою наступних виразів:

1.

5

1

)2(1i

iAS

2.

6

1

)10(1k

kBY

Page 17: Лабораторная работа №3pzks.nmu.org.ua/ua/labs/asm_metod.pdf · 2018-09-03 · Де повинні знаходитися ділене та дільник при

3.

5

1

)2

(i

iAZ

4.

4

1

)*2(m

mNK

5.

6

1

)*41(l

lAL

6.

5

1

)2(1a

aKF

7.

4

1

)2

(5k

kFS

8.

6

1

)*21(2i

iND

9.

5

1

)1(2i

iSK

10.

6

1

)1(*25k

kAS

11.

3

1

)2

(1i

iZM

12.

5

1

)2

5(2k

kBA

13.

5

1

)*21(l

lKB

14.

6

1

)1(*2a

aBZ

Page 18: Лабораторная работа №3pzks.nmu.org.ua/ua/labs/asm_metod.pdf · 2018-09-03 · Де повинні знаходитися ділене та дільник при

15.

5

1

)1(K

kCD

16.

3

1

)*2(3i

iPQ

17.

4

1

)5(k

kLT

18.

6

1

)2

(f

fDW

19.

5

1

)*4(i

iGP

20.

3

1

)*31(5K

kSG

21.

4

1

)2

6(i

iTR

22.

3

1

)*22(1b

bXY

23.

8

1

)8(n

nMR

24.

4

1

)4(i

iAH

25.

5

1

)2(1k

kFM

Питання для підготовки до захисту лабораторної роботи:1. Зміст якого регістру перевіряє команда LOOP.

Page 19: Лабораторная работа №3pzks.nmu.org.ua/ua/labs/asm_metod.pdf · 2018-09-03 · Де повинні знаходитися ділене та дільник при

2. Який прапорець перевіряють команди LOOPE та LOOPNE.3. Як розташовані у пам’яті дані одномірного масиву.4. Які оператори та директиви спрощують резервування масиву та введення даних у

масив.5. Які регістри використовують для програмного формування адреси елементу масиву.6. Як можна визначити сегмент програми, у якому розташований масив.7. Які команди та оператори можна використати для завантаження початкової адреси

масиву.

Page 20: Лабораторная работа №3pzks.nmu.org.ua/ua/labs/asm_metod.pdf · 2018-09-03 · Де повинні знаходитися ділене та дільник при

Лабораторна робота №6

Тема: Обробка масивів з використанням складних режимів адресації даних.

Мета: Навчитися складати та відлагоджувати програми на мові Асемблеру для реалізаціїциклічних процесів з використанням базово-індексних режимів адресації даних.

Порядок виконання роботи:1. Створити програму згідно з завданням свого варіанту.2. Прорахувати самостійно контрольний приклад для відлагодження задачі.3. Отримати виконавчий файл з розширенням ЕХЕ.4. Завантажити відладчик та виконавчий файл.5. Внести данні контрольного прикладу в сегмент даних програми.6. Виконати программу в пошаговому режимі, контролюючи результати обчислень на

кожному кроці.7. Результати, які ви отримали по закінченню роботи програми повинні збігатися з

даними вашого контрольного прикладу. Якщо результати виявилися різними, топотрібно виправити помилки та виконати знову пункти 3-6.

8. Оформити звіт.

Зміст звіту:1. Найменування та номер лабораторної роботи.2. Завдання згідно з вашим варіантом.3. Контрольний приклад, розрахований самостійно.4. Текст програми.5. Результат роботи програми.6. Виводи за отриманим результатом

Загальні теоретичні відомості:

Якщо послідовність однотипних елементів в пам’яті трактується як двомірниймасив, розкладений по строкам, то адреса елементу (i, j) розраховується заформулою:

(база +кількість елементів в рядку* розмір елементу* i+j* розмір елементу)

Тут i = 0...n–1 –номер рядку, а j = 0...m–1 номер стовпця.

База – початкова адреса масиву.

Наприклад, існує масив чисел (розміром в 1 байт) mas(i, j) з розмірністю 4 на 4 (i= 0...3, j = 0...3):

23 04 05 6705 06 07 9967 08 09 2387 09 00 08

В пам’яті елементи цього масиву будуть розміщені у наступній послідовності:

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Зміщенняелементів в масиві

23 04 05 67 05 06 07 99 67 08 09 23 87 09 00 08 Зміст елементівмасиву

Page 21: Лабораторная работа №3pzks.nmu.org.ua/ua/labs/asm_metod.pdf · 2018-09-03 · Де повинні знаходитися ділене та дільник при

23 04 05 67 05 06 07 99 67 08 09 23 87 09 00 08

Відносна базово-індексна адресація —режим адресації, при якому ефективний адрес формується максимум з 3-х компонентів:

постійного (необов’язковий компонент), може виступати пряма адреса масиву в виді імені ідентифікатору, означаючого початок масиву, або його значення;

змінного (базового) — вказівкою імені базового регістру;

змінного (індексного) — вказівкою імені індексного регістру.

Умови задачі та варіанти завдань:

1. Обчислити суму і кількість додатних елементів кожного стовпцю матриці.Результат вивести у вигляді двох масивів:

Суми елементів; Кількості елементів.

2. Обчислити суму і кількість додатних елементів кожної строки матриці. Результатвивести у вигляді двомірного масиву.

СуммаКількість

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

4. Обчислити суму і кількість додатних елементів матриці, які знаходяться підголовною діагоналлю.

5. Упорядити за зменшенням елементи кожного стовпцю матриці.6. Замінити від’ємні елементи матриці на нулі і підрахувати їх кількість.7. Замінити від’ємні елементи матриці на нулі, а додатні - на одиниці.8. Знайти у кожній строчці двомірного масиву найбільший та найменший елементи

та записати їх на місце першого і останнього елементу строки. Інші елементи залишити намісці.

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

10. У двомірному масиві знайти для кожної строки кількість елементів, кратних 5 інайбільший з цих елементів.

11. Упорядити за зменшенням елементи кожної строки матриці.12. З додатних елементів матриці М сформувати матрицю К, в якій додатні елементи

матриці М будуть головною діагоналлю матриці К, а решту заповнити нулями.13. Знайти у кожній строчці найбільший елемент та записати його на місце елементу

головної діагоналі.14. Знайти найбільший і найменший елементи матриці та переставити їх місцями.15. У двомірному масиві обчислити середнє арифметичне значення елементів у

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

кожного стовпцю та записати його у останній строчці (додавши його).

Page 22: Лабораторная работа №3pzks.nmu.org.ua/ua/labs/asm_metod.pdf · 2018-09-03 · Де повинні знаходитися ділене та дільник при

17. Транспонувати матрицю і обчислити кількість елементів, входять до діапазону [-10…10].

18. Упорядити за збільшенням елементи кожної строки матриці.19. У двомірному масиві знайти для кожної строки кількість елементів, кратних 2 та

обчислити найменший з цих елементів.20. Замінити елементи матриці, кратні 2 на 0. А елементи, які кратні 3 на 1. Інші

елементи залишити без змін.21. Підрахувати суму усіх елементів матриці та замінити сумою елементи головної

діагоналі.22. У двомірному масиві для кожного стовпцю знайти елементи, кратні 3 та до

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

головною діагоналлю та на ній.24. Упорядити за збільшенням елементи кожного стовпцю матриці.25. У двомірному масиві обчислити кількість елементів, які входять до діапазону [-

5…5] та вивести їх суму.

Питання для підготовки до захисту лабораторної роботи:1. Як розташовані у пам’яті дані багатомірного масиву.2. Які регістри використовують для програмного формування адреси елементу масиву.3. Як можна визначити сегмент програми, у якому розташований масив.4. Які алгоритми можна використати для сортування масиву.5. Які регістри потрібно порівнювати, щоб визначити елементи головної діагоналі.6. Яку команду можна використати, щоб визначити кратність елемента значенню N.7. Як визначити найбільший та найменший елементи масиву.8. За якою формулою розраховується адреса елементу багатомірного масиву.

Page 23: Лабораторная работа №3pzks.nmu.org.ua/ua/labs/asm_metod.pdf · 2018-09-03 · Де повинні знаходитися ділене та дільник при

Лабораторна робота №7

Тема: Програмування ланцюгових команд та арифметичних операцій над двійково-десятичними числами..

Мета: Навчитися працювати з ланцюговими командами та виконувати арифметичніоперації над двійково-десятичними числами.

Порядок виконання роботи:1. Створити програму згідно з завданням свого варіанту.2. Прорахувати самостійно контрольний приклад для відлагодження задачі.3. Отримати виконавчий файл з розширенням ЕХЕ.4. Завантажити відладчик та виконавчий файл.5. Внести данні контрольного прикладу в сегмент даних програми.6. Виконати программу в пошаговому режимі, контролюючи результати обчислень

на кожному кроці.7. Результати, які ви отримали по закінченню роботи програми повинні збігатися з

даними вашого контрольного прикладу. Якщо результати виявилися різними, топотрібно виправити помилки та виконати знову пункти 3-6.

8. Оформити звіт.

Зміст звіту:1. Найменування та номер лабораторної роботи.2. Завдання згідно з вашим варіантом.3. Контрольний приклад, розрахований самостійно.4. Текст програми.5. Результат роботи програми.6. Виводи за отриманим результатом

Загальні теоретичні відомості: Ланцюгові команди дозволяють виконувати дії над блоками пам’яті, які мають

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

автоматичний перехід до наступного елементу ланцюга.Команди:

Пересилка ланцюга:

movs адреса_приймача, адреса_передавача – команда пересилає один елемент рядка, на який вказує регістр SI, в інший рядок за адресою, на яку вказує регістр DImovsb команда аналогічна команді movs і працює з байтами. movsw команда аналогічна команді movs і працює зі словами.movsd команда аналогічна команді movs і працює з подвійними словами.

Порівняння ланцюга:

cmps адреса_приймача, адреса_передавача – команда порівнює один елемент рядка, на який вказує регістр SI, з елементом рядка, на який вказує регістр DI.cmpsb команда аналогічна команді cmps і працює з байтамиcmpsw команда аналогічна команді cmps і працює зі словамиcmpsd команда аналогічна команді cmps і працює з подвійними словами.

Page 24: Лабораторная работа №3pzks.nmu.org.ua/ua/labs/asm_metod.pdf · 2018-09-03 · Де повинні знаходитися ділене та дільник при

Сканування ланцюга:

scas адреса_приймача – команда пошуку елементів у рядку.

Команда порівнює значення регістру ЕАХ(АХ/AL) з елементом, на який вказує регістр DI.scasb команда аналогічна команді scas і працює з байтами.scasw команда аналогічна команді scas і працює зі словами.scasd команда аналогічна команді scas і працює з подвійними словами.

Загрузла елементу з ланцюга:

lods адреса_передавача – завантаження елемента рядка, на який вказує регістр SI, у регістр ЕАХ(АХ/AL).lodsb команда аналогічна команді lods і працює з байтами.lodsw команда аналогічна команді lods і працює зі словами.lodsd команда аналогічна команді lods і працює з подвійними словами.

Збереження елементу в ланцюгі:

stos адреса_приймача – завантаження у елемент рядка з регістра ЕАХ(АХ/AL).в рядок, на який вказує регістр DI.stosb команда аналогічна команді stos і працює з байтами.stosw команда аналогічна команді stos і працює зі словами.stosd команда аналогічна команді stos і працює з подвійними словами.

Отримання елементів ланцюга з портів вводу-виводу:

ins адреса_приймача,номер_порта – завантаження елемента з порту вводу-виводу у рядок, на який вказує регістр DI.insb команда аналогічна команді ins і працює з байтами.insw команда аналогічна команді ins і працює зі словами.insd команда аналогічна команді ins і працює з подвійними словами.

Вивод елементів ланцюга в порт вводу-виводу:

outs номер_порта, адреса_передавача – передача до порту вводу-виводу елемента рядка, на який вказує регістр SI.outs b команда аналогічна команді outs s і працює з байтами.outs w команда аналогічна команді outs і працює зі словами.outs d команда аналогічна команді outs і працює з подвійними словами.

Контроль прапорця DF:

CLD очищення прапорця DF, елементи ланцюгів обробляються за збільшенням адресів.

STD встановлення прапорця DF , елементи ланцюгів обробляються за зменшенням адресів.

Повтор ланцюгових операцій:

rep –безумовний повтор ланцюгових команд, що слідують за префіксом rep заналізом регістра СХ . repe, repz – умовний повтор ланцюгових команд, якщо (СХ<>0 та ZF<>0), товиконується повтор ланцюгової команди.

Page 25: Лабораторная работа №3pzks.nmu.org.ua/ua/labs/asm_metod.pdf · 2018-09-03 · Де повинні знаходитися ділене та дільник при

repne, repnz – умовний повтор ланцюгових команд, якщо (СХ<>0 та ZF=0), то виконується повтор ланцюгової команди.

Умови задачі та варіанти завдань:Взяти будь-яку вихідну строку та визначити в ній:А) Кількість цифр.Б) Кількість літер англійського алфавіту.В) Кількість двозначних чисел.Г) Перше тризначне число.Д) Останнє двозначне число

* Е) Символи 0 та 1 вивести в іншу строку та представити як двоічне число.(тобто „011” = 3 )

*Ж) перші два символи шістнадцятирічних цифр (A, B, C, D, E, F) представити як шістнадцятирічне число. (тобто „BF” = 191)

Зі строк ‘ABCDE’ та ‘12345’ скласти строку:1) ‘AB – 45 – ECD! ’2) ‘CD12*543=?’3) ‘E1,D2, C3,B4, A5 ’4) ’345+DC+BA’5) ‘A1-B2+E5-D4’6) ’EDC(345)2A1B’7) ‘A1*B2*C3*D4*E5’8) ’BCD_E12_345_’9) ’AB!BC!CD!DE!’10) ‘54+43+32+21’11) ‘E5=D4=C3=B2=?’12) ’DE45-321-A1B2’13) ‘A5B4C3!!!’14) ‘***432(C1D2)’15) ‘ABCDE*5*4*3*2*1’16) ‘-5+4-3+2-1=BC?’17) ‘B5/C4/D3/???’

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

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

або пошуку елементу рядка.4. Яку розмірність можуть мати елементи рядків.5. Як виконати безумовний повтор ланцюгових команд.6. Який прапорець перевіряється при умовному повторі ланцюгових команд.7. Яку команду можна використати для заповнення рядка однаковими значеннями.8. Яку команду можна використати для знаходження символу (наприклад, крапки) у

рядку.9. Від чого залежить збільшення або зменшення адресів при обробці рядка.

Page 26: Лабораторная работа №3pzks.nmu.org.ua/ua/labs/asm_metod.pdf · 2018-09-03 · Де повинні знаходитися ділене та дільник при

Лабораторна робота №8

Тема: Програмування системних засобів введення та виведення.

Мета: Навчитися складати програми за допомогою системних засобів введення тавиведення.

Порядок виконання роботи:1. Створити програму згідно з завданням свого варіанту використовуючи системні

засоби введення та виведення.2. Прорахувати самостійно контрольний приклад для відлагодження задачі.3. Отримати виконавчий файл з розширенням ЕХЕ.4. Запустити виконавчий файл.5. Результати, які ви отримали по закінченню роботи програми повинні збігатися з

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

6. Оформити звіт.

Зміст звіту:1. Найменування та номер лабораторної роботи.2. Завдання згідно з вашим варіантом.3. Контрольний приклад, розрахований самостійно.4. Текст програми.5. Результат роботи програми.6. Виводи за отриманим результатом

Загальні теоретичні відомості: Системні засоби введення даних із клавіатури.Операційна система надає кілька способів введення даних із клавіатури:

звернення до клавіатури, як до файлу, за допомогою переривання DOS INT 21h з функцією 3Fh;

використання групи функцій DOS INT 21h з діапазону l...Ch, що забезпечують посимвольне введення із клавіатури в різних режимах;

посимвольне введення шляхом звернення безпосередньо до драйвера BIOS за допомогою переривання INT 16h.

Введення із клавіатури засобами файлової системи (INT 21h, функція 3Fh) здійснюється точно так само, як і читання з файлу. Звичайно використається визначений дескриптор 0, закріплений за стандартним пристроєм введення (за замовчуванням за клавіатурою). Число символів, що вводять, указується в регістрі СХ, однак введення завершується лише після того, як натиснута клавіша <Enter>, незалежно від того, чи уведене фактично менше символів, чим було заплановано, або більше (останнє, природно, може трапитися лише при неправильних діях). Тому при уведенні рядків із клавіатури немає необхідності заздалегідь задавати їхню довжину, досить завантажити в регістр СХ максимальну довжину рядка, наприклад, 80 байт. У кожному разі в регістрі АХ повертається число реальне уведених байтів, при цьому враховуються також і два байти (0Ah й 0Dh), що надходять у вхідний буфер при натисканні клавіші < Enter>.

Другий спосіб одержання даних із клавіатури в програму, за допомогою функцій DOS з діапазону l...Ch, трохи більше громіздкий, але забезпечує більше різноманітні можливості. Для введення із клавіатури можна використати 7 функцій переривання INT 21h:

Page 27: Лабораторная работа №3pzks.nmu.org.ua/ua/labs/asm_metod.pdf · 2018-09-03 · Де повинні знаходитися ділене та дільник при

01h - введення символу з луною;06h - пряме введення - виведення через консоль;07h - введення символу без луни й без відпрацьовування Ctrl/З;08h - введення символу без луни й з відпрацьовуванням Ctrl/З;0Ah - буферізоване введення рядка з луною;0Bh - перевірка стану стандартного пристрою введення;0Сh - скидання вхідного буфера й введення.Робота із клавіатурою на рівні BIOS (INT 16h) дозволяє зчитувати двухбайтові

коди, що надходять у кільцевий буфер введення (код ASCII + скен-код) і аналізувати слово прапорів клавіатури (натискання клавіш <Shift>, <Caps Lock> й ін.). Для введення використаються наступні функції переривання INT 16h:

00h - читання двухбайтового коду із вхідного буфера;0lh - читання стану клавіатури й двухбайтового коду без витягу його з буфера;02h - читання прапорів клавіатури.

Виведення текстової інформації на екран терміналаВідеосистема комп'ютера містить у собі ряд апаратних і програмних засобів, що

дозволяють одержувати на екрані термінала текстові й графічні зображення.DOS надає наступні можливості виведення текстової інформації на екран:- звертання до екрана як

до файлу, за допомогою переривання DOS Int 21 h з функцією 40h;

- використання групи функцій DOS з діапазону l...Ch (переривання Int 21h), що реалізують посимвольне виведення, а також виведення рядків.Виведення на екран засобами файлової системи (Int 21h, функція 40h) здійснюється точно так само, як і запис у файл. Використаються визначені дескриптори 1 або 2, закріплені за стандартними пристроями виведення й помилки, відповідно (за замовчуванням - екраном).Число виведених символів указується в регістрі СХ, а адреса виведеного рядка - у регістрі DX. Коди 08h (вибій), 0Ah (переклад рядка), 0Dh (повернення каретки) і деякі інші розглядаються, як керуючі й приводять до виконання відповідних їм дій. Число виведених символів передається через регістр СХ, однак, якщо в рядку зустрічається <Ctrl>/Z (код 26), виведення припиняється.

Другий спосіб виведення на екран текстової інформації реалізується за допомогою трьох функцій переривання Int 21 h:

02h - виведення символу;06h - прямий ввід-виведення;09h - виведення рядка.Логічна організація текстового відеобуфераКожен символ займає в буфері поле із двох байтів (мал. 1.). Молодші (парні) байти

всіх полів приділяються під коди ASCII відображуваних символів, старші (непарні) байти - під їхні атрибути. Двухбайтові коди символів записуються у відеобуфер у тім порядку, у якому вони повинні з'являтися на екрані: перші 80 двухбайтових полів відповідають першому рядку екрана, других 80 полів - другому рядку й т.д. Таким чином, перехід на наступний рядок визначається не керуючими кодами повернення каретки й перекладу рядка, а розміщенням кодів символів в іншому місці буфера, у полях, що відповідають наступному рядку.

Page 28: Лабораторная работа №3pzks.nmu.org.ua/ua/labs/asm_metod.pdf · 2018-09-03 · Де повинні знаходитися ділене та дільник при

Атрибут символу визначає кольори символу й тла під ним, а також деякі додаткові характеристики зображення на екрані. Структура байта атрибутів наведена на мал.2.

У біти 0...2 байта атрибутів записується код кольорів символу, а біт 3 при вихідномунастроюванні відеоадаптера, що діє за замовчуванням, управляє яскравістю символу. Таким чином, кожен символ незалежно від інших може приймати кожної з 16 можливих квітів. Відповідність кодів, записуваних у байті атрибута, конкретним квітам становить палітру відеосистеми. Палітра встановлюється програмно; за замовчуванням діє призначення кодів, наведене в табл. 4.

Виведення на екран засобами BIOSРозглянемо тепер засоби виведення на екран, реалізовані драйвером BIOS,

програмне звертання до якого здійснюється за допомогою переривання Int 10h. При роботів текстовому режимі звичайно використаються наступні функції драйвера:

02h - установити позицію курсору;03h - одержати позицію курсору;05h - установити відеосторінку;06h - ініціювати або прокрутити нагору вікно;07h - ініціювати або прокрутити вниз вікно;08h - прочитати символ й атрибут у позиції курсору;09h - вивести символ й атрибут у позицію курсору;0Аh - вивести символ у позицію курсору;0Eh - вивести символ у режимі телетайпа;13h - вивести рядок у режимі телетайпа.

Умови задачі та варіанти завдань:

1. Обчислити суму цифр, які зустрічаються у даному рядку.2. Обчислити різницю першої та останньої цифр у даному рядку.3. Обчислити суму цифр від 1 до 5, які зустрічаються у даному рядку.4. Обчислити різницю двох перших цифр, які зустрічаються у даному рядку.

Page 29: Лабораторная работа №3pzks.nmu.org.ua/ua/labs/asm_metod.pdf · 2018-09-03 · Де повинні знаходитися ділене та дільник при

5. Обчислити суму цифр, які починаються з 2, але не перевищують 29 у даному рядку.6. Знайти добуток 3-х перших цифр у даному рядку.7. Знайти добуток 2-х перших цифр рядку на останню цифру. 8. Знайти добуток цифр від 1 до 5, які зустрічаються у даному рядку.9. Знайти залишок від ділення 2-х перших цифр на останню у даному рядку.10. Виділити в рядку нулі та одиниці, та представити їх у вигляді двоічного числа. 11. Знайти залишок від ділення 2-х останніх цифр у даному рядку на першу.12. Знайти добуток всіх цифр рядку, які не перевищують 15.13. Порахувати в рядку кількість цифр, які не перевищують 10.14. Порахувати кількість нулів то одиниць у даному рядку.15. Знайти добуток цифр від 5 до 10, які зустрічаються у даному рядку.16. Порахувати кількість цифр в рядку, які діляться без залишку на 5.17. Порахувати в рядку кількість літер англійського алфавіту.18. Знайти в рядку перше тризначне число.19. Знайти в рядку останнє двозначне число.20. Перші два символи шістнадцятирічних цифр (A, B, C, D, E, F) у даному рядку

представити як шістнадцятирічне число, тобто „BF” = 191.

Питання для підготовки до захисту лабораторної роботи:

1. Які способи введення даних із клавіатури надає операційна система за допомогою системних функцій DOS

2. Які функції для виведення тексту надає DOS?3. Який пристрій використовують всі функції DOS виводу на екран ? Для чого він потрібен?4. Що таке BIOS?5. Через яке переривання викликаються всі функції відеосервісу BIOS?6. За допомогою яких функцій можливо встановити відеорежим та SuperVGA-відеорежим?7.Які Ви ще знаєте корисні функції для виведення текстів на екран?8. Для чого потрібен пристрій STDIN?9. Як Ви вважаєте, DOS або BIOS надає більше можливостей для прочитування даних і управління клавіатурою ,а для виводу на екран?

Page 30: Лабораторная работа №3pzks.nmu.org.ua/ua/labs/asm_metod.pdf · 2018-09-03 · Де повинні знаходитися ділене та дільник при

Лабораторна робота №9

Тема: Програмування макрозасобів мови Асемблера. Програмування процедур.

Мета: Навчитися складати програми за допомогою макрозасобів мови Асемблер тапроцедур.

Порядок виконання роботи:

1. Створити програму згідно з завданням свого варіанту використовуючи макрозасобимови Асемблер та процедури.

2. Прорахувати самостійно контрольний приклад для відлагодження задачі.3. Отримати виконавчий файл з розширенням ЕХЕ.4. Запустити виконавчий файл.5. Результати, які ви отримали по закінченню роботи програми повинні збігатися з

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

6. Оформити звіт.

Зміст звіту:1. Найменування та номер лабораторної роботи.2. Завдання згідно з вашим варіантом.3. Контрольний приклад, розрахований самостійно.4. Текст програми.5. Результат роботи програми.6. Виводи за отриманим результатом

Загальні теоретичні відомості:

Умови задачі та варіанти завдань:

1. Обчислити суму цифр, які зустрічаються у даному рядку.2. Обчислити різницю першої та останньої цифр у даному рядку.3. Обчислити суму цифр від 1 до 5, які зустрічаються у даному рядку.4. Обчислити різницю двох перших цифр, які зустрічаються у даному рядку.5. Обчислити суму цифр, які починаються з 2, але не перевищують 29 у даному рядку.6. Знайти добуток 3-х перших цифр у даному рядку.7. Знайти добуток 2-х перших цифр рядку на останню цифру. 8. Знайти добуток цифр від 1 до 5, які зустрічаються у даному рядку.9. Знайти залишок від ділення 2-х перших цифр на останню у даному рядку.10. Виділити в рядку нулі та одиниці, та представити їх у вигляді двоічного числа. 11. Знайти залишок від ділення 2-х останніх цифр у даному рядку на першу.12. Знайти добуток всіх цифр рядку, які не перевищують 15.13. Порахувати в рядку кількість цифр, які не перевищують 10.14. Порахувати кількість нулів то одиниць у даному рядку.15. Знайти добуток цифр від 5 до 10, які зустрічаються у даному рядку.16. Порахувати кількість цифр в рядку, які діляться без залишку на 5.17. Порахувати в рядку кількість літер англійського алфавіту.

Page 31: Лабораторная работа №3pzks.nmu.org.ua/ua/labs/asm_metod.pdf · 2018-09-03 · Де повинні знаходитися ділене та дільник при

18. Знайти в рядку перше тризначне число.19. Знайти в рядку останнє двозначне число.20. Перші два символи шістнадцятирічних цифр (A, B, C, D, E, F) у даному рядку

представити як шістнадцятирічне число, тобто „BF” = 191.

Питання для підготовки до захисту лабораторної роботи: