Начальная

Windows Commander

Far
WinNavigator
Frigate
Norton Commander
WinNC
Dos Navigator
Servant Salamander
Turbo Browser

Winamp, Skins, Plugins
Необходимые Утилиты
Текстовые редакторы
Юмор

File managers and best utilites

Как работают эмуляторы и как они записываются? Эмулятор микропроцессора


Эмулятор микропроцессора кр580ВМ80

k580.rtf KP580BM80 Page of

Эмулятор микропроцессора КР580ВМ80

Список команд

Список команд

00H NOP

01H LXI B, DATA

02H STAX B

03H INX B

04H INR B

05H DCR B

06H MVI B, DATA

07H RLC

08H -

09H DAD B

0AH LDAX B

0BH DCX B

0CH INR C

0DH DCR C

0EH MVI C, DATA

0FH RRC

10H -

11H LXI D, DATA

12H STAX D

13H INX D

14H INR D

15H DCR D

16H MVI D, DATA

17H RAL

18H -

19H DAD D

1AH LDAX D

1BH DCX D

1CH INR E

1DH DCR E

1EH MVI E, DATA

1FH RAR

20H -

21H LXI H, DATA

22H SHLD ADDR

23H INX H

24H INR H

25H DCR H

26H MVI H, DATA

27H DAA

28H -

29H DAD H

2AH LHLD ADDR

2BH DCX H

2CH INR L

2DH DCR L

2EH MVI L, DATA

2FH CMA

30H -

31H LXI SP, DATA

32H STA ADDR

33H INX SP

34H INR M

35H DCR M

36H MVI M, DATA

37H STC

38H -

39H DAD SP

3AH LDA ADDR

3BH DCX SP

3CH INR A

3DH DCR A

3EH MVI A, DATA

3FH CMC

40H MOV B, B

41H MOV B, C

42H MOV B, D

43H MOV B, E

44H MOV B, H

45H MOV B, L

46H MOV B, M

47H MOV B, A

48H MOV C, B

49H MOV C, C

4AH MOV C, D

4BH MOV C, E

4CH MOV C, H

4DH MOV C, L

4EH MOV C, M

4FH MOV C, A

50H MOV D, B

51H MOV D, C

52H MOV D, D

53H MOV D, E

54H MOV D, H

55H MOV D, L

56H MOV D, M

57H MOV D, A

58H MOV E, B

59H MOV E, C

5AH MOV E, D

5BH MOV E, E

5CH MOV E, H

5DH MOV E, L

5EH MOV E, M

5FH MOV E, A

60H MOV H, B

61H MOV H, C

62H MOV H, D

63H MOV H, E

64H MOV H, H

65H MOV H, L

66H MOV H, M

67H MOV H, A

68H MOV L, B

69H MOV L, C

6AH MOV L, D

6BH MOV L, E

6CH MOV L, H

6DH MOV L, L

6EH MOV L, M

6FH MOV L, A

70H MOV M, B

71H MOV M, C

72H MOV M, D

73H MOV M, E

74H MOV M, H

75H MOV M, L

76H HLT

77H MOV M, A

78H MOV A, B

79H MOV A, C

7AH MOV A, D

7BH MOV A, E

7CH MOV A, H

7DH MOV A, L

7EH MOV A, M

7FH MOV A, A

80H ADD B

81H ADD C

82H ADD D

83H ADD E

84H ADD H

85H ADD L

86H ADD M

87H ADD A

88H ADC B

89H ADC C

8AH ADC D

8BH ADC E

8CH ADC H

8DH ADC L

8EH ADC M

8FH ADC A

90H SUB B

91H SUB C

92H SUB D

93H SUB E

94H SUB H

95H SUB L

96H SUB M

97H SUB A

98H SBB B

99H SBB C

9AH SBB D

9BH SBB E

9CH SBB H

9DH SBB L

9EH SBB M

9FH SBB A

A0H ANA B

A1H ANA C

A2H ANA D

A3H ANA E

A4H ANA H

A5H ANA L

A6H ANA M

A7H ANA A

A8H XRA B

A9H XRA C

AAH XRA D

ABH XRA E

ACH XRA H

ADH XRA L

AEH XRA M

AFH XRA A

B0H ORA B

B1H ORA C

B2H ORA D

B3H ORA E

B4H ORA H

B5H ORA L

B6H ORA M

B7H ORA A

B8H CMP B

B9H CMP C

BAH CMP D

BBH CMP E

BCH CMP H

BDH CMP L

BEH CMP M

BFH CMP A

C0H RNZ

C1H POP B

C2H JNZ ADDR

C3H JMP ADDR

C4H CNZ ADDR

C5H PUSH B

C6H ADI DATA

C7H RST 0

C8H RZ

C9H RET

CAH JZ ADDR

CBH -

CCH CZ ADDR

CDH CALL ADDR

CEH ACI DATA

CFH RST 1

D0H RNC

D1H POP D

D2H JNC ADDR

D3H OUT PORT

D4H CNC ADDR

D5H PUSH D

D6H SUI DATA

D7H RST 2

D8H RC

D9H -

DAH JC ADDR

DBH IN PORT

DCH CC ADDR

DDH -

DEH SBI DATA

DFH RST 3

E0H RPO

E1H POP H

E2H JPO ADDR

E3H XTHL

E4H CPO ADDR

E5H PUSH H

E6H ANI DATA

E7H RST 4

E8H RPE

E9H PCHL

EAH JPE ADDR

EBH XCHG

