Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВТиТ_лекции.doc
Скачиваний:
33
Добавлен:
15.03.2015
Размер:
886.78 Кб
Скачать

ГОУ ВПО СПб ГУТ им. проф. М.А. Бонч-Бруевича

2012 г.

Распределение времени на изучение дисциплины:

Лекции: 28час, лабораторные занят. – 22час., курсовая работа – 6час.

Отчетность: Зачет и защита курсовой работы с оценкой.

Лекция №1: Общие принципы организации и работы микропроцессорной системы

Учебные вопросы:

1. Структура (архитектура) микропроцессорной системы (МПС).

2. Структура, архитектура однокристального восьмиразрядного микропроцессора (МП) КР580ВМ80.

Литература:

Основнаялитература

1. Цифровая и вычислительная техника. Под ред. Евреинова Э.В М.,. р\св, 1991г.

2. Яковлев Л.А. , Тимченко В.И. «Вычислительная техника»: Методические указания к лабораторным работам СПбГУТ, 2006г.

3. Методические указания по курсовому проектированию по дисциплинам цифровой, вычислительной и микропроцессорной техники. СПбГУТ, 1997г.

4. Гольденберг Л.М. и др. «Цифровые устройства и микропроцессорные системы». Задачи и упражнения. СПбГУТ, 1992г.

Дополнительная литература

1. Белов А.В. Самоучитель разработчика устройств на микроконтроллерах AVR. Наука и техника, СПБ, 2010г. Имеется в продаже (~300руб.) и на сайте интернета.

Вопросы к экзамену:

1.Назначение, структура (архитектура) МПС (с учетом интерфейса шины данных и шины управления).

2. Назначение, структура (архитектура) 8-ми разрядного МП КР580 ВМ80 на примере выполнения команд пересылки данных MOV, MVI.

3. Способы адресации команд МП КР580 ВМ80.

4.Структура команды МП КР580 ВМ80.

5.Назначение, структура (архитектура) 8-ми разрядного МП КР580 ВМ80 на примере выполнения арифметических команд ADD r, ADD M, ADI, SUB r, SUI.

6. Назначение, структура (архитектура) 8-ми разрядного МП КР580 ВМ80 на примере выполнения арифметических команд INR r, INR M, INX rr, DCR r, DCRM, DCX rr.

7. Назначение, структура (архитектура) 8-ми разрядного МП КР580 ВМ80 на примере выполнения команд ввода/вывода данных IN, OUT.

8. Назначение, структура (архитектура) 8-ми разрядного МП КР580 ВМ80 на примере выполнения команд условного и безусловного перехода JMP, JM, JNZ, JZ.

9. Назначение, структура (архитектура) 8-ми разрядного МП КР580 ВМ80 на примере выполнения команд сдвига RRC, RLC и инвертирования CMA; HLT, NOP.

10. Назначение, структура (архитектура) 8-ми разрядного МП КР580 ВМ80 на примере выполнения команд логических операций ANI, ANA M, ANA r, ORA r, ORA M, ORI, XRI, XRA.

11. . Назначение, структура (архитектура) 8-ми разрядного МП КР580 ВМ80 на примере выполнения команд логического сравнения CMP r, CPI.

12. Назначение, структура (архитектура) 8-ми разрядного МП КР580 ВМ80 на примере выполнения команд со стеком LXI SP, SPHL, PUSH, POP.

13. Назначение, структура (архитектура) 8-ми разрядного МП КР580 ВМ80 на примере выполнения команд обращения к подпрограммам CALL, RET.

14. Принцип построения, алгоритм и программа счетчика с произвольным порядком смены состояний.

15. Назначение и структура 2-у направленного ШФ и буферного регистра.

16. Организация прерывания работы микропроцессора: назначение прерываний, сущность выполнения запроса на прерывание, понятие вектора прерывания, классификация прерывания, структура слова прерывания (RIM), команды организации прерывания.

17. Микроконтроллеры: определение, классификация и архитектура.

Задачи:

Алгоритм и программа n-разрядного счетчика с заданными Q0 и QN. и сигналами управления «установка нач.состояния», «останов счетчика» в разрядах аккумулятора Аi и Аj;

Алгоритм и программа счетчика с произвольным порядком смены состояний и сигналами управления «установка нач.состояния», «останов счетчика» в разрядах аккумулятора Аi и Аj;

Алгоритм и программа временной задержки.

1-й учебный вопрос

Структура (архитектура) микропроцессорной системы (МПС)

