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

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

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

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

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

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

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

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

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

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

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

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

Система команд восьмиразрядного микропроцессора КР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])- , 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

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

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

Б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. Двоичные счетчики с заданными начальным и конечным значениями счета.

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

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

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

  1. Двоичные счетчики с заданными начальным и конечным значениями счета.

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

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

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

MOV A,C

ANI 0Fh Бл.4

MOV C,A

CPI Qk ; (A-Qk) в этой команде только меняются признаки S, Z, P

JZ Begin

JMP M2

END

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

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

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

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

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

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

Нарисовать

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

Delay:

LXI B,DEL ; константа пересылается в регистровую пару В-С

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

NOP

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

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