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

Завдання для самостійної роботи.

  1. Задано цілі беззнакові числа a та b , цілі знакові c та d. Побудувати блок –схему та написати процедуру обчислення виразу :

1

а = 44

b =103

c = -34

d = 625

2

а = 554

b =103

c = 304

d = -66

3

а = 344

b =58

c = -300

d = 225

4

а = 13

b =26

c = -255

d = 615

5

а = 64

b =783

c = 454

d = -89

6

а = 54

b =16

c = -34

d = -62

7

а = 87

b =89

c = -87

d = -64

8

а = 76

b =48

c = -484

d = 382

9

а = 484

b =34

c = 433

d = -43

10

а = 10

b =13

c = -18

d = 676

11

а = 44

b =103

c = -34

d = 625

12

а = 554

b =103

c = 304

d = -66

13

а = 344

b =58

c = -300

d = 225

14

а = 13

b =26

c = -255

d = 615

15

а = 64

b =783

c = 454

d = -89

16

а = 54

b =16

c = -34

d = -62

17

а = 87

b =89

c = -87

d = -64

18

а = 76

b =48

c = -484

d = 382

19

а = 484

b =34

c = 433

d = -43

20

а = 10

b =13

c = -18

d = 676

2. Побудувати блок –схему та написати процедуру обчислення суми виразу

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

3. Задано два впорядкованих за зростанням масиви X, Y розмірності n написати програму, що :

  1. дописує масив X до масиву Y;

  2. дописує масив Y до масиву X;

  3. об’єднує в один впорядковані за зростанню масиви;

  4. додає до компонент масиву X відповідні компоненти масиву Y.

  5. додає до компонент масиву Y відповідні компоненти масиву X.

  6. віднімає від компонент масиву X відповідні компоненти масиву Y.

  7. додає до компонент масиву Y найбільший елемент масиву X.

  1. Задано масив X розмірності n беззнакових цілих чисел. Написати програму :

    1. впорядкування за спанням елементів масиву;

    2. впорядкування за не зростанню елементів масиву;

    3. знаходження найбільшого та найменшого елемента масиву;

    4. знаходження різниці між найбільшим та найменшим елементом масиву;

    5. кількість нульових елементів;

    6. знаходження суми елементі масиву.

  2. Задано масив X розмірності n знакових цілих чисел. Написати програму :

    1. впорядкування за спадання елементів масиву;

    2. впорядкування за не зростанням елементів масиву;

    3. знаходження суми найбільшого та найменшого елемента масиву;

    4. суму додатних елементів масиву;

  1. додає до компонент масиву його найбільший елемент;;

    1. суму від’ємних елементів масиву.

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

Тема: Введення-виведення символів та рядків

Мета. Ознайомлення з можливостями введення–виведення текстової інформації за допомогою DOS та BIOS переривання. Розглянути способи виведення інформації на екран та введення з клавіатури.

План заняття :

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

  2. Введення символів та рядків з клавіатури.

  3. Задачі введення – виведення символів та символьних рядків та їх обробка.

Література : [1] c. 34-60; [2] c. 26-38; [3] c. 22-36; [4] c. 17-21, 124-127,142-145.

Теоретичні відомості

1.Виведення символів та рядків. Виведення інформації в програмах мовою асемблера здійснюється за допомогою сервісних функцій DOS (переривання 21h) або BIOS (переривання 10h). Процес виведення полягає в наступному:

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

  • у регістр AH заноситься номер функції для здійснення операції виведення ;

  • викликається переривання.

Нижче представлений перелік функції переривань 21h і 10h, які використовуються для виведення інформації.

Переривання 21h.

Функція 02h

Виведення символу

Вхід: AH=02h

DL= символ, що виводиться

Вихід: немає

Опис: Функція переривання виводить символ з DL на стандартний пристрій виведення. Обробляє символ Backspace (ASCII 8), переміщаючи курсор уліво на одну позицію і залишаючи його в новій позиції.

Функція 05h

Виведення на принтер.

Вхід: AH=05h

DL= символ, що виводиться

Вихід: немає

Опис: Функція переривання виводить символ із регістра DL на стандартний пристрій друку. За замовченням це пристрій, який приєднаний до пристрою LPT1. Команда DOS MODE може перенаправляти це виведення.

Функція 09h

Введення рядка.

Вхід: AH = 09h

DS:DX = адреса символьного рядка, що закінчується символом '$'.

Вихід: немає

Опис: Рядок, крім символу '$', виводиться на стандартний пристрій виведення. Символи Backspace обробляються як у функції 02h. Щоб перейти на новий рядок, у текст включають пару символів керування знаків CR/LF (ASCII 13H і ASCII 0a).

Переривання 10h.

Установка курсору

Функція 02h

Вхід: AH=02h

BH = відео сторінка

DH,DL = рядок, стовпчик (вважаючи від 0)

Вихід: немає

Опис: Установлює курсор у позицію DH,DL. Установка курсору на рядок 25 робить курсор невидимим.

Функція 09h

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

Вхід: AH=09h

BH = номер відео сторінки

AL = записуваний символ

CX = лічильник (скільки екземплярів символу записати)

BL = відео атрибут (текст) або колір (графіка)

Вихід: немає

Опис: Виводить на екран у поточну позицію курсору символ із заданим атрибутом.

Функція 0ah

Виведення символ у поточній позиції курсору.

Вхід: AH=0ah