Определение МПС: комплекс аппаратных и программных средств, которые выполняют определённый набор арифметических и логических операций, таких как: сложение, умножение, сравнение, запись, чтение и другие.

К МПС относят компьютеры, микроконтроллеры и другие цифровые устройства, которые включают программное обеспечение.

Описание операции, которую должна выполнять МПС, называется командой.

Каждая команда кодируется условным обозначением, которое называется кодом операции (КОП).

Исходные данные, которые обрабатываются в МПС, называются операндами.

Пример:

Команда на языке ассемблер MOV B,C; комментарий (B) (C)

Команда в машинном коде 01000001b - 41 h

MOV B,C – команда.

MOV – код операции в мнемонической форме.

B, C – операнды.

Совокупность операций (команд), выполняемых в данной МПС, называется системой команд. В 8-ми разрядном МП свыше сотни команд, в 32-х разрядном МП (персональный компьютер) около1000 команд.

  • Структура и принцип функционирования МПС

Любая МПС включает следующие устройства:

1. Центральный микропроцессор (ЦМП). Он занимается обработкой информации

  1. Запоминающее устройство (ЗУ), которое состоит из оперативного запоминающего устройства (ОЗУ) и постоянно запоминающего устройства (ПЗУ). ОЗУ – энергетически зависящие устройство, т.е. хранит информацию, только пока к нему подается питание. В ПЗУ информация может храниться постоянно.

  2. Устройства ввода, вывода. К ним относятся: клавиатура, мышка, винчестер, дисплей и т.д.

Все устройства соединены между собой шинами, а именно:

  • шина адреса (ША),

  • шина данных (ШД),

  • шина управления (ШУ).

В совокупности перечисленные шины образуют системную магистраль.

Принцип работы МПС состоит в выполнении заранее разработанной программы, которая определяет последовательность выполнения команд (операций).

Выполнение программы осуществляется последовательным считыванием с ЗУ команды, её дешифрированием и выполнением.

Выполнение команды осуществляется в 2 этапа:

  1. Считывание и дешифрирование команды: ЦМП выставляет на шину адреса (ША) адрес очередной выполняемой команды. Этот адрес по ША поступает в ЗУ. Кроме того, в ЗУ по шине управления (ШУ) подается сигнал чтения содержимого ячейки памяти (ЯП). Содержимое ЯП с кодом команды (операции) по шине данных (ШД) поступает в ЦМП .

В ЦМП содержимое ЯП дешифрирования формируются сигналы для выполнения команды

  1. По результатам дешифрирования МП осуществляется выполнение команды.

По окончании выполнения команды на ША выставляется адрес очередной команды и далее выполняется очередная команда.

2-й учебный вопрос

Структура (архитектура) однокристального восьмиразрядного микропроцессора мп580вм80

Определение МП – программно-управляемое устройство, реализуемое на одном или нескольких чипах, которое осуществляет процесс цифровой обработки информации и управление им.

Структура МП

МП состоит из трех блоков:

1. Блок обработки информации ( ).

2. Блок управления ( ).

3. Блок хранения информации ( ).

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

MOV B,C ; (B)←(C)

АЛУ – арифметическое логическое устройство, которое выполняет необходимые арифметические и логические действия над операндами и результат записывает в аккумулятор.

Восьмиразрядный регистр признаков (регистр флагов) необходим для хранения признаков выполнения действий в АЛУ.

7 6 5 4 3 2 1 0

S

Z

0

AC

0

P

1

CY

S – признак отрицательного результата (S=1).

Z – признак нулевого результата (Z=1).

0 – не используется.

AC – признак переноса между полубайтами (АС=1).

Р – признак четного числа единиц в байте результата, т.е. в аккумуляторе (Р=1).

СY – признак переноса старшего разряда результата (СY=1).

Блок управления включает восьмиразрядный регистр команд, предназначенный для хранения КОП-а.

Дешифратор команд дешифрирует КОП и выдает управляющие сигналы на устройство управления.

Устройство управления осуществляет управление процессом выполнения команд.

Блок хранения информации включает шесть восьмиразрядных регистров (регистры общего назначения – РОН) – В, С, D, E, H, L. Они предназначены для временного хранения информации в МП (в КЭШ памяти).

Регистры РОН могут использоваться как по отдельности (восьмиразрядные), так и парами (шестнадцатиразрядные).

Только такие пары регистров могут быть В-С, D-E, H-L .

Указатель стека (SP) – шестнадцатиразрядный регистр, предназначенный для хранения адреса стековой памяти.