ECH CPE ADDR

EDH -

EEH XRI DATA

EFH RST 5

F0H RP

F1H POP PSW

F2H JP ADDR

F3H DI

F4H CP ADDR

F5H PUSH PSW

F6H ORI DATA

F7H RST 6

F8H RM

F9H SPHL

FAH JM ADDR

FBH EI

FCH CM ADDR

FDH -

FEH CPI DATA

FFH RST 7

umozak.ru

Минобрнауки россии

18

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

«Юго-Западный государственный университет»

(ЮЗГУ)

Кафедра телекоммуникаций

УТВЕРЖДАЮ

Первый проректор -

проректор по учебной работе

____________Е.А. Кудряшов

«___»___________2013 г.

Изучение команд микропроцессора кр580, разработка программы вывода информации на дисплей

Методические указания по выполнению лабораторной работы

для студентов специальностей 210400.62, 210402.65, 210403.65, 210406.65

Курск 2013

УДК 621.371

Составители Е.А. Шиленков

Рецензент

Кандидат технических наук, профессор А.М. Потапенко

Изучение команд микропроцессора КР580, разработка программы вывода информации на дисплей : методические указания по выполнению лабораторной работы / Юго-Зап. гос. ун-т; сост. Е.А.Шиленков. Курск, 2013. 18 с.: ил. 3. Библиогр.: с.18.

Содержат сведения по исследованию команд микропроцессора КР580, составление программ на языке ассемблера.

Методические указания соответствуют требованиям ГОС по направлению телекоммуникации и рабочим учебным планам по специальностям 210400.62, 210402.65, 210403.65, 210406.65.

Предназначены для студентов специальностей 210400.62, 210402.65, 210403.65, 210406.65 дневной и заочной форм обучения.

Текст печатается в авторской редакции

Подписано в печать. Формат 6084 1/16.

Усл.печ.л. 1,0. Уч.-изд.л. 0,9. Тираж 100 экз. Заказ . Бесплатно.

Юго-Западный государственный университет.

305040, Г. Курск, ул. 50 лет Октября, 94.

Оглавление

1 Цель работы 4

2 Краткая характеристика исследуемого процессора 4

2.1 Архитектура микропроцессора КР580ВМ80 5

2.2 Регистр признаков КР580 9

2.3 Регистры МП КР580 10

2.4 Пространства памяти и ввода-вывода МП КР580 11

2.5 Работа с внешними устройствами МП КР580 12

3 Домашнее задание 14

4 Написание программы на ассемблере для МП КР580 14

5 Лабораторное задание 17

6 Отчет 17

7 Контрольные вопросы 17

Библиографический список: 18

1 Цель работы

Исследование команд микропроцессора КР580, составление программ на языке ассемблера.

2 Краткая характеристика исследуемого процессора

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

Рисунок 1 – Программа-эмулятор микропроцессорной системы КР580.

Данный эмулятор позволяет: написание программ на языке ассемблера, используя систему команд МП КР580ВМ80А, их отладку и выполнение в тактовом, командном и сквозном режимах; изучить принципы и порядок выполнения команд; приобрести навыки работы с внешними устройствами МП-системы; получить представления об организации внешней и внутренней (регистровой) памяти и стековой области.

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

Также, эмулятор может быть полезен и для опытных людей, к примеру, в качестве визуализированного помощника в программировании разрабатываемой ими МП-системы на базе КР580ВМ80 (i8080).

В возможности эмулятора входит: работа с 5-ю внешними устройствами, такими, как монитор, НГМД, НЖМД, сетевой адаптер и принтер; отладка и выполнение программ в тактовом, командном и сквозном режимах; работа со всем спектром системы команд данного МП; сохранение, загрузка и печать данных и результатов; ручной ввод данных в ОЗУ и РОН. Также, в состав дистрибутива включено подробное руководство пользователя, описание системы команд и файлы-образы ОЗУ эмулятора для примера.

studfiles.net

Структурная схема пульта мпэ (эмулятор микропроцессора)

Комплексы диагностирования

Комплексы диагностирования объединяют возможности логических анализаторов и генераторов слов; способны подавать входные воздействия на диагностируемую систему, собирать и анализировать ответные реакции МПС. При этом в КД логический анализатор и генератор слов функционируют как единое целое под общим управлением микропроцессора, с общим программным обеспечением, с согласованными по времени распространения сигналами.

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

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

μ-ЭВМ подготавливает тестовые наборы, настраивает режим работы генератора слов и логического анализатора, обрабатывает информацию о поведении ОД (объекта диагностирования), представляет информацию о её поведении на языках, используемых при проектировании, осуществляет диалог с человеком.

Пример комплекса диагностирования – система поэлементного контроля (СПК)

Сигнатурный анализ.

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

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

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

Сигнатурный анализ разработан на основе 2-х применявшихся способов контроля:

  1. счет переходов

  2. циклическим избыточным кодированием

«Природа» цифровых сигналов.

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

ƒ=1/Тс

k=Т1/Тс

Вузлах МПСосуществляется непериодический цифровой сигнал, для которого невозможно определить ƒ и k, а значит нельзя применять статические методы контроля.

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

В обычных рабочих условиях охарактеризовать сигнал в отдельном узле (линии) невозможно из-за воздействия неожиданных событий.

Счет переходов (сп).

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