BH = номер відео сторінки

AL = записуваний символ

CX = лічильник (скільки екземплярів символу записати)

Вихід: немає

Опис: Виводить на екран у поточну позицію курсору заданий символ.

Функція 13h

Виведення рядка.

Вхід: AH=13h

ES:BP – виведений рядок

CX = довжина рядка (підраховуються тільки символи)

DH,DL = позиція (рядок, стовпчик) початку висновку

BH = номер сторінки

AL = код під функції:

0=атрибут у BL; курсор без зміни

1=атрибут у BL; курсор – у кінець рядка

2=формат рядка: char, attr,...; курсор без зміни

3=формат рядка: char, attr,...; курсор – у кінець рядка

Вихід: немає

Опис: Виводить рядок з позиції курсору. Символи 0d (CarRet), 0a (LineFeed), 08H (backspace) і 07H (Beep) трактуються як команди керування і не відображаються.

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

7

6

5

4

3

2

1

0

fgB

background

brt

foreground

foreground – колір переднього плану (від 0 до 0f)

brt – інтенсивність: 1=передній план яскравості

background – фоновий колір (від 0 до 7)

fg – мерехтіння: 1=передній план мерехтіння

Відеоадаптер підтримує наступні кольори:

00H –чорний

01H –синій

02H –зелений

03H –голубий

04H –червоний

05H –рожевий

06H –коричневий

07H –сірий

08H –темно-сірий

09H –яскраво-синій

0aH –світло-зелений

0bH –світло-блакитний

0cH –світло-червоний

0dH –світло-рожевий

0eH –жовтий

0fH –білий

Обчислити значення атрибута можна, використовуючи наступний вираз:

(фон * 16) + передній план + (128 для мерехтіння)

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

mov AH,09H ;Вибір функції переривання

mov DX,OFFSET STR ;Занесення в DX адреси

; виведеного рядка

INT 21H ; виклик переривання

. . .

STR DB 10,13,'Hello$' ;Опис рядка

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

  • у регістр AH заноситься номер функції введення;

  • для введення рядка, в регістр DX адреса буфера введення;

  • викликається переривання, після виконання якого введена інформація записується у визначені регістри, або визначений буфер.

Нижче описаний ряд функцій переривання 21h, які використовуються для введення інформації з клавіатури.

Функція 01h

Введення з клавіатури.

Вхід: AH=02h

Вихід: AL= символ, отриманий із клавіатури

Опис: Читає символ зі стандартного вхідного пристрою. Відображає цей символ на стандартний вихідний пристрій (відлуння). Введення розширених клавіш ASCII (F1-F12, PgUp, курсор і т.п.) вимагає двох звертань до цієї функції. Перший виклик повертає AL=0. Другий виклик – повертає в AL розширений код ASCII.

Функція 07h

Не фільтроване консольне введення без відлуння.

Вхід: AH=07h

Вихід: AL= символ, отриманий із клавіатури

Опис: Читає символ зі стандартного вхідного пристрою та записує прочитаний символ у AL. Функція не фільтрує вхідні символи. Не перевіряє на Ctrl-Break, backspace і т.п. Необхідно викликати двічі для введення розширеного символу ASCII.

Функція 08h

Консольне введення без відлуння.

Вхід: AH=08h

Вихід: AL= символ, отриманий із клавіатури

Опис: Читає символ зі стандартного вхідного пристрою та записує прочитаний символ у AL. При виявленні Ctrl-Break виконується переривання INT 23H. Необхідно викликати двічі для введення розширеного символу ASCII.

Функція 0ah

Буферизоване введення рядка.

Вхід: AH=0ah

DS:DX =адреса вхідного буфера (дивися нижче)

Вихід: буфер містить уведення, що закінчується символом CR (ASCII 0d)

Опис: При вході буфер за адресою DS:DX повинний бути оформлений у такий спосіб:

Max

?

?

?

?

?

?

MAX - максимально припустима довжина введення (від 1 до 254) При виході буфер заповнений даними в такий спосіб:

Max

Len?

T

E

X

T

0dh

LEN - дійсна довжина даних без завершального CR (тут – 0d).

Символи зчитуються зі стандартного пристрою введення до повернення каретки CR (ASCII 0d), або до досягнення довжини MAX-1. Якщо досягнуто довжини MAX-1, включається консольний дзвоник для кожного чергового символу, до тих пір поки не буде введене повернення каретки CR (натискання клавіші Enter). Другий байт буфера заповнюється дійсною довжиною введеного рядка, не враховуючи повернення каретки CR. Останній символ у буфері – завжди CR (який не враховується у байті довжини). Символи в буфері (включаючи LEN) у момент виклику використовуються як «шаблон». У процесі введення можна використовувати клавіші редагування: Esc видає "\" і починає з початку, F3 видає буфер до кінця шаблона, F5 видає "@" і зберігає поточний рядок як шаблон, і т.д. Більшість розширених кодів ASCII ігноруються. При розпізнаванні Ctrl-Break виконується переривання INT 23H (буфер залишається незмінним).

Функція 0ch

Введення з очищенням

Вхід: AH=0ch

AL= номер функції введення (01H, 06H, 07H, 08H або 0aH)

Вихід: немає

Опис: Очищає буфер попереднього введення із стандартного пристрою введення, а потім викликає функцію введення, яка задана в AL. Це змушує систему очікувати введення чергового символу.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]