Стековая память – выделенная память ОЗУ, в которой реализуется принцип: «первый записал, последний прочитал».

Счетчик команд – шестнадцатиразрядный регистр, предназначенный для хранения адреса выполняемой команды.

Принцип работа мп

Работу МП рассмотрим на примере выполнения команды арифметического сложения.

Команда на языке ассемблера (пользователя):

ADD B; (А)←(А)+(В)

Комнда в машинном коде (микропроцессора):

Команды программы предварительно записаны в ЗУ (ОЗУ или ПЗУ).

Все команды в МП выполняются в два этапа:

  1. выборка (чтение из ЗУ) и дешифрование команды;

  2. выполнение команды.

На первом этапе выполнения команды адрес выполняемой команды, записанной в счетчике команд (PC), под воздействием сигнала управления выставляется на 16-ти разрядную шину адреса (ША) и по ША поступает в ЗУ. В ЗУ ячейка памяти (ЯП) с указанным адресом под воздействием сигналов управления инициализируется на чтение. Содержимое ЯП по шине данных (ШД) поступает в регистр команд и далее на дешифратор команд. Содержимое регистра команд (КОП) хранится в течение выполнения команд. В результате дешифрования команды формируется управляющие сигналы для устройства управления. выполнения команды

На втором этапе осуществляется выполнение команды по микротактам под воздействием сигналов управления. В нашем примере ADD B: содержимое регистра В (РОН) по внутренней шине данных МП поступает в АЛУ, где суммируется с содержимым аккумулятора в АЛУ, т.е. арифметическое сложение содержимого регистров А+В. Результат сложения записывается в аккумулятор. Кроме того, в регистр признаков заносятся признаки выполняемой операции (Z=1, если 0-й результат; S=1, если отрицательное значение результата операции записывается в Ак). После выполнения арифметической операции (в нашем примере) в счетчике команд (PC) будет записан адрес очередной выполняемой команды.

Лекция 2

Система команд восьмиразрядного микропроцессора КР580ВМ80

(Int 8085 или Z80)

Учебные вопросы:

  1. Структура команд и режимы адресации.

  2. Система команд.

  1. Структура команд и режимы адресации.

Команды по занимаемой памяти делятся на:

  1. однобайтные;

  2. двухбайтные;

  3. трёхбайтные.

В однобайтной команде хранится код операции и операнды. Например:

MOV B,C; в регистр В записывается содержимое регистра С: (В)←(С),

где В и С – операнды.

Помни!!!: Код операции (команды), в нашем примере хранится только в 1-м байте любой команды (одно, двух, трех байтной).

В двухбайтной команде: в первом байте записывается код операции и один из операндов (операнда может и не быть), во втором – только операнд.

Примеры двухбайтных команд:

Б1

Б2

OUT A

FB

([FB])←(A). Из аккумулятора пересылаются данные в порт, адрес которого (FB) во 2-м байте команды (Б2).

Где:

OUT – код операции, А – первый операнд и FB – второй операнд.

Из аккумулятора (А) вывести информацию на устройство вывода с адресом FB.

Круглые скобки (…) - содержимое ЯП или устройства вывода/ввода;

Квадратные скобки [..] – адрес ЯП или устройства вывода/ввода.

Б1

Б2

MVI B

7Bh

(В)←7Вh. В регистр В заносится 8-ми разрядная (однобайтная) константа h 16-й системы счисления

.

В трехбайтной команде: в первом байте команды записывается код операции (КОП), во втором и третьем байтах операнды.

Пример:

Б1

Б2

Б3

LDA

7F

8A

(А)←([8A7F]).

Команда чтения из памяти (ЗУ). В аккумулятор записывается информация, которая храниться в ячейке памяти, адрес которой указан во втором и третьем байтах.

Помни!!!!: Только в первом байте любой команды (одно, двух, трех байтной)

записан КОП (код операции).

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

Строка (предложение) делятся на несколько полей, разделенных одним и более пробелами:

  • поле метки;

  • поле мнемоники кода операции;

  • поле операнда;

  • поле комментария.

Таким образом, строка (команда) имеет следующий формат:

[метка] <мнемоника КОП> [операнд] ; [комментарий]

Где […]необязательный элемент конструкции (команды).

<…..> - обязательный элемент конструкции (команды).

Поле метки начинается с первой позиции строки и представляет мнемоническую запись адреса команды.

Поле мнемоники КОП начинается после первого пробела строки и заканчивается одним или более пробелами. Является обязательным в команде (конструкции строки).

