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

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

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


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


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


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


X
1:
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
;пересылаем старший байт в аккумулятор (C→A)


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


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


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


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АСР


X
3:
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
X
5
;при S=0 (A-M(HL)≥0 → A≥M(HL)) переход на Х5


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


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


X
5: 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 находится в регистре Е


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


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


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


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


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


X
6:
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
X
8
;при S=1 (A-M(HL)<0 → A<M(HL)) переход на Х8


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


наименьшим


X
8: 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
;пересылка старшего байта множимого в аккумулятор


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


RST
1

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

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

Слов:852
Символов:8795
Размер:17.18 Кб.