Суть метода «Счет переходов» заключается в том, чтобы подсчитать количество переходов из логического "0" в логическую "1" и из "1" в "0". Общее число изменений стимулированного узла может быть очень большим, поэтому необходим способ сжатия информации. Обязательным условием счета переходов является определенное «временное окно», в течение которого подсчитываются переходы. Для применения метода СП необходимо разработать стимулирующий тест и задокументировать число переходов в каждом узле.

Не обнаружение однобитовых ошибок возможно

  1. 001

  2. 011

  3. 100

  4. 110

Для m-битовой последовательности вероятность не обнаружения

Коды циклического избыточного контроля (ЦИК).

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

Сигнатурный анализатор.

Принцип сигнатурного анализа: при воздействии стимулирующего теста, в течение «временного окна» по сигналам синхронизации выделяется периодическая последовательность и делится на характеристический полином, и регистрируется остаток – сигнатура. Идея сигнатурного анализа построена на циклических кодах, для построения которых разработан сигнатурный полином: X16+X9+X7+X4+1. По нему выражается обратная связь: реализуется генератор псевдослучайной последовательности или сигнатурный регистр.

Вероятность обнаружения ошибки для 16-ти разрядного сигнатурного регистра:

P = 1 – 216 = 1 – 0,00001526 = 0,999985

studfiles.net

СТАТИЧЕСКИЙ АППАРАТНЫЙ ЭМУЛЯТОР — МегаЛекции

 

Ограничив поставленную задачу проверкой правильности функционирования логических схем, обрамляющих МП, используем тот факт, что в МП-системах на базе микросхемы КР580ИК80А передача информации осу­ществляется уровнями. Следовательно, если заменить МП уст­ройством, вырабатывающим в статике такие же выходные сиг­налы, можно проверить работу всех зависящих от него узлов, т. е. правильность адресации микросхем, правильность вво­да/вывода, работу микросхем в статике, правильность комму­тации. Такой метод проверки называется тестированием ста­тическими сигналами. Устройство тестирования представляет статический аппаратный эмулятор микропроцессора (САЭ). На рис. 8.1 приведена схема САЭ. В устройстве использовано пять микросхем трех типов. САЭ осуществляет управление МП-системой точно так же, как и микропроцессор. В его со­ставе имеются переключатели А15-АО. Каждый из них одним концом соединяется с общим проводом, а другим — с согласую­щим резистором 4,7 кОм, подключенным к источнику питания + 5 В. В зависимости от положения переключателей через кабель на ножки коммутационной колодки, соответствующие адрес­ным выходам микропроцессора А15 — АО, подаются логические уровни 0 или 1, имитируя сигналы адресной шины МП. В составе САЭ имеются также переключатели D7-DO. С их помощью логические уровни 0 или 1 подаются на входы микросхем D1 nD2 типа К589АП16, представляющих двунаправленные буфер­ные усилители с высокой нагрузочной способностью. Логиче­ские уровни 0 или 1 через D1 и D2 подаются на ножки коммута­ционной колодки, соответствующие выводам D7-DO микро­процессора, имитируя выходные сигналы шины данных МП. К этим же ножкам подключены входы микросхем D3 и D4 типа К589АП26, представляющих инвертирующие двунаправ­ленные буферные усилители. Выходы D3 и D4 нагружены на светодиодные индикаторы, постоянно отображающие состоя­ние шины данных микропроцессора.

Особенностью микропроцессора КР580ИК80А является ис­пользование шины данных в начале каждого машинного цикла для выдачи управляющего слова, которое определяет один из десяти типов машинного цикла. По этой причине прежде чем с помощью САЭ осуществлять передачу информации по шине данных между САЭ, имитирующим МП, и памятью или между САЭ и УВВ, необходимо задать соответствующий тип машин­ного цикла путем выдачи кода управляющего слова по шине Данных и стробирования его сигналом SYNC. По сигналу SYNC тактовый генератор тестируемой системы вырабатывает им­пульс STSTB, стробирующий прием и фиксацию управляющего слова системным контроллером тестируемой системы. После снятия сигнала SYNC можно передавать информацию по шине данных в соответствии с заданным управляющим словом, так как но шине управления будут выдаваться соответствую­щие управляющие сигналы. Так, если задан машинный цикл выдачи информации из процессора в память, УВВ или стек, необходимо переключателями D7-DO набрать код управляю­щего слова, перевести переключатель SYNC из положения О в положение 1 и обратно, затем переключателями D7-DO на­брать код передаваемой информации, переключателями А15-АО набрать адрес ячейки памяти или порта вывода и перевести переключатель WR из положения 0 в положение 1 и обратно. При этом по сигналу WR и на основании зафикси­рованного управляющего слова системный контроллер тести-руемой системы вырабатывает управляющий сигнал W или OUT соответственно, по которому информация, выданная САЭ по шине данных, запишется в заданную ячейку памяти или будет принята заданным портом вывода. Если задан ма­шинный цикл приема информации из памяти, УВВ или стека, необходимо переключателями D7-DO набрать код управляю­щего слова, перевести переключатель SYNC из положения О в положение 1 и обратно, затем набрать переключателями Л15 — АО адрес ячейки памяти или порта ввода и перевести переключатель DBIN из положения 0 в положение 1 и обратно. При этом в положении 1 на светодиодных индикаторах САЭ будет отображаться принимаемая информация. Аналогично предыдущему системный контроллер тестируемой системы вырабатывает управляющий сигнал R или IN, по которому информация из заданной ячейки памяти или порта ввода пере­дается по шине данных в САЭ.

 

Рис. 8.1. Схема САЭ

 