Поле операнда определяет информацию, над которой производятся действия.

Поле комментария начинается после символа ; Присутствие поля комментария в команде необязательно. Комментарии не влияют на результат трансляции.

Режимы адресации в МП

В МП используются четыре режима адресации:

  1. Прямая адресация – код адреса в команде является исполнительным адресом обращения к памяти или устройству ввода вывода. Примеры:

STA

79

8F

(A)←([8F79]) .

В аккумулятор заносятся данные из ЯП, адрес которой во 2-м и 3-м байтах команды.

Б1

Б2

IN

8B

(A)←([8B])

В аккумулятор заносятся данные из устройства ввода, адрес которого во 2-м байте команды.

  1. Регистровая адресация – это адресация, при которой операнд содержится в одном из регистров МП.

MOV A,B (A)←(B)

Содержимое 8-ми разрядного регистра В пересылается по внутренней шине данных МП в аккумулятор (А).

  1. Непосредственная адресация – это адресация, при которой операнд находится в самой команде.

Б1

Б2

ADI

7Eh

(A)←(A)+7Eh

Константа во 2-м байте команды (7Eh) складывается с содержимым аккумулятора и результат сложения записывается в аккумулятор.

  1. Регистровая косвенная адресация – это адресация, при которой адрес ячейки памяти с операндом хранится в регистровой паре H-L.

MOV A,M; (A)←([H-L])

В аккумулятор пересылается содержимое ячейки памяти, адрес которой храниться в регистровой паре H-L.

Помни: Скобки (….) обозначают содержимое ячейки памяти или регистра РОН и аккумулятора. Скобки […] адрес ячейки памяти или устройства ввода/вывода.

2-й учебный вопрос

Система команд

Рассмотрим систему команд на языке ассемблера.

Ассемблер - это программа, которая переводит последовательность команд с языка пользователя (ассемблера) в машинный код (код микропроцессора).

Система команд включает в себя следующие группы команд:

  1. Команды пересылки данных.

  2. Команды арифметических операций.

  3. Команды логических операций.

  4. Команды управления (безусловные и условные переходы).

  5. Команды ввода и вывода данных.

  6. Другие (вспомогательные) команды.

1. Команды пересылки данных

    1. регистровая пересылка

Б1

MOV rd, rs

(rd)←(rs).

Где: Б1 – байт команды (команда содержится в 1-м байте ЗУ);

rd – все регистры (B, C, D, E, H, L) и аккумулятор (A);

rs – все регистры (B, C, D, E, H, L) и аккумулятор (A).

Cодержимое регистра rs переносится в регистр rd, при этом содержимое регистра rs остается неизменным.

Пример команды на языке ассемблер:

MOV D, E ; (D)←(E)

    1. пересылка константы

Б1

Б2

MVI r

константа

(r)←< Б2>

r – все регистры (B, C, D, E, H, L) и аккумулятор (A)

Пример команды на языке ассемблер:

MVI B, 8Dh ; (B)←8Dh

В регистр В пересылается константа 8Dh.

    1. загрузка константы в пару регистров

Б1

Б2

Б3

LXI rr

младший разряд, const

старший разряд, const

(rr)←< Б3>< Б2>

rr – регистровая пара (B-C, D-E, H-L; PSW-аккумулятор и регистр признаков).

Б1

Б2

Б3

LXI B

9A

8B

(B-C)←8B9A

Помни!!!: Если в коде операции команды (КОП) присутствует символ Х – команда «работает» с регистровой парой.

Если в коде операции команды (КОП) присутствует символ I – команда «работает» с константой.

Например:

КОП LXI – команда работает с регистровой парой и константой.

    1. косвенная регистровая пересылка данных

Б1

MOV r, M

(r)←([H-L]);

Б1

MOV M , r

([H-L])←(r).

Где: r- аккумулятор и РОН (регистр общего назначения);

М – мнемоническое обозначение регистровой пары H-L, в которой записан адрес ячейки памяти ЗУ;

(..) – содержимое 8- разрядной (однобайтной) ячейки памяти;

[..] – содержимое 16-ти разрядного (2-х байтного) адреса команды.

    1. прямая загрузка

Пересылка из запоминающего устройства в аккумулятор.

Б1

Б2

Б3

LDA

младший разряд

адрес ячейки памяти ЗУ

старший разряд

(А)←([< Б3>< Б2>])

    1. загрузка памяти ЯП ЗУ прямая

Б1

Б2

Б3

STA

младший разряд

адрес ячейки памяти ЗУ

старший разряд

