Реферат

Реферат Асемблер Задание 4 - вар2

Работа добавлена на сайт bukvasha.net: 2015-10-28

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 26.12.2024


SUMM: LXI H, 8100 ;задание адреса первого элемента (HL:=8100H)

MVI D, 40 ;задание кол-ва элементов

XRA A ;обнуление аккумулятора

MVI C, 00 ;обнуление регистра C (счетчик переполнений)

X1: ADD M ;суммирование (A:=A+M(HL))

JNC X2 ;перейти на Х2 если нет переполнения

INR C ;произошло переполнение → прибавить 1 к старшему байту

результата суммирования

X2: INX H ;присвоить HL адрес следующей ячейки (HL:=HL+1)

DCR D ;уменьшение счётчика кол-ва элементов на 1 (D:=D-1)

JNZ X1 ;если элемент не последний - продолжить суммирование

MOV B, A ;пересылка младшего байта результата суммирования в регистр В

Сумма 64х элементов находится в паре BC

ACP: MVI D, 06 ;задаём кол-во сдвигов (6 сдвигов – деление на 64)

MOV A, C ;пересылаем старший байт в аккумулятор (CA)

RAR ;циклический сдвиг вправо через ТС

MOV C, A ;возврат в C старшего байта

MOV A, B ;пересылаем младший байт в аккумулятор (BA)

RAR ;циклический сдвиг вправо через ТС

MOV B, A ;возврат в B младшего байта

ORA A ;обнуление флага переполнения (ТС:=0)

DCR D ;уменьшение счётчика кол-ва сдвигов на 1 (D:=D-1)

JNZ ACP ;если сдвиг не последний – продолжить

Среднее значение находится в регистре В

MOV A, B ;пересылаем среднее значение в аккумулятор

ADD B ;получаем в аккумуляторе значение 2АСР

JNC X3 ;перейти на Х3 если нет переполнения

INR C ;произошло переполнение → прибавить 1 к старшему байту

значения 2АСР

X3: MOV B, A ;пересылка 2АСР в регистр В

Значение 2АСР находится в паре ВС

AMAX: LXI H, 8100 ;задание адреса первого элемента (HL:=8100H)

MVI D, 40 ;задание кол-ва элементов

MOV A, M ;будем считать первый элемент максимальным (A:=M(HL))

X4: CMP M ;сравниваем максимальный элемент с текущим (A-М(HL))

JP X5 ;при S=0 (A-M(HL)≥0 → AM(HL)) переход на Х5

MOV A, M ;если же S=1 (A-M(HL)<0 → A<M(HL)), сделать текущий элемент

максимальным

X5: INX H ;присвоить HL адрес следующей ячейки (HL:=HL+1)

DCR D ;уменьшение счётчика кол-ва элементов на 1 (D:=D-1)

JNZ X4 ;если элемент не последний - продолжить

Максимальное значение находится в аккумуляторе

RAR ;циклический сдвиг вправо через перенос (деление на 2)

ORA A ;обнуление флага переполнения (ТС:=0)

MOV E, A ;пересылка значения AMAX/2 в регистр E

Значение AMAX/2 находится в регистре Е

REZ1: MOV A, B ;отправляем младший байт значения 2АСР в аккумулятор

SUB E ;отнимаем AMAX/2 от младшего байта значения 2АСР

JP X6 ;если результат неотрицателен - перейти на Х6

DCR C ;если результат отрицателен - вычесть 1 от старшего байта

значения 2АСР

X6: MOV B, A ;пересылаем младший байт значения (2АСР - AMAX/2) в регистр В

Значение (2АСР - AMAX/2) находится в паре ВС

AMIN: LXI H, 8100 ;задание адреса первого элемента (HL:=8100H)

MVI D, 40 ;задание кол-ва элементов

MOV A, M ;будем считать первый элемент минимальным (A:=M(HL))

X7: CMP M ;сравниваем минимальный элемент с текущим (A-М(HL))

JM X8 ;при S=1 (A-M(HL)<0 → A<M(HL)) переход на Х8

MOV A, M ;если же S=0 (A-M(HL)≥0 → AM(HL)), сделать текущий элемент

наименьшим

X8: INX H ;присвоить HL адрес следующей ячейки (HL:=HL+1)

DCR D ;уменьшение счётчика кол-ва элементов на 1 (D:=D-1)

JNZ X7 ;если элемент не последний - продолжить

Минимальное значение находится в аккумуляторе

RAR ;циклический сдвиг вправо через перенос (деление на 2)

ORA A ;обнуление флага переполнения (ТС:=0)

MOV E, A ;пересылка значения AMIN/2 в регистр E

Значение AMIN/2 находится в регистре Е

!!!Значение Y теоретически не превышает два байта!!! YMAX = BE01H

MULT: MOV D, E ;загрузить множитель (AMIN/2) в регистр D

DCR D ;уменьшение на 1 множителя

MOV A, C ;пересылка старшего байта множимого в аккумулятор

X9: ADD C ;суммируем по одному значению

DCR D ;уменьшить кол-во циклов суммирования на 1

JNZ X9 ;если цикл не последний – повторить суммирование

MOV C, A ;переслать старший байт Y в регистр С

MOV D, E ;загрузить множитель в регистр D

DCR B ;уменьшение на 1 множителя

MOV A, B ;пересылка младшего байта множимого в аккумулятор

X11: ADD B ;суммируем по одному значению

JNC X12 ;если нет переполнения – перейти на Х12

INR C ;если было переполнение – увеличить старший байт на 1

X12: DCR D ;уменьшить кол-во циклов суммирования на 1

JNZ X11 ;если цикл не последний – повторить суммирование

STA 8150 ;отправить младший байт результата Y в ячейку 8150H

MOV A, C ;переслать старший байт результата Y в аккумулятор

STA 8151 ;отправить старший байт результата Y в ячейку 8151H

RST 1


1. Курсовая на тему Финансовый рынок в России
2. Статья Вопросы преподавания основ бухгалтерского учета и судебно-бухгалтерской экспертизы в юридическом
3. Курсовая на тему Учет выпуска отгрузки и реализации готовой продукции 2
4. Реферат Расчет транзисторного ШИП
5. Реферат Работа Эйнштейна над внешним фотоэффектом
6. Реферат Социальная работа с группами риска
7. Реферат Аналіз журналістських розслідувань на матерілах газети Голос України
8. Реферат на тему Особенности современной научной картины мира
9. Диплом Анализ финансовой устойчивости предприятия по данным отчётности
10. Реферат Угольная промышленность Кузбасса