Яковлев Л.А., Тимченко В.И. Вычислительная техника. Методические указания к лабораторным работам - файл n1.docx

Яковлев Л.А., Тимченко В.И. Вычислительная техника. Методические указания к лабораторным работам
скачать (298.5 kb.)
Доступные файлы (1):
n1.docx299kb.07.07.2012 02:54скачать

n1.docx

1   2   3   4   5   6   7   8

Ниже приведен включаемый файл init.asm, который содержит стандартные команды формирования таблицы векторов прерывания и инициализации системы:

; таблица векторов прерывания, занимающая 40h ячеек памяти

 

JMP

INIT

; переход при RST0 --? RESET

 

ds

5

; резервирование памяти

 

JMP

M1

; переход при RST1

 

ds

53

; резервирование памяти

INIT

LXI

SP,Stack

; задание вершины стека

 

EI

 

; разрешение прерываний

 

JMP

BEGIN

; переход к основной программе

Программа init.asm носит общий характер и, например, для данного конкретного расчета, в котором не используются прерывания, может быть другой.

Включаемый файл stack.asm , который резервирует память под стек, следующий:

ds      20

; резервирование ячеек под стек

stack

; вершина стека (стек "распространяется" в сторону

 

; меньших адресов

 

3.4. Задание на работу в лаборатории

3.4.1. Подготовка программы для выполнения в имитаторе
(исполняемой программы)


1. Скопируйте в свой рабочий директорий программы:

avmac85.exe

 

транслятор,

avlink.exe

 

компоновщик,

avsim85.exe
setcolor.exe
avsim85.hlp
avsim85.ovr
avsim85.reg


}

файлы программы имитатора,

iotran.exe

 

файл, используемый при подготовке входных данных,

init.asm
stack.asm


}

файлы, включаемые в исходный текст,

testr3.lnk

 

пример командного файла компоновки,

testr3.bat
testr3.cmd


}

примеры командных файлов для работы с имитатором.

2. Наберите текст подготовленной программы в соответствии со своим вариантом задания. Следует обратить внимание на то, что программа должна записываться в соответствии с определенными формальными правилами, которые изложены здесь, на страницах 4 - 6.

3. Для трансляции программы наберите команду

avmac85     <имя программы>     si allpublic

В результате трансляции должны появиться файлы с расширениями *.obj (объектный файл) и *.prn (листинг трансляции). Если листинг не содержит сообщений об ошибках, можно переходить к следующему пункту, в противном случае необходимо исправить все ошибки в исходном файле.

4. Для компоновки программы подготовьте командный файл компоновки. В качестве образца можно использовать файл testr3.lnk:

testr3=testr3.obj

-SYMBOLS

-START(M,0H)

Скопируйте этот файл под своим именем и замените в первой строке имена тестовых файлов testr3 на имена своих объектного и выходного файлов.

Для компоновки программы наберите команду

avlink @<имя командного файла компоновки>

В результате компоновки должны появиться файлы с расширениями *.hex (исполняемый файл, содержащий коды команд в 16-ричной системе), *.map (таблица компоновки) и *.sym (таблица использованных символов для имитатора).

3.4.2. Подготовка файла входных переменных

Файл с входными данными - значениями входной переменной xi можно получить следующим образом.

1. Наберите команду редактирования нового файла ShiftF4 и введите имя нового файла indat.ad.

2. Наберите значения вводимых чисел в десятичной системе, т.е. в обычной форме (отрицательные числа со знаком). Числа разделяются либо пробелом, либо переводом строки (Enter). Вводимые числа должны содержать значения, использованные для тестового контроля.

3. Сохраните сформированный файл и выйдите из редактора (F2, Esc).

4. Наберите команду

iotran db indat.ad indat.dat

5. Проверьте содержимое сформированного файла indat.dat , нажав клавиши F3, F4. Файл должен содержать в 16-ричной форме значения входной переменной xi.