([<Б3>< Б2>])←(A)

  1. Арифметические и логические операции. Инкрементные и декрементные команды

2.1. Сложение содержимого аккумулятора с регистром r , где r регистры A, B, C, D, E, H, L.

Б1

ADD r

(A)←(A)+ (r), Z, S, P, AС, СY регистра признаков.

Помни!!!: В командах арифметических и логических операций, а также инкрементных и декрементных командах формируются значения регистра признаков.

В этой команде изменяются признаки S, Z, P, AС, СY.

Например:

ADD A ; (A)←(A)+(A)

Разновидность команды:

Сложение содержимого аккумулятора с содержимым ЯП (косвенная адресация):

Б1

ADD M

(A)←(A)+([H-L]), S, Z и др.

Сложение аккумулятора с константой:

Б1

Б2

ADI

8-разрядная константа

(A)←(A)+(< Б2>), S, Z и др.

Например: ADI 7Bh ; (A)←(A)+7Bh, S, Z и др.

Помни: Символ «I» в командах означает работу с константой.

    1. Вычитание содержимого регистра из аккумулятора

Б1

SUB r

(A)←(A) - (r), S, Z и др.

В этой команде изменяются признаки S, Z и др.

SUB A; (A)←(A)-(A) в аккумуляторе ноль, следовательно, появляется нулевой признак (Z=1).

Б1

SUB M

(A)←(A)- ([H-L]), S, Z и др.

Б1

Б2

SUI

8-разрядная константа

(A)←(A)-(< Б2>) , S, Z и др.

    1. Декрементные команды (аналогично вычитающему двоичному счетчику)

Б1

DCR r

(r)←(r)-1, S, Z и др.

Б1

DCR M

([H-L])←([H-L])- 1, S, Z и др.

Б1

DCX rr

(rr)←(rr)-1, S, Z и др.

rr – регистровая пара (B-C, D-E, H-L).

Например:

DCX B; (B-C)←(B-C)-1

Помни: Символ «Х» в команде означает работу с регистровой парой.

    1. Инкрементные команды (аналогично суммирующему двоичному счетчику).

Инкремент регистра

Б1

INR r

(r)←(r)+1. S, Z и др.

Например: INR А; (A)←(A)+1 S, Z и др.

Б1

INR M

([H-L])←([H-L])+1.

Инкремент регистровой пары

Б1

INX rr

(rr)←(rr)+1

Например: INX D; (D-E)←( D-E)+1

  1. Логические операции (AND, OR, NOT, ).

3.1. Логическое умножение содержимого аккумулятора с константой

Б1

Б2

ANI

константа

(A)←(A)^(< Б2>)

Логические операции осуществляются поразрядно и без переноса в старший разряд.

Пояснение на примере.

ANI 0: (A)←(A)^ (0) В аккумулятор записывается ноль.

ANI FF ; В аккумуляторе остается содержимое аккумулятора.

Б1

ANA r

(A)←(A)^(r)

Б1

ANA M

(A)←(A)^([H-L])

    1. Логическое сложение

Б1

Б2

ORI

константа

(A)←(A)V(<Б2>)

Рассмотрим примеры:

ORI FF; (A)←(FF)V(A)

ORI 0 (A)←(A)V0

Б1

ORA r

(A)←(A)V(r)

Б1

ORA M

(A)←(A)V([H-L])

    1. Инверсия содержимого всех разрядов аккумулятора

Б1

CMA

(A)←()

Рассмотрим пример: Пусть А=0. Что будет в аккумуляторе после выполнения команды CMA?

    1. Сложение по модулю два константы с аккумулятором

Б1

Б2

XRI

константа

(A)←(A)(< Б2>)

Б1

XRA r

(A)←(A)(r)

Например:

XRA A ; (A)←(A)(A) В аккумулятор записываетсяноль.

3.5. Логическое сравнение аккумулятора с регистром (команды логического сравнения применяются перед командами условного перехода)

Б1

СMP r

(A)–(r) , (S, Z, P, AС )

Арифметическое вычитание и формирование только признаков в регистре признаков (S, Z, P и др.).

    1. Логическое сравнение аккумулятора с константой

Б1

Б2

СРI

константа

(А) – (<Б2>), (S, Z, P, AС )

Помни:

Команды логического сравнения применяются, чтобы сформировать только признаки (S, Z, P, AС ) в регистре признаков перед выполнением команд условных переходов. Содержимое аккумулятора при этом не изменяется!

  1. Команды управления (безусловный и условные переходы)

4.1. Команда безусловного перехода

