Задача

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

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

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

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

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

от 25%

Подписываем

договор

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

Скидка 25% при заказе до 21.9.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. Реферат на тему The Tempest Caliban Essay Research Paper As
2. Задача Социально-ориентированная рыночная экономика черты, принципы, направления. Особенности белорусс
3. Реферат Основні стилі поведінки при розв язанні конфліктів
4. Реферат на тему Захист від виробничих випромінювань
5. Реферат Революция 1848 1849 годов в Австрийской империи
6. Реферат на тему Литература - Психиатрия ЭКЗОГЕННЫЕ ЗАБОЛЕВАНИЯ
7. Курсовая на тему Людвиг ван Бетховен
8. Доклад на тему Роль государства в экономике
9. Реферат Травма коленного сустава
10. Реферат Пожары-катастрофы в истории Москвы