Задача

Задача Контрольная (вариант 12), 4 задачи на Асемблер

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

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

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

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

от 25%

Подписываем

договор

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

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




Задача №1

M3 = 38H – (B - C) + (M1 + M2) – E M1=8061H, M2=8062H, M3=8063H

MOV A, B ;A←B

SUB C ;B - C

MOV C, A ;C←(B-C)

MVI A, 38 ;A←38

SUB C ;38 – (B-C)

SUB E ;(38-(B-C)) – E

MOV E, A ;E←((38-(B-C))–E)

LDA 8061 ;A←M1

LXI H, 8062 ;HL←ADR(M2)

ADD M ;M1 + M2

ADD E ;(M1+M2) + ((38-(B-C))–E)

STA 8063 ;M3←A

RST 1

Задача №2

Задержка 7 мс ± 0,2%

7 мс – это тактов.

Количество повторений цикла внутренней задержки: 17+10+(5+5+4+10)*Х+10=14000,

LXI H, 0246 ;10 тактов

CALL ZZZ ;17 тактов

ZZZ: DCX H ;5 тактов

MOV A, H ;5 тактов

ORA H ;4 такта

JNZ ZZZ ;10 тактов

RET ;10 тактов

Погрешность

Задача №3

ADR(Y)=8000H, ADR(1)=8001H

YMIN=00 (при Аср=Amin=00), YMAX=1E (при Аср=Amin=FF).

LXI H, 8001 ;задание адреса первого элемента

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

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

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

MET1: ADD M ;A=A+M

JNC MET2 ;перейти на MET2 если нет переполнения

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

MET2: INX H ;присвоить HL адрес следующей ячейки

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

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

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

MVI D, 06 ;задание сдвигов (6 сдвигов = делению на 64)

CALL DEL ;вызов подпрограммы деления

MOV A, B ;Acp→А

MVI D, 04 ;задание количества циклов суммирования

MET: ADD B ;суммирование

JNC MX ;перейти на MX если нет переполнения

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

MX: DCR D ;уменьшить на 1 количество суммирований

JNZ MET ;организация цикла

MVI D, 04 ;задание сдвигов (4 сдвига = делению на 16)

CALL DEL ;вызов подпрограммы деления

MOV E, A ;E←5Acp/16

LXI H, 8001 ;задание адреса первого элемента

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

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

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

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

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

MET4: INX H ;присвоить HL адрес следующей ячейки

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

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

MOV B, A ;Amin B

MVI D, 02 ;задание сдвигов (2 сдвига = делению на 4)

CALL DEL ;вызов подпрограммы деления

MOV A, B ;A←Amin/4

ADD E ;Amin/4 + 5Acp/16 (не более одного байта)

MOV B, A

MVI D, 02 ;задание сдвигов (2 сдвига = делению на 4)

CALL DEL ;вызов подпрограммы деления

STA 8150 ;Y 8000H

RST 1 ;выход из программы

DEL: MOV A, C ;старший байт в аккумулятор (C→A)

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

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

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

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

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

ORA A ;обнуление флага переполнения

DCR D ;уменьшение счётчика сдвигов на 1

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

RET

Задача №4

Y=(Acp/4 – Amax/8)*2Amin ADR(Y)=8101H, 8102Н, 8103Н, ADR(1)=8001H

(Acp/4 – Amax/8) – 1 байт, 2Amin – 2 байта, Y – 3 байта (FF*(2*FF)=FF*1FE=1FC02).

LXI H, 8001 ;задание адреса первого элемента

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

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

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

MET1: ADD M ;A=A+M

JNC MET2 ;перейти на MET2 если нет переполнения

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

MET2: INX H ;присвоить HL адрес следующей ячейки

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

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

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

MVI D, 08 ;задание сдвигов (8 сдвигов = делению на 256 (Acp/4))

CALL DEL ;вызов подпрограммы деления

MOV E, A ;EAcp/4

LXI H, 8001 ;задание адреса первого элемента

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

MOV A, M ;считаем первый элемент максимальный

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

JР MET4 ;при S=0 (A-M≥0 → AM) переход на MET4

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

MET4: INX H ;присвоить HL адрес следующей ячейки

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

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

MOV B, A ;AmaxB

MVI D, 03 ;задание сдвигов (3 сдвига = делению на 8)

CALL DEL ;вызов подпрограммы деления

MOV A, E ;AAcp/4

SUB B ;Acp/4 - Amax/8

MOV E, A ;E← (Acp/4 - Amax/8)

LXI H, 8001 ;задание адреса первого элемента

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

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

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

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

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

MET6: INX H ;присвоить HL адрес следующей ячейки

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

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

ADD A ;A=2Amin

JNC MET7 ;перейти на MET7 если нет переполнения

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

MET7: MOV D, A ;младший байт 2Amin – в регистр D

MOV H, C ;старший байт 2Amin – в регистр Н

CALL MPL ;умножение младшего байта 2Amin на (Acp/4 - Amax/8)

MOV A, B ;младший байт результата в аккумулятор

STA 8101 ;первый байт результата в ячейку 8101Н

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

MOV D, H ;старший байт 2Amin – в регистр D

MOV H, A ;старший байт предыдущего результата в Н

CALL MPL ;умножение старшего байта 2Amin на (Acp/4 - Amax/8)

MOV A, B ;младший байт результата в аккумулятор

ADD H ;прибавить к младшему байту результата второго умножения

переполнение от первого умножения

JNC MET8 ;перейти на MET8 если нет переполнения

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

MET8: STA 8102 ;второй байт результата в ячейку 8102Н

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

STA 8103 ;третий байт результата в ячейку 8103Н

RST 1

DEL: MOV A, C ;старший байт в аккумулятор (C→A)

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

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

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

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

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

ORA A ;обнуление флага переполнения

DCR D ;уменьшение счётчика сдвигов на 1

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

RET

MPL: LXI B, 0000 ;обнуление пары ВС

MVI L, 08 ;загрузка счётчика бит

ORA A ;сброс флага переполнения

NXBIT: MOV A, E ;загрузка множителя в аккумулятор

RAR ;сдвиг вправо

MOV E, A ;возврат сдвинутого множителя в регистр Е

JNC NADD ;если выпавший бит = 0 → перейти на NADD

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

ADD D ;суммирование множимого с частичной суммой

JMP SDV ;перейти на SDV

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

SDV: RAR ;сдвиг вправо частичной суммы

MOV B, A ;отправить старший байт частичной суммы в В

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

RAR ;сдвиг вправо частичной суммы

MOV C, A ;вернуть младший байт частичной суммы в С

DCR L ;уменьшить количество бит

JNZ NXBIT ;организация цикла

RET







Лист







Изм.

Лист

докум.

Подпись

Дата



1. Реферат на тему History Of Golf Essay Research Paper In
2. Реферат Ценообразование в ГК и ТФ
3. Реферат на тему Спостереження поведінки домашнього кота
4. Статья Управление муниципальными финансами
5. Реферат Мехабадская республика
6. Статья Технология полиэстровых офсетных пластин в вопросах и ответах
7. Реферат Японское экономическое чудо 60-х годов
8. Кодекс и Законы Малый бизнес в сфере торговли
9. Курсовая Разработка новых товаров
10. Сочинение на тему Лермонтов м. ю. - Мятежный дух лирики м. лермонтова