Смекни!
smekni.com

Микропроцессорная система обработки журнальных данных (стр. 2 из 2)

В ассемблерной записи команд NN3 и 21 фигурирует старший регистр ri (=B, D или H) регистровой пары rp. При выполнении двухоперандных команд (NN7 – 18) первые операнд x1 всегда берётся из РОН А, а второй x2 из другого РОНа или задается непосредственно во втором байте <B2> команды. Логические операции, в отличии от арифметических, выполняются поразрядно.

Для всех команд условного перехода (NN25 – 30) при невыполнении проверяемого условия в PC загружается адрес adr = (PC) + 3.

Система команд процессора КР580ВМ80. Табл.2

NN n/n Ассемблерная запись команды Формат (байты) Такты Выполняемая операция Форми- руемые флаги Структура <B1> (номера разрядов)
Команды пересылке и загрузке
1. 2. 3. 4. 5. 6. MOV_ri,rj MVI_ri,d8 LXI_ri,d16 XCHD PCHL SPHL 1 2 3 1 1 1 5 7 10 4 5 5 ri← (rj) ri←B2> ri←<B2>,ri+1←<B2> (HL)↔(DE) PC←(HL) SP←(HL нет нет нет нет нет нет 0 0 0 1 1 1 1 0 0 1 1 1 ← ← ← 1 1 1 ri ri ri 0 0 0 → → → 1 1 1 ← 1 0 0 0 0 ri 1 0 1 0 0 → 0 1 1 1 1
Арифметические и логические операции
7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ADD_ ri SUB_ ri ANA_ ri XRA_ ri ORA_ ri CMP_ ri ADI_ d8 SUI_ d8 ANI_ d8 XRI_ d8 ORI_ d8 CPI_ d8 SMA 1 1 1 1 1 1 2 2 2 2 2 2 1 4 4 4 4 4 4 7 7 7 7 7 7 4 A← (A) + (ri) A← (A) - (ri) A← (A) /&bsol; (ri)
A← (A) + (ri) A← (A) &bsol;/ (ri) Сравн. A - (ri) A← (A) + <B2> A← (A) - <B2> A← (A) /&bsol; <B2>
A← (A) + <B2> A← (A) &bsol;/ <B2> Сравн. A - <B2> A← (A)
все все z, s, p z, s, p z, s, p все все все z, s, p z, s, p z, s, p все нет 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 0 0 1 1 0 1 0 0 1 1 0 0 0 0 1 0 1 0 0 0 1 0 1 1 ← ← ← ← ← ← 1 1 1 1 1 1 1 ri ri ri ri ri ri 1 1 1 1 1 1 1 → → → → → → 0 0 0 0 0 0 1
Операции циклического сдвига и инкремента
20. 21. 22. 23 INR_ri INX_ri RLC RRC 1 1 1 1 5 5 4 4 ri ← (ri) + 1 rp← (rp) + 1 Ai+1←(Ai);A0←(A7); C7←(A7) Ai←(Ai+1);A7←(A0); C7←(A0) z, s, p нет С7 С7 0 0 0 0 0 0 0 0 ← ← 0 0 ri ri 0 0 → → 0 1 1 0 1 1 0 1 1 1 0 1 1 1
Безусловный переход
24 JMP_adr 3 10 PC←<B3><B2> нет 1 1 0 0 0 0 1 1
Условные переходы
25. 26. 27 28 29 30 JNZ_adr JZ_adr JNC_adr JC_adr JP_adr JM_adr 3 3 3 3 3 3 10 10 10 10 10 10 при z=0 PC←<B3><B2> при z=1 …..|….. при С7=0 …..|….. при С7=1 …..|….. при S=0 …..|….. при S=1 …..|….. нет нет нет нет нет нет 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 0 0 1 1 1 1 0 1 0 1 0 1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0
Вспомогательные функции
31. 32. 33. 34. IN_port n OUT_port m NOP HLT 2 2 1 1 10 10 4 7 Ввод: А←(port n) Вывод: А←(port m) Нет операции Остановка, стоп нет нет нет нет 1 1 0 0 1 1 0 1 0 0 0 1 1 1 0 1 1 0 0 0 0 0 0 1 1 1 0 1 1 1 0 0

5. Разработка алгоритма

Рис.4. Блок – схема алгоритма обработки журнальных записей.


Алгоритм обработки предписывает поочередное чтение из ОЗУ показаний gt из ячеек с адресами At, попарное сравнение их по величине и запоминание меньшего из них. Блок – схема алгоритма приведена на рис. 4 и содержит 19 команд к1…к19: здесь формируемая величина gmin размещена в РОН Е, текущий адрес Аt = Aпред + ∆At – в регистровой паре HL, а приращение адреса ∆At = kt является параметром цикла обработки и размещается в РОН С; максимальное (=граничное) приращение krp = N = 5 является индикатором окончания цикла анализа данных gt из журнального файла G.

На блок-схеме рис.4:

· команды к1…к3 обеспечивают анализ вводимого с ПЭК сигнала х1 и принятие решения о конце суточного цикла сбора данных и начла обработки файла G; численное значении маски 01(16) гарантирует анализ младшего бита содержимого РОН А;

· команда к4 загружает адрес предпоследнего сеанса Апред в регистровую пару HL;

· команда к5 считывает первый «отсчёт» предпоследнего сеанса g0 из файла G и, записав его в РОН Е, объявляет его равным gmin;

· команда к6 заносит начальное значение Kt = 0 в РОН С; вместе к4…к6 обеспечивают подготовку цикла к7…к15 анализа G;

· команды к7, к8 обеспечивают инкремент текущего адреса At и приращение адреса Kt;

· команды к9 – к11 на основе сравнения kt c krp = 05 обеспечивают выход из цикла обработки и выдачу на индикацию через УВыв№1 рассчитанного значения gmin из РОН Е (к17, к18);

· команда к12 загружает в РОН А текущий отсчёт gt из ячейки M ОЗУ с адресом At (сформированным в регистровой паре HL);

· команды к13 и к14 обеспечивают сравнение текущего отсчёта gt с gmin и при появлении gt<gmin перезапись его в РОН Е (к15);

· команда к16 обеспечивает безусловный переход (БП) на метку М3.

В таблице 3 (в полях 2-6) приведена ассемблерная запись программы, реализующий этот алгоритм. Из неё видно, что для размещения загрузочного модуля (в двоичных кодах) этой программы необходимо 34 байта (ячейки ОЗУ).

Сам загрузочный модуль представлен полями 0 и 1таблицы 3, но для простоты и кратности записан в 16-ричных кодах (h-кодах): коды первых байтов взяты из таблицы 2, а числовые значения <B3> и <B2>, а также начального адреса предпоследнего сеанса FA25(16) для размещения программы в ОЗУ устанавливаются по исходным данным задачи.

Текст программы на ассемблере и её загрузочные модуль (в h-кодах). Табл.3

Мет- ки Адрес ОЗУ h-коды NN коман- ды Ассемблер Комментарий Бай- ты Так- ты
0 1 2 3 4 5 6
М1 FA25 FA26 <B1>DB <B2>01 K1 IN_00 A←(port 0) 2 10
FA27 FA28 <B1>E6 <B2>01 K2 ANI_01 A←(A)^maska maska = 01h 2 7
FA29 FA2A FA2B <B1>C2 <B2>89 <B3>FE K3 JNZ_M1: Усл. Переход (УП) по условию Х1 = 0 («обработку начать») 3 10
FA2C FA2D FA2E <B1>21 <B2>86 <B3>26 K4 LXI_H,08B1 HL←Апред (Апред = adr = 08B1 3 10
FA2F <B1>5E K5 MOV_E,M E←gt (из ОЗУ) 1 5
FA30 FA31 <B1>0E <B2>00 K6 MVI_C,00 С←0 (At:=0) 2 7
M2 FA32 <B1>23 K7 INX_H HL←(HL)+1 инкремент At 1 5
FA33 <B1>0C K8 INR_C C←(C)+1(инкр. Kt) 1 5
FA34 <B1>79 K9 MOV_A,C А←С 1 5
FA35 FA36 <B1>FE <B2>0D K10 CPI_0C Сравнение(А) с Krp=05 2 7
FA37 FA38 FA39 <B1>F2 <B2>A7 <B3>FE K11 JP_M2: УП на метку М2 («конец файла G») 3 10
FA3A <B1>7E K12 MOV_A,M А←gt (из ОЗУ) 1 5
FA3B <B1>BB K13 CMP_E Сравнение (А) и gmin 1 4
FA3C FA3D FA3E <B1>F2 <B2>96 <B3>FE K14 JP_M3: УП на метку М3 («новый отсчёт gt меньше, чем gmin?») 3 10
FA3F <B1>5F K15 MOV_E,A Сохранить gt в РОН E 1 5
FA40 FA41 FA42 <B1>C3 <B2>98 <B3>FE K16 JMP_M3: Безусл. Переход (БП) на метку М3 (PC) ←<B3><B2> 3 10
M2 FA43 <B1>7B K17 MOV_A,E A←(E) 1 5
FA44 FA45 <B1>D3 <B2>01 K18 OUT_01 Выдать gmin на индикацию через Увыв №1 2 10
FA46 <B1>76 K19 HLT Стоп 1 7