BigEdu.ru
» » » Асемблер Контрольна - варіант 1
Вернуться назад

Асемблер Контрольна - варіант 1

Задача № 1 . Розробіть алгоритм і напишіть програму на мові Асемблера для обчислення функції:

М3 = (С - М1) + (Е – (50)16) + (D + М2)

, де A, B, C, D, E, H, L– регістри загального призначення мікропроцесора КР580ВМ80А; М1, М2 – операнди, розташовані в пам’яті; М3 – результат обчислень, розташований у пам’яті.

Регістр В – тимчасове збереження поточного результату.

Розподіл комірок пам’яті:

1. 8000Н-8014Н – машинні коди програми;

2. 8020Н, 8021Н – адреси операндів М1 та М2;

3. 8022Н – адреса результату М3.

MOVA, C ; Запис вмісту регістра С в акумулятор

LXIH, 8020Н ; Запис в пару регістрів HL адреси операнда М1

SUBM ; Віднімання від акумулятора значення операнда М1

MOVB, A; Перенесення результату з акумулятора в регістр В

MOVA, E; Запис вмісту регістра Е в акумулятор

SUI 50Н ; Віднімання від акумулятора значення 50 в 16-му коді

ADDB; Додавання до вмісту акумулятора значення регістра В

MOVB, A ; Перенесення результату з акумулятора в регістр В

MOVA, D ; Запис вмісту регістра D в акумулятор

LXIH, 8021Н ; Запис в пару регістрів HL адреси операнда М2

ADDM; Додавання до вмісту акумулятора значення М2

ADDB; Додавання до вмісту акумулятора значення регістра В

STA8022Н ; Запис результату обчислень функції в М3

RST1 ;Припинити виконання програми

Блок-схема до даної програми зображена на рис.1 в додатку 1.

Задача № 2 . Розробіть алгоритм і напишіть програму на мові Асемблера для формування часової затримки за допомогою мікропроцесора КР580ВМ80А. Наведіть розрахунок часу затримки і величини похибки.

Час затримки 100мс, максимальна похибка 0,7%, А – кількість циклів.

Для розрахунку часової затримки наведем програму з тактами затримки кожної команди.

Пара регістрів DЕ – лічильник кількості циклів.

8000Н-800СН – машинні коди програми;

MS: DCX D ; 5

MOV A, E ; 5

ORA D ; 7

JNZ MS ; 10

RЕТ ; 10

LXI D, **** ; 10

CALL MS ; 17

Розрахуємо кількість циклів при часі затримки 100 мс=100000 мкс:

100000 = 0,5 * ( А * ( 5 + 5 + 7 + 10 ) + 10 + 10 + 17 )

А = 740610 = 1СЕЕ16

Мінімальний час затримки (А=1):

Тmin= 32 мкс

Максимальний час затримки (А=0):

Тmax= 884741 мкс

Даний за умовою час затримки входить в межі часової затримки наведеної вище програми. Перевіримо час затримки для вирахуваної кількості циклів:

Т = 0,5 * ( 7406 * 27 + 37 ) = 99999,5 мкс

Знайдемо похибку обчислень:

b=(100000–99999,5)*100%/100000=0,05%

Отримана похибка меньша, ніж максимально допустима. Після проведення обчислень виконаємо програму:

MS: DCXD ; Зменшення пари регістрів DЕ на 1

MOVA, E ; Пересилання в акумулятор вмісту регістра Е

ORAD ; Логічне додавання регістру D до акумулятора

JNZMS ; Організація циклу

RЕТ ; Вихід

LXID, 1СЕЕН ; Запис в пару регістрів DЕ числа 1СЕЕН

CALLMS ; Виклик підпрограми

Блок-схема до даної програми зображена на рис.2 в додатку 1.

Задача № 3 . Розробіть алгоритм і напишіть програму на мові Асемблера для обчислення виразу:

Y=( Amax/ 2 + 5 * Amin / 16 ) / 4

за допомогою мікропроцесора КР580ВМ80А, де Amax, Amin – максимальнеі мінімальне значення для масиву однобайтних чисел без знаку об’ємом N=64 байт, який зберігається в пам’яті з початковою адресою Addr0.

Результат обчислень потрібно записати в пам’ять за адресою Addr(Rez). Визначіть найбільше і найменше значення виразу Y.

Розподіл регістрів загального призначення:

1. Пара регістрів HL – адреса Addr елемента масиву;

2. Регістр В – лічильник елементів масиву і, кількість циклів при діленні.

Розподіл комірок пам’яті:

1. 8000Н-804FН – машинні коди програми;

2. 8050Н-808FН– масив чисел;

3. 8090Н – адреса Addr(Amax)16;

4. 8091Н – адреса Addr(Amin)16;

5. 8092Н – адреса результату Addr(Rez)16.

Визначимо найбільше і найменше значення виразу Y:

Ymax = ( FF / 2 + 5 * FF / 16 ) / 4 = 2E

Ymin = ( 0 / 2 + 5 * 0 / 16 ) / 4 = 0

Обрахувавши Ymax та Ymin бачимо, що результат не виходить за межі одного байту, тому його можна записати в одну комірку.

Розробимо програму для розрахунку цієї функції:

A max : LXIH, Addr016 ; Запис в пару регістрів HLадреси першого елементу

; масиву Addr016

MVIB, 64 ; Завантаження в регістр В кількості елементів масиву

LDAAddr016 ; Запис в акумулятор першого елементу масиву

MS: INXH ; Визначення адреси наступного елементу масиву

CMPM ; Порівняння вмісту акумулятора з і-м елементом

; масиву

DCRB ; Зменшення кількості елементів на 1

JZMS1 ; Вихід з циклу при проходженні всіх елементів

; масиву

JNCMS ; Повернення на початок циклу, якщо Аi< Amax

MOVA, M ; Запис в акумулятор поточного максимального

; значення масиву

JCMS ; Повернення на початок циклу, якщо Аi> Amax

MS1: ORAA; Логічне додавання вмісту акумулятора для

; обнулення TC

RAR ;Ділення вмісту акумулятора на 2

STAAddr(Amax)16; Запис

Внимание, отключите Adblock

Вы посетили наш сайт со включенным блокировщиком рекламы!
Ссылка для скачивания станет доступной сразу после отключения Adblock!

Скачать
Рефераты по астрономии Задача № 1 . Розробіть алгоритм і напишіть програму на мові Асемблера для обчислення функції: М3 = (С - М1) + (Е – (50)16) + (D + М2) , де A,
Оценок: 1005 (Средняя 5 из 5)

Наверняка у вас есть товары или услуги, продажа которых приносит вам максимальную прибыль. Для быстрого старта в сети вам необходимо создание посадочной страницы (одностраничного сайта), на которой будет размещена информация о маржинальных товарах/услугах интернет магазина. За 8 лет опыта разработки конверсионных страниц мы выработали оптимальную структуру, которая позволит привлекать через landing page больше продаж. На такую структуру «одевается» ваш контент — фирменный стиль, тексты, фотографии, уникальные торговые предложения, после чего страница выходит в свет. Разработка лендинга и запуск в сети — до 7 рабочих дней. Стоит отметить, что в разработку самой посадочной страницы входит и написание копирайтером продающих текстов для вашего бизнеса, чтобы каждый посетитель страницы захотел совершить покупку именно у вас. Результат: качественно разработаная продающая посадочная страница, которая готова приносить вам новых клиентов.

© 2016 - 2022 BigEdu.ru