Программа:
LХІ В,ХХFFН ;3агрузка указателей
LХІ Н,YYFFН ;конечных адресов
LХІ D,ZZFFН ;массивов X, Y, Z
ADRESS: LDAX В ;Чтение элемента массива Z
АNА М ;Выполнение операции (А)¬Хi ÙYi;
;для задачи ÙY следует выполнить
;команды СМА и ;АNА М, а для задачи ;ХÅY команду ХRА М
SТАХ D ;Пересылка результата в ячейку ЗУ
;c адресом указателя (DЕ)
DСХ D ;Изменение текущих
DСХ Н ;адресов элеменгов
DСХ В ;массивов
МОV А,С ;Подготовка приАDІ 00Н ;знака для проверки окончания цикла
INZ АDRЕSS ;Проверка условия и переход
НLТ ;Останов
Р8.40. В качестве указателя адресов массивов используем регистровую пару (НL), а счетчик организуем в РОН С. Алгоритм решения задачи приведен на рис. Р8.11.
Программа:
МVІ С,Н ;(С) = N
LХІ Н, ВАSЕ ;Начальный адрес в иаре (НL)
АDR1: МОV А,М ;Пересылка в А элемента из ячейки ЗУ с адресом,
;записанным в (НL)
СРІ 00Н ;Установка признака, проверка условия
JZ АDR2 ;и переход по метке
МОV А,С ;Установка признака конца
СРІ 01Н ;массива
JZ АDRЗ ;При (2) = 0 переход по метке
DСR С ;Счет в (С)
INХ Н ;Модификация указателя
JМР АDR1 ;Безусловный переход по метке
ADR2: МОV А,С ;(А)Ù(С)
OUТ ОРОRТ ;Вывод номера элемента из (А) в порт с
;символическим адресом ОРОRТ
АDR3: НLТ
Примечание. Для поиска номера самого первого элемента. содержащего все единицы, или любого другого кода следует в команде СРІ записать соотвртствующий операнд.
Рис. Р8.11. алгоритм выделения номера первого нулевого элемента массива
Р8.41. Алгоритм решения задачи совпадает с алгоритмом на рис. Р8.11 из задачи 8.40 при внесении следующих изменений:
1) В блоке 2 необходимо занести не начальный, а конечный адрес массива, т. е. символический адрес последнего элемента массива АDRN = ВАSЕ + N;
2) в блоке 8 — модификация указателя адреса — следует не увеличивать указатель, а уменьшать указатель: (НL) ¬ (НL) — 1;
3) в блоке 4 сравнивать код в аккумуляторе не с 0, а с FFН возможно, с любым другим заданным в задаче кодом.
Программа:
MVI C,N
LXI H,ADRN
ADR1: MOV A,M
CPI FFH
JZ ADR2
MOV A,C
CPI 01H
JZ ADR3
DCR C
DCX H
ADR2: JMP ADR1
MOV A,C
OUT OPORT
ADR3: HLT
Р8.42. Очередь представляет собой массив, в котором новые элементы можно включать только с конца очереди, а исключать только с начала очереди (в отличие от массива типа «стек», где реализуется принцип «первый приходит, последний уходит», в очереди реализуется принцип «первый приходит, первый уходит»).
Для организации очереди вводятся два указателя: указатель начала очереди, который адресует элемент очереди, подлежащий выходу (исключению), и указатель конца очереди, который адресует последний элемент очереди. Для выхода из очереди считывается элемент, адресуемый указателем, и затем производится увеличение на единицу (инкремент) указателя начала, т.е. очередь как бы растет «вниз» — в сторону больших адресов.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.