Реферат

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

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

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

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

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

от 25%

Подписываем

договор

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

Скидка 25% при заказе до 9.11.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. Реферат на тему Praise Of A Bilingual Country Essay Research
2. Реферат Социализация личности 8
3. Статья на тему Современные системы и технологии противопожарной защиты зданий и сооружений
4. Курсовая на тему Особистісно-орієнтований підхід до вивчення німецької мови в середніх навчальних закладах
5. Курсовая Национальные традиции в технологии и способах отпуска кулинарной продукции кубинской кухни
6. Курсовая Финансирование и его виды
7. Курсовая Система позамовного калькулювання собівартості
8. Курсовая Рыночная инфраструктура сущность, основные элементы, функции и роль
9. Реферат Сколиоз. Остеохондроз причины заболеваний
10. Реферат Недействительные сделки 4