3.4.3. Загрузка и выполнение программы в имитаторе

1. Подготовьте командные файлы для загрузки программы в имитатор и настройки имитатора для ее выполнения. Для этого скопируйте под своим именем (оставив старые расширения) файлы testr3.bat и testr3.cmd, тексты которых приведены ниже.

Файл testr3.bat

avsim85.exe -c1 A F Ltestr3.cmd

Файл testr3.cmd

latestr3

IOindat.dat

Y

OI:1h,IN

IO

outdat.dat

OI:2h,OUT

Измените в первых строках этих файлов символы testr3 на имя своего файла. Имя необходимо вставить без добавления пробелов. Эти файлы представляют собой записанную последовательность команд имитатора. Эти команды можно вводить и непосредственно после загрузки программы имитатора.

В файле testr3.bat записаны команды:

Напомним, команды в имитаторе вводятся первыми буквами соответствующих слов-команд, которые можно увидеть и выделить курсором в командной строке имитатора.

Командный файл содержит следующие команды:

2. Запустите имитатор и загрузите в него свою программу. Для этого наберите в командной строке команду:

avsim85 -c1 A

и после запуска имитатора загрузите программу, набрав команды L, A и затем имя файла программы без расширения.

4. Для проверки и отладки программы выполните несколько циклов программы по шагам. Входные данные (x) введите вручную. На экран выводятся порты ввода/вывода с адресами 0 - 3 (рис. 3.1). Перед выполнением команды ввода необходимо в окно порта ввода (I:1) ввести соответствующие значения x в двоичной или 16-ричной системе счисления. После выполнения команды вывода вычисленное значение y будет выведено в окно порта вывода (I:2).

http://dvo.sut.ru/libr/tcos/i200yakt/3-1.gif

Для проверки правильности работы программы и поиска возможных ошибок необходимо после выполнения каждой команды сопоставлять реальный результат ее работы с ожидаемым. Например, необходимо контролировать, правильно ли произошел переход к выражению для вычисления y при введенном значении x (переход к правильной ветви разветвления), правильны ли результаты выполнения арифметических действий и т.д.

При наличии расхождений с ожидаемыми результатами необходимо найти ошибки в программе и их исправить. Следует также напомнить, что числа выводятся в дополнительном коде (при этом отрицательные числа отличаются от чисел в прямом коде).

5. Выйдите из имитатора и загрузите исполняемую программу и командный файл, который производит подсоединение файлов данных. Для этого наберите команду:

<имя файла>.bat

После ввода этой команды имитатор готов к работе.

6. Проконтролировать правильность подключения файлов данных можно, набрав последовательно команды:

V - просмотр режимов, подключений, точек останова и т.д.,

I - просмотр файлов ввода/вывода.

7. Выполните программу в автоматическом режиме, нажав клавишу F1. Выйдите из программы имитатора, набрав команды Q и E.

8. Найдите полученный файл с выходными данными outdate.dat , просмотрите полученные результаты и проверьте их правильность, сравнив с данными, рассчитанными вручную. Для этого необходимо перейти в режим просмотра содержимого файла в 16-ричной системе (клавиши F3 и F4). Первое число в выходном файле, равное 0, не является величиной, полученной в результате выполнения конкретной программы. Оно записывается в файл сразу после открытия при выполнении любой программы.
Количество вычисленных значений функции y должно быть равно количеству значений N аргумента x. При наличии расхождений с подготовленным тестом необходимо устранить ошибки. Следует также напомнить, что числа выводятся в дополнительном коде (при этом отрицательные числа отличаются от чисел в прямом коде). Можно произвести преобразование полученных данных из дополнительного кода в обычное десятичное представление числа со знаком, набрав команду:

iotran bd outdat.dat outdat.da

7. Продемонстрируйте результаты работы преподавателю.

Содержание отчета

Отчет должен содержать:

Лабоpатоpная pабота 4