Заметим, что с целью гашения дребезга контактов к пере­ключателям DBIN, WR и SYNC подключены триггеры, построен­ные на инверторах микросхемы D5 типа К155ЛЫ1. Поскольку остальные переключатели не оснащены схемами гашения дре­безга, они должны переключаться только тогда, когда DBIN, WR и SYNC находятся в положении 0.

Во избежание конфликтной ситуации на шине данных при непредусмотренном положении переключателей при положении переключателя DBIN в 1 блокируется выдача информации с пе­реключателей D7-DO на шину данных путем подачи логиче­ской 1 на входы выборки кристалла микросхем D1 и D2, что переводит их выходы в третье состояние.

Отладка шины адреса ПМ-ЭВМ. Определим, возможна ли передача логических 0 и 1 по адресным линиям АВ15 — АВ12 и АВ11-АВО. С этой целью введем САЭ в проверяемую ПМ-ЭВМ вместо МП путем установки коммутационной колодки САЭ в панельку МП и подадим питающие напряжения на ПМ-ЭВМ.

Проверяем, что для всех адресных линий производится переключение сигнала с уровня 0 на уровень 1 под управлением МП. Если обнаружено, что для некоторых линий такое переклю­чение отсутствует, потребуется дальнейшее исследование. С этой целью осуществляется проверка каждой цепи путем прослежи­вания уровня напряжения в выбранных точках на протяжении всего информационного канала.

Отладка шины управления ПМ-ЭВМ. При отладке шины управления ПМ-ЭВМ будем использовать управляющие пере­ключатели САЭ — DBIN, WR и SYNC. Отладка состоит из двух этапов: на первом проверяется правильность записи кода управ­ляющего слова на микросхеме D29, на втором — правильность формирования системным контроллером ПМ-ЭВМ управляю­щих сигналов. При этом переключателями А15-А0 набран код 200Q 200Q.

Устанавливаем, что выходные управляющие сигналы ПМ-ЭВМ правильно отражают входные воздействия микропроцессора. Если на каком-то шаге процедуры будет обнаружено нарушение этого соответствия, можно легко осуществить статическую проверку логических сигналов и локализовать неисправность.

Отладка шины данных ПМ-ЭВМ. При отладке шины данных будем проверять возможность двунаправленной передачи дан­ных от МП к ОЗУ и УВВ и от ПЗУ, ОЗУ и УВВ к МП. Как и в предыдущем разделе, во избежание нежелательной выборки устройств и возникновения конфликта на и тане данных пере­ключателями А15-А0 набран код 200Q 200Q.

Если выходные сигналы на шине данных на некотором шаге процедуры не являются корректными, необходимо определить причины неисправности. Это достигается путем проверки стати­ческих сигналов на протяжении информационного канала.

Успешное завершение процедуры означает, что шина данных ПМ-ЭВМ при выводе данных функционирует правильно, т. е. шина данных должна выводить информацию, соответствующую сигналам от МП.

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

Ускоренная проверка ПМ-ЭВМ. Приведенная методика про­верки позволяет полностью и последовательно проверить в ста­тике работу всех устройств ПМ-ЭВМ. Однако часто можно огра­ничиться проверкой по разделу "Отладка схем дешифрации адреса и выработки сигналов выборки устройств", так как данная проверка является итоговой. Если обнаружены какие-либо неисправности, то необходимо провести полную проверку. Хотя вероятность нормальной работы при выбранных пара­метрах схемы весьма высока, проверка в статике не гаранти­рует работоспособность ПМ-ЭВМ в динамических условиях, так как не проверяются временные соотношения между сиг­налами в системе, не известны действительные задержки логи­ческих схем и не исключено, что к какой-нибудь сигнальной линии по ошибке подпаян конденсатор. Кроме того, нет гаран­тии, что все ячейки ОЗУ функционируют нормально. Поэтому после отладки ПМ-ЭВМ с помощью САЭ, когда нормально функционирует клавиатура, вводится и считывается информа­ция, следует произвести программные проверки, описываемые в § 8.3.

 

ОТЛАДКА

В РАБОЧЕМ РЕЖИМЕ

 

Итак, ПМ-ЭВМ собрана, реаги­рует на нажатия клавиш, индикация загорается и гаснет, по-ви­димому, так, как нужно. Но это еще не значит, что ПМ-ЭВМ полностью проверена и функционирует правильно. Гарантиро­вать стопроцентную проверку вычислительной системы вообще невозможно, тем более с помощью имеющихся у читателя про­стейших средств. МП может неправильно выполнять некоторые операции и притом только для некоторых сочетаний кодов, микросхемы запоминающих устройств могут иметь неисправ­ные или ненадежные ячейки, искажающие некоторые сочетания кодов. Отдельные элементы ЭВМ могут работать в предельных режимах по нагрузке, по временным допускам, по питанию, по уровню помех и выдавать сбои при изменении внешних условий. Рано или поздно это выявится в процессе эксплуатации. Однако надлежаще проведенные испытания в начале эксплуатации по­зволят выявить значительную часть дефектов и устранить их. Первое, что необходимо сделать, - это проверить работоспо­собность ОЗУ. Простейший способ - записывать в ячейки ОЗУ с помощью клавиатуры различные коды, а затем последователь­но считывать их, проверяя совпадение. Такой метод очень трудо­емок, так как ПМ-ЭВМ имеет 1024 ячейки ОЗУ, к тому же не­которые ячейки, надежные в статике, в динамике могут выда­вать неверные коды. Приведенная ниже программа позволяет автоматически записать заданный код в произвольно заданную зону оперативной памяти. Программа записывается, начиная с ячейки ОЗУ с адресом 014Q OOOQ и занимает 24 ячейки. Зона памяти, в которую заносится код, может начинаться с ячейки 014Q 030Q. Этот адрес заносится в регистровую пару Н коман­дой LXIH. Адрес конца зоны заносится в регистровую пару D командой LXID. Устанавливаемый код задается вторым байтом команды MVIM адреса 014Q 007Q и 014Q 024Q. Проверку пра­вильности записи можно произвести вручную, последовательно просматривая память:

 