Б1

Б2

Б3

JMP

младшие разряды

Адрес

перехода

старшие разряды

(Счетчик команд РС)←(< Б3>< Б2>)

Пример: JMP 8105h ; (Счетчик команд РС)←8105h

4.2. Команды условных переходов (JM, JNM, JZ, JNZ)

Все команды условного перехода 3-х байтные: в 1-м байте КОП, в 3- м и 2-м байтах команды адрес перехода.

Последовательность выполнения команды условного перехода: если условие КОП выполняется, то в PC заносится адрес перехода из 3-го и 2-ого байтов команды. Если условие КОП не выполняется, то к значению PC прибавляется 3, т.е. МР переходит к выполнению очередной команды.

Команда перехода, если минус:

Б1

Б2

Б3

JM

младшие разряды

адрес перехода

старшие разряды

(РС)←(< Б3>< Б2>), если S=1

(PC)←(РС)+3, если S=0

Команда перехода, если минус, т.е. если предыдущий результат отрицательный (S=1), то в PC заносится адрес 3- и 2- ого байтов команды и происходит переход по этому адресу. Если условие КОП не выполняется (S=0), то к значению PC прибавляется 3, т.е. МР переходит к выполнению очередной команды.

Пример команды:

Команда перехода, если ноль:

Б1

Б2

Б3

JZ

младшие разряды

адрес перехода

старшие разряды

(РС)←(< Б3>< Б2>), если Z=1

(PC)←(РС)+3, если Z=0

Команда перехода, если не ноль:

Б1

Б2

Б3

JNZ

младшие разряды

адрес перехода

старшие разряды

(РС)←(<Б3>< Б2>), если Z=0

(PC)←(РС)+3, если Z=1

  1. Команды ввода и вывода данных.

Ввод и вывод данных организуется двумя способами:

  1. Ввод и вывод данных только через аккумулятор. Данный способ обычно используется в восьмиразрядных системах. Он прост в технической реализации МП. В изучаемом нами МП применяется данный способ обмена.

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

5.1. Команда ввода данных

Б1

Б2

IN

Адрес устройства ввода

(А)←([< Б2>])

Пример команды:

IN INPORT1; (A)←([INPORT1]), где INPORT1символический адрес порта ввода.

    1. Команда вывода данных

Б1

Б2

OUT

Адрес устройства вывода

([2>])←(A)

OUT OUTPORT2 ; ([OUTPORT2])←(A)

  1. Другие команды

6.1 Команды работы со стеком (стековой памятью).

Стековая память – область ОЗУ, предназначенная для временного хранения данных, в том числе и адресов возврата в основную программу при обращении к подпрограмме.

Обмен со стековой памятью осуществляется только парами регистров (В-С, D-E, H-L, PSW).

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

Примечание: в некоторых МПС начальный адрес стека определяется автоматически.

Для задания вершины стека используются два варианта команд:

1-ый вариант:

Б1

Б2

Б3

LXI

младший разряд

Адрес регист-

ровой пары

старший разряд

(SР)←(< Б3>< Б2>)

SP – шестнадцатиразрядный указатель стека, т.е. в указателе стека

2-ой вариант:

Б1

SPHL

(SP)←(H-L)

Запись содержимого регистровой пары в стековую память:

Команда записи регистровой пары в стековую память

PUSH rr

где rr – В-C, D-E, H-L, PSW.

Например:

PUSH В; Содержимое пары регистров В-С записывается в стековую память по адресу SP-1 и SP-2. После выполнения команды записи содержимого в стековую память в указателе стека (SP) изменяется адрес стековой памяти (уменьшается его значение на два: SP=SP-2).

Команда чтения содержимого стека в регистровую пару (чтение из стековой памяти)

РОР rr

где rr – В-C, D-E, H-L, PSW.

По этой команде содержимое стековой памяти (два байта) из ОЗУ записываются в одну из регистровых пар РОН или PSW. После выполнения команды содержимое указателя стека увеличивается на два SP=SP+2.

Например:

РОР B; Содержимое двух ячеек стековой памяти по адресу SP+1 и SP+2 записывается в пару регистров B-C, а указатель вершины стека после выполнения команды принимает значение SP=SP+2.

    1. Команда обращения к подпрограмме (CALL).

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

Синтаксис команды обращения к подпрограмме

Б1

Б2

Б3

CALL

младшие разряды

адрес ячейки памяти ЗУ с командой подпрогрпммы

старшие разряды

([SP-1]) ←(CPL)возвр.