Программная реализация конечных автоматов

4.1. Цель работы

Изучение методов программной реализации конечных автоматов (счетчиков). Закрепление навыков по составлению и отладке программ на языке ассемблера.

4.2. Порядок выполнения работы

4.3. Алгоритмы программной реализации счетчика

На практике используются различные алгоритмы программной реализации счетчиков, каждый из которых может иметь свои достоинства и недостатки. Рассмотрим два варианта.

На рис. 4.1 приведена схема алгоритма реализации суммирующего счетчика с произвольным начальным состоянием; при этом использованы следующие обозначения Q0 начальное состояние счетчика QN конечное состояние счетчика С регистр в котором хранится состояние счетчика. Изменение состояния производится путем инкремента содержимого регистра до тех пор, пока не будет достигнуто конечное состояние QN; по достижении конечного состояния QN устанавливается начальное состояние Q0. Для реализации вычитающего счетчика вместо инкремента используется декремент. На рис. 4.1 приведен алгоритм изменения состояния счетчика. Для того чтобы получить циклическое изменение состояния счетчика, необходимо действия, отображенные в схеме, тем или иным способом циклически повторять.

Данный алгоритм реализации счетчика имеет два недостатка. При случайных сбоях под действием помех в системе (помехи присутствуют в любой системе) состояние счетчика может выйти за пределы допустимых значений. По прошествии некоторого времени после сбоя нормальное функционирование счетчика восстановится. С этим бороться достаточно трудно (необходимо проводить проверки допустимости состояния счетчика на каждом шаге после каждого изменения его состояния).

http://dvo.sut.ru/libr/tcos/i200yakt/4-1.gif

В нормально функционирующем автомате (в случае если время выполнения программы определяет период работы автомата) время выполнения программы должно быть одинаково при любых изменениях состояния счетчика т.е. должно быть одинаково время прохождения по обеим ветвям схемы рис. 4.1. Так как отдельные команды отличаются временем выполнения, требуется вставка пустых специальных команд для выравнивания ветвей.

При программной реализации различных устройств цифровой техники широкое распространение находит табличный метод, в частности его можно использовать счетчика для реализации счетчика. Идея метода (для реализации счетчика) состоит в следующем. В таблицу, записанную в память, заносят в нужной последовательности все возможные состояния счетчика. Записанные состояния циклически из памяти считываются. При такой реализации недостатки, отмеченные выше, отсутствуют.

Схема алгоритма реализации изменения счетчика табличным методом приведена на рис. 4.2.

http://dvo.sut.ru/libr/tcos/i200yakt/4-2.gif

4.4. Реализации изменения состояния счетчика
табличным методом


Табличный метод программной реализации счетчика предусматривает формирование в памяти системы таблицы, в которой по адресу соответствующему текущему состоянию находится число, соответствующее следующему состоянию. При таком методе легко строить счетчики с произвольным порядком смены состояний, как и с естественным. Разрядность системы должна быть не меньше требуемой разрядности счетчика.

Таблица 4.1

Адрес ячейки

Содержимое

4

7

5

4

6

5

7

9

8

6

9

9

Пусть требуется реализовать счетчик со следующим набором и порядком смены состояний 4 7 9 8 6, 5. После последнего состояния 5 состояния 4, 7 и т.д. должны повторятся. Тогда в памяти надо иметь таблицу смены состояний (табл. 4.1), которая строится следующим образом: по адресу, совпадающему с текущим состоянием, находится следующее состояние. Циклически выбирая содержимое ячейки, адрес которой соответствует текущему состоянию можно получать следующее состояния. Для того чтобы можно было разместить таблицу в произвольном месте памяти адреса ячеек необходимо сместить на некоторую постоянную величину NAT - начальный адрес таблицы. Следовательно, в памяти при этом должна быть табл. 4.2.

Таблица 4.2

Адрес ячейки

Содержимое

NAT+4