014000041 Ml: LXIH, 014Q 030Q

014001 030

014003021 LXI D, 017Q377Q

014 004 377

014006066 M2: MVIM, OOOQ

014 007 000

014010043 INXH

014011 174 MOV A, H

014012222 SUBD

014 013 302 JNZ M2

014014 006

014015 014

014016173 MOV A, E

014017225 SUBL

014 020 302 JNZ M2

014 021 006

014 023 066 MVI M, OOOQ

014 024 000

014025303 JMPM1

014 026 000

 

Путем незначительного усложнения программы можно авто­матизировать проверку правильности записи:

 

014 000 006 MVI B, OOOQ

014 001 000

014002041 Ml: LXI H, 014Q 055Q

014 004 014

014 005 021 LXI D, 020Q OOOQ

014 006 000

014 007 020

014010160 M2: MOV M, В

014011 170 MOV А, В

014012226 SUBM

014013302 JNZM4

014014 035

014015 014

014016043 МЗ: INX H

014017174 MOV A, H

014 020 222 SUB D

014021302 JNZM2

014023 014

014024 173 MOV A, E

014025225 SUB L

014026302 JNZ M2

014031000 NOP

014032303 JMPM1

014033 002

014034 014

014035174 M4: MOV A. H

014036323 OUT 0010

014037 001

014040175 MOV A, L

014041323 OUT OOOQ

014 042 000

014043 176 MOV A, M

014044323 OUT002Q

014045 002

014046315 CALLSKL

014047 177

014051303 JMPM3

014053 014

 

В данной программе проверочный код заносится по адресу 014Q 001Q. Сверка кодов производится последовательно в по­рядке возрастания адресов. При обнаружении ошибки програм­ма выводит адрес в порт 001 (старшие разряды) и в порт 000 (младшие разряды), содержимое ячейки — в порт 002 и перехо­дит в режим опроса клавиатуры. Нажатие любой кнопки за­пускает программу на проверку следующих ячеек до новой ошибки, и так далее до конца проверяемой зоны. Для более полной проверки необходимо задавать различные проверочные коды, в предельном случае — от OOOQ до 377Q. Поставив на место команды NOP по адресу 014Q 031Q команду INRB (код 004Q), получим программу автоматической проверки памяти для всех кодов. Читатель" может сам оценить, какая программа удобнее в эксплуатации. Необходимо заметить, что ячейки ОЗУ, отведенные для программы проверки, должны быть заве­домо исправными, и чем длиннее программа, тем труднее найти зону для ее размещения.

В результате проверки выясняется, какой частью ОЗУ можно располагать для работы. Лучше всего, когда все ячейки ОЗУ исправны и, значит, программы могут последовательно разме­щаться в ячейках памяти. Однако и при наличии дефектных ячеек (если их не слишком много) можно использовать почти весь оставшийся объем памяти, обходя дефектные места с по­мощью команды JMP.

С помощью простейших пробных программ необходимо также проверить исполнение всей системы команд МП. Напри­мер, программа MVI A, OPERA ADI, OPERB OUT PORT1 проверяет исполнение команд MVIA, ADI и OUT.

 

megalektsii.ru

Команда NOP - Эмулятор микропроцессора кр580ВМ80

Команда NOP

Описание: Пустая команда

Машинный код: 00H

Длина: 1 байт

Длительность: 1 цикл, 4 такта

Воздействие на флаги: не воздействует

Команда LXI B, DATA16

Описание: Загрузка константы в регистр BС

Машинный код: 01H

Длина: 3 байта

Длительность: 3 цикла, 10 тактов

Воздействие на флаги: не воздействует

Команда STAX B

Описание: Сохранение аккумулятора в ячейку памяти по адресу указаному в регистре BС

Машинный код: 02H

Длина: 1 байт

Длительность: 2 цикла, 7 тактов

Воздействие на флаги: не воздействует

Команда INX B

Описание: Увеличение регистра BС на единицу

Машинный код: 03H

Длина: 1 байт

Длительность: 1 цикл, 5 тактов

Воздействие на флаги: не воздействует

Команда INR B

Описание: Увеличение регистра B на единицу

Машинный код: 04H

Длина: 1 байт

Длительность: 1 цикл, 5 тактов

Воздействие на флаги: Задействованы все флаги, кроме флага переноса

Команда DCR B

Описание: Уменьшение регистра B на единицу

Машинный код: 05H

Длина: 1 байт

Длительность: 1 цикл, 5 тактов

Воздействие на флаги: Задействованы все флаги, кроме флага переноса

Команда MVI B, DATA8

Описание: Загрузка константы в регистр B

Машинный код: 06H

Длина: 2 байта

Длительность: 2 цикла, 7 тактов

Воздействие на флаги: не воздействует

Команда RLC

Описание: Циклический сдвиг аккуммулятора влево

