![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Org 100H
СЛОЖЕНИЕ ДВУХ ЧИСЕЛ И ЗАПИСЬ РЕЗУЛЬТАТА В ЯЧЕЙКУ ОПЕРАТИВНОЙ ПАМЯТИ
Требуется сложить два числа, 4СН и 2ВН и полученную сумму поместить в оперативную памяти по адресу 10Н.
ORG 100H; задание расположения начала программы в ОП MVI A, 00H; обнуление аккумулятора ADI 4CH; запись первого слагаемого в аккумулятор ADI 2BH; сложение первого слагаемого со вторым LXI H, 0010H; запись адреса ячейки ОП в регистровую память Н MOV M, A; копирование содержимого аккумулятора в ОП END; указание транслятору прекратить работу.
ПРОГРАММИРОВАНИЕ РАЗВЕТВЛЕНИЙ
Пусть требуется проанализировать содержимое младшего разряда числа, хранящегося в регистре В.Если оно равно нулю,, то к содержимому регистра В следует прибавить содержимое регистра С; если оно равно единице, то к содержимому регистра В следует добавить содержимое регистра D. Программа, реализующая эту задачу, представлена ниже ORG 100H MVI C, 13H; MVI B, 12H; MVI D, 14H; MOV A, B; RAR; (циклический сдвиг вправо, младший разряд содержимого; аккумулятора пересылается в триггер Тс) JC METKA; MOV A, C; ADD B; JMP KON; METKA: MOV A, D; ADD B; KON: MOV B, A; END ЦИКЛЫ Часто при программировании приходится многократно повторять одинаковые операции.Один из способов сокращения размеров программы, а иногда возможности програмирования задачи – это организация циклов. Пусть необходимо умножить число 5 на число 2 и поместить результат в ячейку ОП по адресу 10Н. Поскольку система команд ассемблера I8080 не содержит команд арифметического умножения, поставленную задачу будем решать, испoльзуя команды арифметического сложения столько раз, сколько необходимо для получения правильного результата. ORG 100H ADI 00H ADI 02H ADI 02H ADI 02H ADI 02H ADI 02H LXI H, 0010H MOV M, A END Однако такое, самое простое решение в общем случае реализовать нель-зя. Тут нужен другой подход. И одним из таких подходов является использование цикла. Пусть требуется организовать умножение Х на У, (где Х и У -- целые положительные четырехразрядные двоичные числа). Тогда ORG 100H MVI D, X MVI C, Y MVI A, 0 UMN: ADD D DCR C JNZ UMN LXI H, 0010H MOV M, A END CИНХРОННЫЙ И АСИНХРОННЫЙ ВВОД-ВЫВОД
ОРГАНИЗАЦИЯ АСИНХРОННОГО ВВОДА
Пусть датчик готовности сигнализирует о начале работы периферийного устройства, подсоединенного к порту ввода с адресом 15Н. Перифериийное устройство в данном случае генерирует двоичный семиразрядный код для регистров D0—D6 порта ввода с адресом 15Н. Нужно организовать опрос порта 15Н и по появлению сигнала готовности периферийного устройства(единица в разряде D7) организовать запуск программы обслуживания. ORG 100H CIKL: IN 15H; MOV B, A; RRC; JNC CIKL; MOV A, B; . .
|