Лабораторная работа №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, с циклическим сдвигом индикации. Данная система не требует программной регенерации дисплея
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.