- •Основы микропроцессорной техники и прикладное программирование Лабораторная работа 4. Изучение принципов ввода информации в управляющую микроЭвм сканирующего типа
- •Теоретическая часть
- •Принцип сканирования в современных управляющих системах
- •Методы ввода информации в микроЭвм
- •2. Порядок выполнения работы.
- •2.1. Программа In_Scan. Структура и принцип работы. Внесение изменений
- •Компилирование и линкирование исходного файла программы In_Par
- •2.3. Подготовка файла входных переменных
- •Подготовка командных файлов управления
- •0800H (изменить расположение сегмента данных ds)
- •3. Отладка программы с помощью симулятора avsim85
- •Часть 4. Анализ полученных результатов и оформление
- •Система команд мп кр1821вм85а
- •Продолжение таблицы
2. Порядок выполнения работы.
Работа выполняется в следующей последовательности:
1. Изучение структуры и принципов функционирования программы In_Param, Внесение в её исходный файл изменений, соответствующих индивидуальному заданию;
2. Ассемблирование отредактированного исходного файла в среде ассемблера Аsm85. Получение объектного файла и файла протокола.
3. Подготовка данных, моделирующих потоки параметров непрерывных процессов. Их преобразование в формат ххх.dat, для обработке на программном имитаторе AVSIM85
4. Изучение принципов построения командных файлов управления средой AVSIM85. Внесение изменения в типовой командный файл In_Par.cmd применительно к индивидуальному заданию
5. Отладка программы с помощью симулятора AVSIM85 и исследование принципов взаимодействия функциональных блоков микроЭВМ и МП I8085A (1821ВМ85) при реализации процедуры безусловного программного ввода.
6. Анализ полученных результатов и оформление отчета.
2.1. Программа In_Scan. Структура и принцип работы. Внесение изменений
Этап 1. Изучение программы In_Param.
Исходным является текст программы, написанный на языке Ассемблер ASM85.
Такой текст существует в виде файла In_Param.asm. Текст файла.
; Программа In_Param для ввода отсчетов Xij процессов Process0,
; Process1, Process2, Process3 в микроЭВМ для хранения и обработки
;---------------------------------------------------------------------------------------------------
org 200H ; начальный адрес программы
baze0 equ 0800h ; начальный адрес первой строки x0j (j=0÷7)
; массива Xij (i=0÷3; j=0÷7)
baze1 equ baze0+08h ; начальный адрес второй строки x1j (j=0÷7)
; массива Xij (i=0÷3; j=0÷7)
baze2 equ baze0+10h ; начальный адрес третьей строки x2j (j=0÷7)
; массива Xij (i=0÷3; j=0÷7)
baze3 equ baze0+18h ; начальный адрес третьей строки x3j (j=0÷7)
; массива Xij (i=0÷3; j=0÷7)
offset equ 0000h ; смещение
;---------------------------------------------------------------------------------------------------
lxi b,offset ; смещение элемента в строке
vvod: lxi h,baze0 ; инициализация регистра базы первой строки
dad b ; исполнительный адрес очередного элемента первой
; строки
in 00h ; ввод очередного элемента первой строки
mov m,a ; очередной элемент первой строки – сохранить
lxi h,baze1 ; инициализация регистра базы второй строки
dad b ; исполнительный адрес очередного элемента первой
; строки
in 01h ; ввод очередного элемента второй строки
mov m,a ; очередной элемент первой строки – сохранить
lxi h,baze2 ; инициализация регистра базы третьей строки
dad b ; исполнительный адрес очередного элемента первой
; строки
in 02h ; ввод очередного элемента третьей строки
mov m,a ; очередной элемент третьей строки – сохранить
lxi h,baze3 ; инициализация регистра базы четвертой строки
dad b ; исполнительный адрес очередного элемента четвертой
; строки
in 03h ; ввод очередного элемента четверто строки
mov m,a ; очередной элемент четвертой строки – сохранить
inx b ; index+1, смещение для очередного элемента
mov a,c ; счетчик циклов в ACC
ana a ; флаг переноса в ноль
cpi 08h ; циклы все?
jc vvod ; ввод окончен? Если нет – повторить
nop
end
На этом этапе работы необходимо проанализировать текст программы и разобраться с её функционированием.
Программа использует косвенную адресацию со смещением для адресации ячеек оперативной памяти, в которых сохраняются отсчеты сканируемых процессов. Исполнительный адрес j-го элемента i-ой строки (i=0÷3; j=0÷7) формируется путем сложения базового адреса bazei строки со смещением j (offset). элемента в строке, т.е. bazi+j.
Для хранения и модификации исполнительного адреса на ассемблерном уровне используется регистровая пара HL. Она же используется как указатель для косвенной регистровой адресации соответствующей ячейки области ОЗУ, выделенной для хранения массива отсчетов. Для хранения и модификации смешения используется регистровая пара ВС.
На ассемблерном уровне формирование исполнительного адреса очередного элемента xij обеспечивается путем сложения (HL) +(BC), выполняемое командой dad b . Она формально описывается, как (HL)← (HL) +(BC). Заполнение массива выполняется по столбцам по схеме x0j → x1j→ x2j → x3j (j=0÷7).
Программа имеет циклический характер. Первый цикл обеспечивает заполнения первого столбца матрицы ||X|| отсчетами x00 → x10→ x20 → x30. Затем реализуются еще семь циклов для заполнения оставшихся столбцов .
Контролируется запоминание последнего отсчета процесса Process3. Это осуществляется командой сравнения сравнения cpi 08h. Она возвращает активный признак C (carry), если выполнено восемь циклов. Выход из цикла обеспечивается командой условного перехода JC vvod.
В случае необходимости, можно протестировать текст базовой программы в отладчике AVSIM85.
Этап 2. Внесение изменений в текст программы в соответствии с заданием.
На этом этапе необходимо:
Разместить программу в заданном кодовом сегменте CS
Выделить в заданном сегменте данных массив для сохранения отсчетов процессов Process0, Process1, Process2, Process3.
Изменение положения программы в CS обеспечивается директивой ORG.
Указав в поле операнд/адрес директивы ORG начальный адрес программы, можно обеспечить компилирование программных кодов с указанного адреса. Например, первый байт первой команды , базового варианта программы In_Param размещается по адресу 0200h (ORG 0200h).
;---------------------------------------------------------------------------------------------------
org 200H ; начальный адрес программы
baze0 equ 0800h ; начальный адрес первой строки x0j (j=0÷7)
; массива Xij (i=0÷3; j=0÷7)
и т.д.
Далее необходимо выделить в DS массив для хранения 32 отсчетов
процессов Process0, Process1, Process2, Process3.
Для этого составляется следующая таблица базовых адресов.
Таблица 1 – Разбиение адресного пространства DS
Назначение ячеек |
Начальный–конечный адрес |
Объем (байт) |
DS.Строка 1 матрицы Xij (i=0; j=0÷7) |
0800h – 0807h |
8 |
DS.Строка 2 матрицы Xij (i=1; j=0÷7) |
0808h –080fh |
8 |
DS.Строка 3 матрицы Xij (i=2; j=0÷7) |
0810h –0817h |
8 |
DS.Строка 4 матрицы Xij (i=3; j=0÷7) |
0818h –081fh |
8 |
В таблице приведены данные характерные для базовой программы In_Par. Базовые адреса должны быть изменены применительно к заданному адресному пространству.
Далее составляется 2D–модель адресного пространства системы.
Для базовой программы она имеет следующий вид (Рисунок 7).
Таблицу 1 и рисунок 7 применительно к своим данным необходимо включить в отчет по лабораторной работе.
Далее, руководствуюсь данными Таблицы1, необходимо внести изменения в текст базовой программы In_Par.asm с целью ее адаптации к адресному пространству данных. Для этого в блоке инициализации необходимо изменить базовый адрес baze0 ( выделен красным)
baze0 equ 0800h ; начальный адрес первой строки x0j (j=0÷7)
; массива Xij (i=0÷3; j=0÷7)
baze1 equ baze0+08h ; начальный адрес второй строки x1j (j=0÷7)
; массива Xij (i=0÷3; j=0÷7)
baze2 equ baze0+10h ; начальный адрес третьей строки x2j (j=0÷7)
; массива Xij (i=0÷3; j=0÷7)
baze3 equ baze0+18h ; начальный адрес третьей строки x3j (j=0÷7)
; массива Xij (i=0÷3; j=0÷7)