([SP-2]) ←(CPH)возвр.

(SP)←(SP)-2 ; измен. адр. вершины стека.

(CP)←([< Б3>< Б2>]).

Последовательность выполнения команды обращения к подпрограмме CALL.

В стековую память записывается 16-ти разрядный адрес ячейки памяти возврата после выполнения подпрограммы (CPL)возвр. , (CPH)возвр.

В указатель счетчика команд (PC) заносится адрес первой ЯП команды подпрограммы с КОП ([<Б3><Б2>]). . Поскольку стековая память использована для хранения адреса возврата из подпрограммы в основную программу, то изменяется значение указателя вершины стека (уменьшается на 2, т.е. SP=SP-2).

Команда возврата из подпрограммы

Б1

RET

(CPL) ← ([SP+1]), (запись в счетчик команд PC адреса

(CPH) ← ([ SP+2]) возврата в основную программу)

(SP)←(SP)+2, (изменяется адрес вершины стека )

В счетчик команд PC записывается содержимое стековой памяти по адресу ([SP+1]) и ([SP+2]), т.е. адрес возврата в основную программу.

После выполнения команды значение указателя стека SP увеличивается на 2, т.е. SP=SP+2.

    1. Команда HLT – останов выполнения программы

Б1

HLT

МП прекращает выполнение программы и ждет указаний.

    1. Пустая команда

Б1

NOP

Эта команда используется для резервирования ячеек при написании программы. МП никаких действий не выполняет, но осуществляет первый этап (чтение и дешифрование). Кроме того, команда может применяться при написании программы временной задержки (для изучаемого симулятора AVSIM85 время выполнения 1-ого этапа команды четыре секунды).

Работа с имитатором (симулятором) процессора Intel I8085.

Построение программы.

Этапы создания программы:

  1. Разработка алгоритма программы и ее написание на языке ассемблер. Набор программы осуществляется только!!! в Блокноте или с использованием симулятора. Сохраняется программа в формате «все файлы» и имя программы – с расширением .asm. Например, testr3.asm.

Примечание: В редакторе Word или Word Pad программу не набирать, а только в Блокноте

  1. Трансляция программы – перевод программы с языка ассемблера в код микропроцессора. В результате появляется файл с расширением .hex, т.е. файл с цифрами в шестнадцатеричной системе счисления.

  2. Компоновка программы. Результат компоновки – объединение нескольких оттранслированных программ в одну, в результате мы получаем файл с расширением .obj.

  3. Отладка программы.

Структура программы

Программа состоит из предложений. Каждое предложение имеет следующую структуру:

[метка] <мнемоника команды> [операнды]; [комментарии]

[] – не обязательное включение содержимого скобок в предложение

<> - обязательное наличие содержимого скобок в предложение

  1. Поле метки: метка записывается с первой позиции и начинается обязательно с буквы.

  2. Поле мнемоники: код операции (КОП) записывается после первой позиции.

  3. Поле операнда: в этом поле записываются данные, которые обрабатываются в МП.

  4. Поле комментария: комментарии записываются обязательно после точки с запятой (;). Если комментариев нет, точку с запятой ставить не обязательно. Если точка с запятой стоит в первой позиции, то строка транслятором воспринимается как комментарий.

Программа начинается с комментария, в котором записывается автор программы, название программы, какие микропроцессоры, микроконтроллеры и тактовая частота используются. Далее следуют директивы к транслятору.

В директивах записываются символические имена портов ввода и вывода, констант, команд присоединения и других команд.

Include – директива и после нее записываются имена файлов с расширением .asm.

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

Трансляция программы.

Для трансляции программы необходимо командной в строке, например, FAR или Total Commander, записать:

avmac85 <имя исходного файла.asm> si allpublic

Помни уголки < > не использовать при написании команды.

В результате формируются объектный файл и листинг:

<имя исходного файла>.obj

< имя исходного файла >.prn

Для проверки программы на наличие в ней ошибок необходимо раскрыть файл с расширением .prn , и в нем будет показано, в какой строке находится ошибка. Исправлять ошибки только в файле с расширением .asm.

Компоновка программы.

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

avlink @<имя файла>.lnk

В результате компоновки формируется файл с расширением .hex.

Подготовка файлов выходных данных.

Для ввода данных (имитация ввода данных) формируется файл исходный данных. Для организации файла создать файл с именем indat.ad. Для создания файла используют следующее сочетание клавиш – Shift+F4. Значения входных данных записываются в десятичной системе. Цифры разделяются либо пробелом, либо переводом строки. Для перевода десятичной системы счисления в шестнадцатеричную в командной строке записывают команду:

iotran db indat.dat indat.ad

Лекция

Особенности разработки программ двоичных счетчиков

Учебные вопросы:

1. Двоичные счетчики с заданной разрядностью, начальным (Qнач) и конечным (Qкон) значениями счета.

2. Построение счетчиков на двух регистрах.

3. Построение программы с управляющими сигналами.

4. Разработка программы счетчика табличным методом.

  1. Двоичные счетчики с заданной разрядностью, начальным (Qнач) и конечным (Qкон) значениями счета.

Постановка задачи: разработать вычитающий четырехразрядный двоичный счетчик с параметрами:

Qнач.=5, Qкон=8

m – разрядность счетчика

Сmax=

Примечание: в аккумуляторе восемь разрядов. В четырехразрядном счетчике используются только четыре младших разряда, следовательно, необходимо отсечь старшие разряды. Для этого используется команда ANI 0Fh.

Алгоритм программы

Фрагмент программы:

Begin:

MVI C,Qn ; C=Qn Бл.1

M2: MOV A,C ; A=CБл.2

OUT outport2 ; вывод Qi

DCR C ; C=C-1 Бл.3

MOV A,C

ANI 0Fh Бл.4

MOV C,A

CPI Qk ; (A-Qk) в этой

команде только меняются Бл.5

признаки S, Z, P

JZ Begin

JMP M2

END

В рассмотренной программе Cmax=,

где m=8, следовательно, Сmax не более 255 .

На практике применяются счетчики с Сmax> 255. Тогда могут применяться счетчики на двух регистрах.

  1. Построение счетчиков на двух регистрах.

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

Алгоритм программы

Фрагмент из программы

Delay:

LXI B, DEL ; пересылается константа

в регистровую пару В-С

M3:

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

времени цикла

NOP

MOV A,C

ORA B ; (A)←(A)V(B)

JNZ M3

JMP Mi ; метка основной программы

END

3.Построение программы с управляющими сигналами

Если МПС управляет устройством, то на вход МПС поступает сигнал, по результатам которого формируется управляющий сигнал. Пусть двоичный счетчик управляется двумя сигналами, а именно, сигнал Х1 – сброс счетчика в нулевое состояние (начальное) и Х2 – останов счетчика.

Примечание: Эти сигналы используются в программной реализации проектируемого устройства в курсовой и лабораторной работах.

Управляющий сигнал обеспечивает сброс счетчика в начальное состояние, если Х1=0 в разряде регистра А1 (аккумулятор), а Х2=0 в разряде регистра А3 (аккумулятор) : обеспечивает останов счета. Cигналы управления вводятся в аккумулятор МП побайтно.

Рассмотрим последовательность применения управляющих сигналов.

а) выделение сигнала Х1. Для этого применим команду логического умножения (конъюнкция) АNI X, где Х – число (соnst), позволяющее выделить любой разряд (ы) регистра (аккумулятора). В нашем примере константа 02 (ANI 02), которая позволяет выделить разряд сигнала Х1.

б) определение значения разряда (1 или 0) управляющего сигналаХ1: применяем команды JZ или JNZ.

Аналогично для сигнала Х2:

а) выделение сигнала Х2 (сонстанта 08):

б) определение значения разряда сигнала Х2: применяем команды JZ или JNZ.

Пусть Х12=1, то есть рассмотрим ситуацию, когда счетчик работает без воздействия управляющих сигналов:

4.Разработка программы счетчика табличным методом.

Сущность метода построения счетчика: в памяти МПС на программном уровне формируется таблица (одномерная), в которой по адресу, соответствующему текущему состоянию, записано число (в памяти), которое соответствует следующему состоянию счетчика.

Пример: разработать счетчик табличным методом с произвольным порядком смены состояний.

Пусть счетчик имеет начальное состояние Q0 = 4

4 →0 →14→12 →8

NAT какой-нибудь адрес.

NAT +

Фрагмент программы:

MOV A,C ;(А)← (C)

OUT OUTPORT ;вывод значений счетчика

LXI H,NAT ;загружаем данные таблицы

MVI B,0 ;обнуляем регистр В

DAD B ;(H-L) ← (H-L)+(B-C)

MOV A,M ;(A) ←([H-L])

MOV C,A ;(C) ←(A)

JMP M1

NAT: db 0Еh,0h,0h,0h,0h,0h,0h,0h,4h,0h,0h,0h,8h

include stack.asm

end