
- •Загальні методичні вказівки
- •1.3 Завдання на роботу
- •1.4 Контрольні запитання
- •2.3 Завдання на роботу
- •Варіанти завдань:
- •Варіанти завдань
- •3.4 Приклад оформлення звіту
- •4.3 Завдання на роботу
- •Варіанти завдань
- •4.4 Приклад оформлення звіту
- •5.3 Завдання на роботу
- •Варіанти завдань
- •5.4 Приклад оформлення звіту
- •6.3 Завдання на роботу
- •Контрольні запитання
- •А) команда rol; б) команда ror; в) команда rcl; г) команда rcr
- •7.3 Завдання на роботу
- •7.4 Приклад оформлення звіту
- •8.3 Завдання на роботу
- •8.4 Приклад оформлення звіту
- •X 28 розрядів bl, di, si y 12 розрядів ax
- •9.3 Завдання на роботу
- •9.4 Приклад оформлення звіту
- •10.2 Завдання на роботу
- •10.3 Варіанти завдань
- •11.3 Завдання на роботу
- •11.4 Контрольні запитання
- •12.3 Завдання на роботу
- •12.4 Приклад оформлення звіту
- •Виконання:
- •13.3 Завдання на роботу
- •13.4 Контрольні запитання
- •14.3 Завдання на роботу
- •Контрольні запитання
- •15.3 Завдання на роботу
- •16.3 Завдання на роботу
- •16.4 Контрольні запитання
- •17.3 Завдання на роботу
- •17.4 Контрольні запитання
- •18.3 Завдання на роботу
- •18.4 Контрольні запитання
- •19.3 Завдання на роботу
- •12.3 Контрольні запитання
- •20.3 Завдання на роботу
- •20.4 Контрольні запитання
- •21.3 Завдання на роботу
- •21.4 Контрольні запитання
- •Перелік рекомендованих джерел
12.3 Завдання на роботу
Обчислити значення виразу:
A*B+C*D
A/B+C/D
Операції множення та ділення операндів виконати за допомогою підпрограми.
Таблиця 12.1 - Варіанти завдань
№ варіанту |
A |
B |
C |
D |
Варіант рівняння |
1 |
12 |
10 |
15 |
10 |
a |
2 |
12 |
10 |
15 |
10 |
a |
3 |
12 |
10 |
15 |
10 |
a |
4 |
20 |
13 |
26 |
15 |
b |
5 |
20 |
13 |
26 |
15 |
b |
6 |
20 |
12 |
16 |
12 |
a |
7 |
20 |
12 |
16 |
12 |
a |
8 |
20 |
12 |
16 |
12 |
a |
9 |
18 |
18 |
20 |
18 |
b |
10 |
18 |
18 |
20 |
18 |
b |
11 |
24 |
10 |
16 |
10 |
a |
12 |
24 |
10 |
16 |
10 |
a |
13 |
24 |
10 |
16 |
10 |
a |
14 |
24 |
24 |
18 |
18 |
b |
15 |
24 |
24 |
18 |
18 |
b |
12.4 Приклад оформлення звіту
Завдання: Обчислити значення виразу: A*B+C*D, множення виконати зсувом вліво суми часткових добутків аналізом другого множника старшими бітами вперед. A,C – 22-розрядні, В,D – 10 – розрядні операнди.
Виконання:
model small
stack 100h
dataseg
RES_H dw 0
RES_L dw 0
ends
codeseg
main:
mov ax,@data
mov ds,ax
mov si,0ABCFh ;A_L
mov dl,023h ;A_H
mov bx,0266H ;B
call mul_p
mov RES_H,cx ;зберігання результату А*В
mov RES_L,di
mov si,057AFh ;C_L
mov dl,013h ;C_H
mov bx,0347H ;D
call mul_p
add RES_L,di
adc RES_H,cx
jmp end_main
mul_p proc
xor di,di
xor bp,bp
mov cx,10h
xor dh,dh
mul_1: shl di,1
rcl bp,1
shl bx,1
jnc mul_2
add di,si
adc bp,dx
mul_2: loop mul_1
mov cx,bp
ret
mul_p endp
end_main:
end main
Нижче наведено приклад програми, що виконує те ж завдання тільки параметри та результат підпрограми передаються через стек.
model small
stack 100h
dataseg
RES_H dw 0
RES_L dw 0
ends
codeseg
main:
mov ax,@data
mov ds,ax
push 0 ;резерв для результату
push 0 ;резерв для результату
push 0ABCFh ;A_L
push 0023h ;A_H
push 0266H ;B
mov bp,sp
call mul_p
pop cx ;зберігання результату А*В
pop dx
push 0
push 0
push 057AFh ;C_L
push 013h ;C_H
push 0347H ;D
call mul_p
pop RES_H
pop RES_L
add RES_L,dx
adc RES_H,cx
jmp end_main
mul_p proc
push cx ;зберігання СХ в стеку
mov di,word ptr [bp+4]
mov si,word ptr [bp+2]
mov cx,10h
mul_1: shl word ptr [bp+8],1
rcl word ptr [bp+6],1
shl [bp+1],1
jnc mul_2
add word ptr [bp+8],di
adc word ptr [bp+6],si
mul_2: loop mul_1
pop cx ;відновлення СХ
ret 6
mul_p endp
end_main:
end main
ЛАБОРАТОРНА РОБОТА №13
ВИВІД НА ЕКРАН
13.1 Мета роботи
Навчитися визначати та змінювати положення курсору, міняти його розмір, а також виводити інформацію в задані координати екрану.
13.2 Теоретичні відомості
Для роботи з відеоадаптерами переважно використовують функції BIOS переривання 10h, замість програмування регістрів. Такий підхід є безпечнішим і надійнішим з погляду надійності функціонування системи, оскільки існує спеціальний відео-BIOS, встановлений на платі відеоадаптера. Такий відео-BIOS гарантує коректну роботу з регістрами і виключає можливі неправильних режимів роботи. Деякі функції переривання 10h подано в наступній таблиці:
Таблиця 13.1 – Функції переривання 10h
Функція |
Опис |
00h |
Вибір режиму роботи відеоадаптера |
01h |
Зміна форми курсору в текстовому режимі |
02h |
Зміна положення курсору |
03h |
Визначення поточного положення курсору |
08h |
Зчитування символу та його атрибутів |
09h |
Запис символу з атрибутами в поточне положення курсору |
0Аh |
Запис символу в поточну позицію курсору |
0Fh |
Визначення поточного режиму роботи відеоадаптера |
Доцільно зазначити, що координати курсору визначають не тільки місце на екрані, де він розміщується, але і позицію, починаючи з якої відповідні функції BIOS чи DOS будуть виводити на екран рядки або окремі символи.