Машинный код: 07H

Длина: 1 байт

Длительность: 1 цикл, 4 такта

Воздействие на флаги: Изменяет флаг переноса

Команда DAD B

Описание: Прибавляет к регистру HL значение из регистра BC

Машинный код: 09H

Длина: 1 байт

Длительность: 3 цикла, 10 тактов

Воздействие на флаги: Изменяет флаг переноса

Команда LDAX B

Описание: Загрузка в аккумулятор значения из ячейки памяти по адресу указаному в регистре BС

Машинный код: 0AH

Длина: 1 байт

Длительность: 2 цикла, 7 тактов

Воздействие на флаги: не воздействует

Команда DCX B

Описание: Уменьшение регистра BС на единицу

Машинный код: 0BH

Длина: 1 байт

Длительность: 1 цикл, 5 тактов

Воздействие на флаги: не воздействует

Команда INR C

Описание: Увеличение регистра C на единицу

Машинный код: 0CH

Длина: 1 байт

Длительность: 1 цикл, 5 тактов

Воздействие на флаги: Задействованы все флаги, кроме флага переноса

Команда DCR C

Описание: Уменьшение регистра C на единицу

Машинный код: 0DH

Длина: 1 байт

Длительность: 1 цикл, 5 тактов

Воздействие на флаги: Задействованы все флаги, кроме флага переноса

Команда MVI B, DATA8

Описание: Загрузка константы в регистр C

Машинный код: 0EH

Длина: 2 байта

Длительность: 2 цикла, 7 тактов

Воздействие на флаги: не воздействует

Команда RRC

Описание: Циклический сдвиг аккуммулятора вправо

Машинный код: 0FH

Длина: 1 байт

Длительность: 1 цикл, 4 такта

Воздействие на флаги: Изменяет флаг переноса

Команда LXI D, DATA16

Описание: Загрузка константы в регистр DE

Машинный код: 11H

Длина: 3 байта

Длительность: 3 цикла, 10 тактов

Воздействие на флаги: не воздействует

Команда STAX D

Описание: Сохранение аккумулятора в ячейку памяти по адресу указаному в регистре DE

Машинный код: 12H

Длина: 1 байт

Длительность: 2 цикла, 7 тактов

Воздействие на флаги: не воздействует

Команда INX D

Описание: Увеличение регистра DE на единицу

Машинный код: 13H

Длина: 1 байт

Длительность: 1 цикл, 5 тактов

Воздействие на флаги: не воздействует

Команда INR D

Описание: Увеличение регистра D на единицу

Машинный код: 14H

Длина: 1 байт

Длительность: 1 цикл, 5 тактов

Воздействие на флаги: Задействованы все флаги, кроме флага переноса

Команда DCR D

Описание: Уменьшение регистра D на единицу

Машинный код: 15H

Длина: 1 байт

Длительность: 1 цикл, 5 тактов

Воздействие на флаги: Задействованы все флаги, кроме флага переноса

Команда MVI D, DATA8

Описание: Загрузка константы в регистр D

Машинный код: 16H

Длина: 2 байта

Длительность: 2 цикла, 7 тактов

Воздействие на флаги: не воздействует

Команда RAL

Описание: Cдвиг аккуммулятора влево

Машинный код: 17H

Длина: 1 байт

Длительность: 1 цикл, 4 такта

Воздействие на флаги: Изменяет флаг переноса

Команда DAD D

Описание: Прибавляет к регистру HL значение из регистра DE

Машинный код: 19H

Длина: 1 байт

Длительность: 3 цикла, 10 тактов

Воздействие на флаги: Изменяет флаг переноса

Команда LDAX D

Описание: Загрузка в аккумулятор значения из ячейки памяти по адресу указаному в регистре DE

Машинный код: 1AH

Длина: 1 байт

Длительность: 2 цикла, 7 тактов

Воздействие на флаги: не воздействует

umozak.ru

На что способен эмулятор от Intel?

Многообразие и быстрая смена поколений архитектур вычислительных платформ постоянно ставит перед разработчиками программного обеспечения задачу адаптации своих продуктов для новых аппаратных решений. А пока очередная новейшая система еще «не доехала» до тестовой лаборатории, ознакомится с ней помогают эмуляторы.

Представляем исследование «эмулированной версии» 512-битной технологии векторных вычислений AVX512 (Advanced Vector Extension), представленной в процессорах Intel Skylake Xeon. Продукт Intel SDE (Software Development Emulator) позволит экспериментировать на платформе с процессором поколения Sandy Bridge, которое, как известно, поддерживает только 256-битные векторы.

Несколько слов об инструментальной платформе

Перед запуском эмулятора ознакомимся с конфигурацией системы. В отличие от эмулятора AMD SimNow, который работает даже на Intel-платформах, в SDE-симуляторе мы будет пользоваться только «каноническими» платформами:

Запуск утилиты системной информации на хост-платформе. Система с двумя процессорами Intel Xeon на основе ядра Sandy BridgeРис.1 Запуск утилиты системной информации на хост-платформе. Система с двумя процессорами Intel Xeon на основе ядра Sandy Bridge

Два 8 ядерных Intel Xeon, использующих технологию Hyper Threading, в общей сложности содержат 32 логических процессора. Наличие ACPI таблицы SRAT (System/Static Resource Affinity Table) идентифицирует NUMA-систему с двумя узлами, параметр Domains=2.

