Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.
Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.
Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.
Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.
Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.
Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.
Лабораторная работа №3
Работа с библиотекой стандартных подпрограмм и изучение возможностей вывода на индикатор контроллера «Электроника МС2721»
Цель работы: Изучить назначение, состав и принципы работы с библиотекой стандартных подпрограмм. Изучить принципы вывода информации на индикатор и принципы перекодировки данных для индикации.
Назначение и условия применения.
Библиотека подпрограмм с плавающей запятой состоит из 18 подпрограмм, по которым производятся 4 арифметических операции со знаком [+] или [-], вычисляются тригонометрические функции, вычисляются факториал, показательная функция и логарифмическая функция.
Имеется также 9 обслуживающих подпрограмм, которые обеспечивают работу основных.
Библиотека подпрограмм с плавающей запятой рассчитана на диапазон изменения чисел от 0,5867*10-38 до 0,1704*1039. Для работы библиотеки необходим объем ЗУ с произвольным обращением – 31 байт; глубина использования стэка – не более 20 байт.
Входные и выходные данные.
Целое число в библиотеке подпрограмм – это однобайтное или двухбайтное число (старший байт - знаковый), представленное в прямом коде, у двухбайтного числа 14-й бит – бит переполнения.
Целое число имеет следующий формат:
7 |
… |
… |
… |
… |
… |
… |
0 |
знак
15 |
14 |
… |
… … … … … … … … … … |
… |
0 |
знак переполнение если число больше нуля, то знаковый бит равен 0, иначе - 1
Экспоненциальная форма записи:
знак порядка |
порядок |
знак мантиссы |
поле переполнения |
мантисса |
Максимальное число без потери точности: 16383 – 0,1638*105 .
Трехбайтовая область:
23 |
… … … |
15 |
… … … |
7 |
… … … … … … … … … |
0 |
поле порядка поле старшего поле младшего байта мантиссы
байта мантиссы
Информация на дисплее:
|
||||||||||||
Библиотека
подпрограмм:
## |
Метка |
Точка входа |
Операнды |
Описание |
1 |
ADXAR |
0F2CH |
XAR1 – Слагаемое 1 XAR2 – Слагаемое 2, результат |
Сложение однобайтовых чисел с фиксированной запятой и со знаком |
2 |
ADMAN |
0FC0H |
MANS1 – Слагаемое 1 MANM1 MANS2 – Слагаемое 2, MANM2 результат |
Сложение двухбайтных чисел с фиксированной запятой и со знаком |
3 |
ADNUM |
106AH |
XAR1 – Слагаемое 1 MANS1 MANM1 XAR2 – Слагаемое 2, MANS2 результат MANM2 |
Сложение чисел с плавающей запятой |
4 |
MUMAN |
1077H |
MANS1 – множитель 1 MANM1 MANS2 - множитель 2, MANM2 результат |
Умножение двухбайтовых чисел со знаком и фиксированной запятой |
5 |
MUNUM |
10CFH |
XAR1 – множитель 1 MANS1 MANM1 XAR2 - множитель 2, MANS2 результат MANM2 |
Умножение чисел с плавающей запятой |
6 |
SUMAN |
10DCH |
MANS2 – делимое, MANM2 частное MANS1 - делитель MANM1 |
Деление двухбайтовых чисел с фиксированной запятой |
7 |
SUNUM |
1152H |
XAR2 – делимое, MANS2 частное MANM2 XAR1 - делитель MANS1 MANM1 |
Деление чисел с плавающей запятой |
8 |
FACTOR |
117BH |
A -исходное значение XAR5 - результат MANS5 MANM5 |
Вычисление факториала, до 7 |
9 |
SIN |
136AH |
XAR8 - аргумент MANS8 MANM8 MAR3 - результат MANS3 MANM3 |
Вычисление синуса угла |
10 |
COS |
1415H |
XAR8 - аргумент MANS8 MANM8 MAR3 - результат MANS3 MANM3 |
Вычисление косинуса угла |
Адреса переменных
переменная |
адрес |
переменная |
адрес |
переменная |
адрес |
XAR1 |
1880H |
MANS1 |
1881H |
MANM1 |
1882H |
XAR2 |
1883H |
MANS2 |
1884H |
MANM2 |
1885H |
XAR5 |
1886H |
MANS5 |
1887H |
MANM5 |
1888H |
XAR8 |
1870H |
MANS8 |
18871H |
MANM8 |
1872H |
Программа вывода на экран даты рождения
1900 |
TABLE: |
06 |
; |
Цифра 1 |
|||
1901 |
4F |
; |
Цифра 3 |
||||
1902 |
06 |
; |
Цифра 1 |
||||
1903 |
06 |
; |
|
||||
1904 |
06 |
; |
Цифра 1 |
||||
1905 |
67 |
; |
Цифра 9 |
||||
1906 |
FF |
; |
Цифра 8 |
||||
1907 |
3F |
; |
Цифра 0 |
||||
1908 |
START: |
21 00 19 |
LXI H,1900H |
; |
загрузка стартового адреса данных |
||
190B |
06 08 |
MVI B,08H |
; |
загрузка счетчика |
|||
190D |
M1: |
7E |
MOV A,M |
; |
загрузка числа для вывода |
||
190E |
D3 E4 |
OUT E4 |
; |
вывод числа |
|||
1910 |
23 |
INX H |
; |
инкремент адреса данных |
|||
1911 |
05 |
DCR B |
; |
декремент счетчика |
|||
1912 |
78 |
MOV A,B |
; |
проверка |
|||
1913 |
E6 FF |
ANI FFH |
; |
не занулился ли счетчик |
|||
1915 |
C2 0D 19 |
JNZM1 |
; |
и не пора ли закончить вывод |
|||
1918 |
76 |
HLT |
; |
останов если конец |
Программа поиска и вывода на экран таблицы перекодировки
1900 |
TABLE: |
3F |
; |
Цифра 0 |
|
1901 |
06 |
; |
Цифра 1 |
||
1902 |
5B |
; |
Цифра 2 |
||
1903 |
4F |
; |
Цифра 3 |
||
1904 |
66 |
; |
Цифра 4 |
||
1905 |
START: |
21 00 00 |
LXI H,0000H |
; |
Установка счетчика адреса |
1908 |
M2: |
11 00 19 |
LXI D,1900H |
; |
Адрес образца начала таблицы перекодировки |
190B |
M3: |
EB |
XCHG |
; |
Обмен между парами |
190C |
7E |
MOV A,M |
; |
Считываем в аккумулятор содержимое памяти |
|
190D |
EB |
XCHG |
; |
Обмен между парами |
|
190E |
BE |
CMP M |
; |
Сравниваем с образцом |
|
190F |
CA 16 19 |
JZ M1 |
; |
Если совпало – проверка следующего адреса |
|
1912 |
23 |
INX H |
; |
Иначе – переход к сл. адресу с проверкой на |
|
1913 |
C3 08 19 |
JMP M2 |
; |
Совпадение начиная с первого элемента |
|
1916 |
M1: |
23 |
INX H |
; |
Увеличиваем адрес на единицу |
1917 |
13 |
INX D |
; |
Переходим к сл. сравниваемому символу |
|
1918 |
7B |
MOV A,E |
; |
||
1919 |
FE 05 |
CPI 05H |
; |
Если уже сравнили 5 цифр – адрес |
|
191B |
C2 0B 19 |
JNZ M3 |
; |
таблицы найден! |
|
191E |
2B |
DCX H |
; |
Регистр HL содержит адрес начала таблицы |
|
191F |
2B |
DCX H |
; |
Перекодировки |
|
1920 |
2B |
DCX H |
; |
||
1921 |
2B |
DCX H |
; |
||
1922 |
2B |
DCX H |
; |
||
1923 |
E5 |
PUSH H |
; |
Копирование пары HL в пару DE |
|
1924 |
D1 |
POP D |
; |
||
1925 |
7C |
MOV A,H |
; |
Потетрадное выделение цифр найденного |
|
1926 |
E6 F0 |
ANI F0H |
; |
адреса и последолвательный выаод на |
|
1928 |
0F |
RRC |
; |
дисплей |
|
1929 |
0F |
RRC |
; |
||
192A |
0F |
RRC |
; |
||
192B |
0F |
RRC |
; |
||
192C |
CD 40 19 |
CALL DISP |
; |
||
192F |
7C |
MOV A,H |
; |
||
1930 |
E6 0F |
ANI 0FH |
; |
||
1932 |
CD 40 19 |
CALL DISP |
; |
||
1935 |
7D |
MOV A,L |
; |
||
1936 |
E6 F0 |
ANI F0H |
; |
||
1938 |
0F |
RRC |
; |
||
1939 |
0F |
RRC |
; |
||
193A |
0F |
RRC |
; |
||
193B |
0F |
RRC |
; |
||
193C |
CD 40 19 |
CALL DISP |
; |
||
193F |
7D |
MOV A,L |
; |
||
1940 |
E6 0F |
ANI 0FH |
; |
||
1942 |
CD 40 19 |
CALL DISP |
; |
||
1945 |
76 |
HLT |
; |
||
1946 |
DISP: |
83 |
ADD E |
; |
Подпрограмма вывода на дисплей |
1947 |
5F |
MOV E,A |
; |
Определение адреса в таблице перекодировки |
|
1948 |
1A |
LDAX D |
; |
Загрузка в аккумулятор кода символа |
|
1949 |
D3 E4 |
OUT E4H |
; |
Выставление кода символа на дисплей |
|
194A |
E5 |
PUSH H |
; |
Установка DE на начало таблицы |
|
194C |
D1 |
POP D |
; |
||
194D |
C9 |
RET |
; |
возврат |
Найденный адрес: 0E79h
Заключение: библиотека подпрограмм контроллера «Электроника МС2721» позволяет придать микропроцессорным системам на его основе необходимую гибкость и универсальность при решении различного рода задач, а также возможность работать с действительными числами. Система индикации, построенная на основе контроллера клавиатуры и дисплея, обладает рядом преимуществ перед системами с прямым подключением индикаторов к линиям ППА (УМК) – в данном случае производится побайтовый (один знак) ввод информации в порт E4h, с циклическим сдвигом индикации. Данная система не требует программной регенерации дисплея
Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.
Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.
Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.
Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.
Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.
Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.