
Лабораторна робота №5
Тема: Робота з масивами
Мета: навчитися користуватися командами для організації масивів
Теоретичні відомості
Приклад. З двох масивiв {x } i {y } сформувати масив {z } згiдно з формулою z = (2x – 18 + 4y) /2
org
0800h lxi
h,xxx lxi
d,yyy lxi
b,zzz next: push
b mov
a,m add
a sui
18 mov
b,a ldax
d add
a add
a add
b stc
cmc
rar pop
b stax
b inx
h inx
b inx
d lda
kil dcr
a sta
kil jnz
next hlt kil: db
5 xxx:
db 5,4,8,19,2 yyy: db
7,12,8,9,4 zzz: db
0 end
HL
XXX DE
YYY BC
ZZZ
стек
BC A
{(HL)} A
A + A
A
A - 18 B
A A
{(DE)}
A
A + A A
A + A
A
A + B
A /2 BC
стек
{(BC)}
A
HL
HL
+ 1 BC
BC + 1 DE
DE + 1
A
(KIL) A
A - 1 (KIL)
A
Завдання: Написати алгоритм і програму у відповідності з вказаним варіантом. Програму розпочати з адреси 800H+N, N - номер варіанту. Програму відлагодити за допомогою емулятору, перевірити результати.
Варiант 1
Знайти max число в масивi однобайтних чисел
Варiант 2
Знайти середнє арифметичне 8-ми однобайтних чисел, сума - двохбайтна.
Варiант 3
Сформувати масив В з додатних елементiв масиву А.
Варiант 4
З двох масивiв {x } i {y } сформувати масив {z } згiдно з формулою
z = x V y
Варiант 5
Подiлити на 4 двохбайтне число методом зсуву.
Варiант 6
З двох масивiв {x } i {y } сформувати масив {z } згiдно з формулою
z = x V y
Варiант 7
В масивi двохбайтних чисел обнулити вiд'ємнi.
Варiант 8
З двох масивiв {x } i {y } сформувати масив {z } згiдно з формулою
__
z = x V y
Варiант 9
З двох масивiв {x } i {y } сформувати масив {z } згiдно з формулою
__
z = x ^ y
Варiант 10
Представити старшу тетpаду заданого коду у виглядi двійково - десяткового коду.
Варiант 11
Збiльшити елементи масиву на 10
Варiант 12
З двох масивiв {x} i {y} сформувати масив {z } згiдно з формулою
_____
z = x ^ y
Варiант 13
Елементам масиву, коди яких мають непарне число одиниць, присвоїти код 0ААН.
Варiант 14
Сформувати масив А з масивiв А i В за формулою:
aі = bі ,якщо i=2*k+1, k=0,1,2...
aі = 0 ,якщо i=4*k, k=0,1,2...
aі = aі в останнiх випадках.
Варiант 15
З двох масивiв {x } i {y } сформувати масив {z } згiдно з формулою
__
z = x V y
Варiант 16
В масивi однобайтних кодiв елементам, що мають "1" в 6-му розрядi
присвоїти код 0FFH.
Варiант 17
Помножити на 4 елементи масиву методом зсуву.
Варiант 18
З двох масивiв {а } i {в } сформувати масив {z } згiдно з формулою
_
z = а + в
Варiант 19
В масивi однобайтних кодiв елементам, що мають "1" в 2-му розрядi
присвоїти код 55H.
Варiант 20
Сформувати масив В з вiд'ємних елементiв масиву А.
Варiант 21
В масивi однобайтних кодiв елементам, що мають парне число одиниць
присвоїти код 40H.
Варiант 22
З масиву А {aі } i=0,1,2,...,10 сформувати масив В за формулою:
bі = a10-і
Варiант 23
Зменшити елементи масиву на 10
Варiант 24
Подiлити на 4 елементи масиву методом зсуву.
Варiант 25
З масиву А утворити масив В за алгоритмом:
якщо iндекс елемента масиву А кратний 4, то bі = 0, в iнших випадках bі = аі .
Варiант 26
Сформувати масив В з масиву А за формулою:
i
bі = ∑ aк ( k=0,1,...,i )
k=0
Варiант 27
Представити молодшу тетpаду заданого коду в двійково - десятковому виглядi.
Варiант 28
Сформувати масив А за формулою:
aі = 2*i
Варiант 29
З двох масивiв А i В зробити масив А за наступним алгоритмом:
aі = max{aі,bі }
Варiант 30
Сформувати з двохбайтного масиву кодiв А={aі }, масив В за формулою:
_
bі = aі
Контрольні питання:
Які команди використовують для роботи із стеком ?
Яким чином можна організувати лічильник, якщо вільний лише регістр А ?
Яку адресацію мають команди LDAX B i STAX B ?