Почему в NUMA-системе с двумя процессорными сокетами три блока памяти (параметр RAMs=3)? Объектом декларирования в таблице ACPI SRAT являются не физические блоки памяти, а диапазоны, отведенные для них в адресном пространстве. Поскольку разработчики платформы, руководствуясь соображениями совместимости,  разместили ресурсы Memory-Mapped IO а также Firmware ROM в пределах нижних 4 гигабайт, блок памяти одного из процессоров фрагментирован и представлен в адресном пространстве в виде двух диапазонов, что в сочетании с одним диапазоном памяти второго процессора дает три.

Результаты бенчмарок на хост-платформе. Чтение 256-битными AVX инструкциями, для блока, размещаемого в кэш-памяти L1Рис.2 Результаты бенчмарок на хост-платформе. Чтение 256-битными AVX инструкциями, для блока, размещаемого в кэш-памяти L1

Оценим производительность хост-платформы. График показывает зависимость скорости чтения блока от его размера. В этом опыте размер задан в окрестности значения 32 килобайта, соответствующего кэш-памяти данных первого уровня. Вполне ожидаемо, что при выходе за пределы кэш-памяти, скорость падает. Параметр CPI (Clocks Per Instruction) отражает количество тактов, затрачиваемых на чтение одного 256-битного операнда. Программа визуализирует минимальное, максимальное и среднее значение этого параметра, а также соответствующую скорость в мегабайтах в секунду (MBPS). Для Sandy Bridge теоретический минимум равен 1 такту на 256-битное чтение. В нашем примере минимум равен 0.817 тактов. Это объясняется тем, что тест использует счетчик тактов TSC (Time Stamp Counter), поскольку он доступен на «пользовательском» уровне привилегий. Его показания начинают «отставать» от истинной тактовой частоты ядра в случае активности технологии Intel Turbo Boost.

Виртуальная машина

Запускаем отлаживаемое приложение под эмулятором, указав код виртуального процессора, соответствующий Skylake Xeon:

sde - skx -- <имя приложения>

Запуск утилиты системной информации под эмулятором. Система с двумя процессорами Intel Xeon на основе ядра Skylake

Рис.3 Запуск утилиты системной информации под эмулятором. Система с двумя процессорами Intel Xeon на основе ядра Skylake

Операции, использующие 512-битные AVX инструкции, стали доступны. Заметим, что Intel SDE не только реализует выполнение этих инструкций, но и модифицирует возвращаемые битовые поля CPUID features bitmap. Кроме того, установкой соответствующих битов в системном регистре XCR0 виртуального процессора, декларируется поддержка операционной системой 512-битного контекста. Все это позволило нашей информационно-диагностической утилите задействовать технологию AVX512.

Мультипроцессорная и NUMA-топология не изменились по сравнению с хост-платформой. Приложению доступны те же 32 логических процессора, но уже с расширившейся функциональностью.

Обратим внимание и на то, что декларируемый размер кэш-памяти уровней L2 и L3 уменьшился.

Результаты бенчмарок под эмулятором. Чтение 512-битными AVX инструкциями, для блока, размещаемого в кэш-памяти L1

Рис.4 Результаты бенчмарок под эмулятором. Чтение 512-битными AVX инструкциями, для блока, размещаемого в кэш-памяти L1

Очевидно, при эмуляции или программном выполнении машинных инструкций, производительность достаточно низкая, среднее время чтения 512-битного операнда более 150 тактов. На этом фоне уже не видна точка перегиба, характеризующая наличие кэш-памяти L1.

Резюме

Почему производительность под эмулятором так упала в сравнении с «хостовой» системой? Ведь, например, виртуальные машины на основе Oracle Virtual Box обладают значительно лучшим быстродействием?

Причина не только в том, что Oracle VMBox использует аппаратную виртуализацию, а Intel SDE нет. Для виртуальной машины Oracle VMBox, главную низкоуровневую работу, а именно выполнение потока инструкций, выполняет физический процессор, вмешательство гипервизора требуется только тогда, когда «гостевая» задача требует обращения к привилегированным системным ресурсам или выполнила некую недопустимую операцию. А в случае Intel SDE эмулятор должен программно реализовывать выполнение машинных инструкций, отсутствующих в системе команд реального процессора.

Вместе с тем, если не принимать во внимание неизбежное изменение динамических характеристик выполнения машинного кода, эмулятор Intel SDE решил поставленную задачу вполне успешно.

composter.com.ua

emulation - Как работают эмуляторы и как они записываются?

Эмуляция - это многогранная область. Вот основные идеи и функциональные компоненты. Я собираюсь разбить его на части, а затем заполнить детали с помощью изменений. Многие из вещей, которые я собираюсь описать, потребуют знания о внутренней работе процессоров - необходимы знания сборки. Если я немного расплывчата в некоторых вещах, задайте вопросы, чтобы я мог продолжить улучшать этот ответ.

Основная идея:

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

Эмуляция процессора:

Существует три способа обработки эмуляции процессора:

  • Интерпретация
  • Динамическая перекомпиляция
  • Статическая перекомпиляция

Со всеми этими путями у вас есть общая цель: выполните часть кода, чтобы изменить состояние процессора и взаимодействовать с "оборудованием". Состояние процессора - это конгломерация регистров процессора, обработчиков прерываний и т.д. Для заданного целевого процессора. Для 6502 у вас будет число 8-разрядных целых чисел, представляющих регистры: A, X, Y, P и S; у вас также будет 16-разрядный регистр PC.