7

NAT+5

4

NAT+6

5

NAT+7

9

NAT+8

6

NAT+9

9

Схема алгоритма реализации изменения состояния счетчика табличным методом приведена на рис. 4.2. Для обращения к строкам таблицы используется метод косвенной адресации, в соответствии с которым в качестве адреса операнда (адреса ячейки памяти, к которой идет обращение) используется содержимое регистровой пары HL. Программа реализации счетчика с комментариями приведена ниже. Номера символов, приводимые в программе, соответствуют номерам рис. 4.2.

Текущее состояние счетчика находится в регистре С.

Ниже приведена программа реализации изменения состояния счетчика.

* Символ 1

* Загрузка в пору регистров HL начального адреса таблицы

LXI H,NAT

* Символ 2

MVI B,0 загрузка 0 в регистр B

* Для получения NAT+Q используется сложение содержимого пар регистров

* с помощью команды DAD (HL)+(BC)->HL. Так как при сложении в общем

* случае может возникнуть перенос между H и L такое сложение более

* предпочтительно чем сложение (L)+( C) командой ADD. В этом случае можно

* использовать любое * значение NAT.

DAD B

* Символ 3

MOV A,M выборка содержимого ячейки с адресом NAT+Q

* Символ 4

MOV C,A ; запись в С нового состояния счетчика

Формирование таблицы со значениями состояний счетчика на языке ассемблера производится с помощью директивы db по адресу NAT. Первые 4 ячейки должны быть пустыми, так как состояния 0 1 2 3 отсутствуют среди используемых состояний.

* Таблица состояний счетчика

NAT:

db         0

db         0

db         0

db         0

db         7

db         4

db         5

db         9

db         6

db         8

Таблица состояний счетчика должна быть помещена в конце программы после всех команд. Для циклического изменения состояния счетчика команды приведенной программы необходимо циклически повторять.

4.5. Реализация временной задержки

Временная задержка при выполнении некоторых фрагментов программы необходима для выполнения определенных условий вывода/ввода сигналов. Например, при реализации счетчика – для выполнения смены состояния счетчика с определенной частотой.

Временная задержка обычно реализуется путем выполнения программы, не имеющей содержательного смысла. Это могут быть пустые команды типа NOP или циклическое повторение заданного количества команд (циклов команд). Количество повторений определяется начальным значением счетчика, который контролирует число повторений. Время выполнения такой программы и определяет формируемую задержку. Для организации больших задержек необходимо использовать счетчик на регистровой паре, в который можно загрузить двухбайтовое начальное значение. Ниже приведен пример такой программы.

*Реализация временной задержки.
* Формируемая задержка определяется временем выполнения циклической
* программы, при каждом повторении которой содержимое пары регистров HL
* уменьшается на 1.
M3:
*занесение константы, определяющей длительность задержки в регистровую
*пару HL


 

LXI

H,DEL

 

M4:

 

 

 

 

NOP

 

; пустые команды, вставляемые в цикл для увеличения

 

NOP

 

; времени выполнения программы

 

NOP

 

 

 

DCX

H

; декремент содержимого пары регистров HL

 

MOV

A,L

; Так как команда DCX признаков не вырабатывает, для

*

 

 

; получения признака Z (признака равенства нулю; содержимого

*

 

 

; пары регистров HL) для команды условного перехода

 

ORA

H

; используются команды MOV и ORA

 

JNZ

M4

 

В качестве “пустых” команд можно использовать разные команды, примеры которых приведены в табл. 4.3.

Таблица 4.3

Команда

Число тактов выполнения

Комментарий

NOP

4

Пустая операция

MOV A,A

5

Пересылка А<– A

ORI 00

7

Логическое сложение с 00

OUT 00

10

Вывод в несуществующий порт
1   2   3   4   5   6   7   8


Учебный материал
© nashaucheba.ru
При копировании укажите ссылку.
обратиться к администрации