С интерпретацией вы начинаете с IP (указатель инструкции - также называемый PC, счетчик программ) и читаете инструкцию из памяти. Ваш код анализирует эту инструкцию и использует эту информацию для изменения состояния процессора, указанного вашим процессором. Основная проблема с интерпретацией заключается в том, что она очень медленная; каждый раз, когда вы обрабатываете данную инструкцию, вы должны ее декодировать и выполнять требуемую операцию.

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

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

  • Код, который не находится в программе для начала (например, сжатый, зашифрованный, сгенерированный/измененный во время выполнения и т.д.), не будет перекомпилирован, поэтому он не будет запускаться
  • Было доказано, что поиск всего кода в данном двоичном эквиваленте эквивалентен проблема с остановкой

Они объединяются, чтобы сделать статическую перекомпиляцию полностью неосуществимой в 99% случаев. Для получения дополнительной информации Майкл Стейл провел большое исследование статической перекомпиляции - лучшее, что я видел.

Другая сторона эмуляции процессора - это способ взаимодействия с оборудованием. Это действительно имеет две стороны:

  • Время процессора
  • Обработка прерываний

Время работы процессора:

Некоторые платформы - особенно старые консоли, такие как NES, SNES и т.д. - требуют, чтобы ваш эмулятор имел строгое время для полной совместимости. С помощью NES у вас есть процессор PPU (блок обработки пикселей), который требует, чтобы процессор аккуратно помещал пиксели в свою память. Если вы используете интерпретацию, вы можете легко подсчитывать циклы и эмулировать правильное время; с динамической/статической перекомпиляцией, все это/много/сложнее.

Обработка прерываний:

Прерывания - это основной механизм, с которым процессор взаимодействует с оборудованием. Как правило, ваши аппаратные компоненты сообщают CPU о том, что прерывает его. Это довольно просто - когда ваш код выдает заданное прерывание, вы смотрите таблицу обработчика прерываний и вызываете правильный обратный вызов.

Эмуляция оборудования:

Есть две стороны для эмуляции данного аппаратного устройства:

  • Эмуляция функциональности устройства
  • Эмулирование реальных интерфейсов устройства

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

Фактический интерфейс устройства немного сложнее. Это, как правило, некоторая комбинация регистров с отображением памяти (например, части памяти, которые устройство наблюдает за изменениями в передаче сигналов) и прерывания. Для жесткого диска у вас может быть область с отображением памяти, где вы размещаете команды чтения, записи и т.д., Затем читайте эти данные.

Я бы углубился в подробности, но есть миллион способов, которыми вы можете пойти с ним. Если у вас есть какие-то конкретные вопросы, не стесняйтесь спрашивать, и я добавлю информацию.

Ресурсы:

Я думаю, что здесь был очень хороший ввод, но есть дополнительные тонны. Я более чем счастлив помочь с любыми вопросами; Я был очень расплывчатым в большинстве случаев просто из-за огромной сложности.

Обязательные ссылки в Википедии:

Общие ресурсы эмуляции:

  • Zophar - вот где я начал с эмуляции, сначала загрузил эмуляторы и в итоге разграбил их огромные архивы документации. Это самый лучший ресурс, который у вас может быть.
  • NGEmu - Не так много прямых ресурсов, но их форумы непобедимы.
  • RomHacking.net - Раздел документов содержит ресурсы, касающиеся архитектуры машин для популярных консолей.

Проекты эмулятора для ссылки:

  • IronBabel - это платформа эмуляции .NET, написанная в Nemerle и перекомпилирующая код на С# на лету. Отказ от ответственности: Это мой проект, поэтому прошу прощения за бесстыдную версию.
  • BSnes - Удивительный эмулятор SNES с целью обеспечения точности цикла.
  • MAME - аркадный эмулятор. Отличная рекомендация.
  • 6502asm.com - Это эмулятор JavaScript 6502 с прохладным небольшим форумом.
  • dynarec'd 6502asm - Это небольшой взлом, который я сделал за день или два. Я взял существующий эмулятор от 6502asm.com и изменил его, чтобы динамически перекомпилировать код для JavaScript для увеличения скорости.

Ссылки на перекомпиляцию процессора:

  • Исследование статической перекомпиляции, сделанное Майклом Стелом (ссылка на выше), завершилась в этой статье, и вы можете найти источник и такие здесь.

Добавление:

Прошло уже больше года с момента отправки этого ответа и со всем вниманием, которое он получал, я решил, что пора обновить некоторые вещи.

Возможно, самая захватывающая вещь в эмуляции прямо сейчас - libcpu, начатая вышеупомянутым Майклом Стилом. Это библиотека, предназначенная для поддержки большого количества ядер процессора, которые используют LLVM для перекомпиляции (статические и динамические!). Он получил огромный потенциал, и я думаю, что он будет делать большие вещи для эмуляции.

emu-docs также было доведено до моего сведения, в котором размещается большое хранилище системной документации, что очень полезно для целей эмуляции. Я не тратил много времени, но похоже, что у них много больших ресурсов.

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

qaru.site


 

..:::Новинки:::..

Windows Commander 5.11 Свежая версия.

Новая версия
IrfanView 3.75 (рус)

Обновление текстового редактора TextEd, уже 1.75a

System mechanic 3.7f
Новая версия

Обновление плагинов для WC, смотрим :-)

Весь Winamp
Посетите новый сайт.

WinRaR 3.00
Релиз уже здесь

PowerDesk 4.0 free
Просто - напросто сильный upgrade проводника.

..:::Счетчики:::..