- •Оглавление
- •Введение
- •Задание на выполнение курсового проекта
- •Необходимая справочная информация
- •1 Программирование в кодах для микроЭвм см-1800
- •1.1 Обозначения, используемые при описании команд
- •1.2 Список команд
- •1.3 Кратное описание команд
- •1.4 Коды операций команд (в порядке возрастания)
- •2 Некоторые приемы программирования в кодах
- •2.1 Перемещение данных
- •2.2 Организация цикла
- •2.3 Использование подпрограмм
- •2.4 Перекодирование информации
- •3 Эмулятор микроЭвм см-1800
- •3.1 Постановка задачи эмуляции
- •3.2 Технические данные
- •3.3 Описание программы
- •3.3.1 Главное меню
- •3.3.2 Основные окна
- •3.3.3 Дополнительные окна
- •3.4 Сообщения эмулятора
- •3.5 Характерные особенности эмулятора
- •3.6 Порядок установки и подготовка к работе
- •3.7 Системные требования
- •3.8 Справочная информация и тестирование
- •1) Соответствие клавиш стандартной клавиатуры ibm pc и оригинальной клавиатуры см-1800.
- •Пример выполнения курсового проекта
- •Задание
- •Индивидуальное задание № 28
- •Содержание
- •1 Аналитическая часть
- •1.1 Двоично-десятичное кодирование
- •1.2 Операции двоично-десятичной арифметики
- •1.3 Кодирование текстовых данных
- •2 Практическая разработка
- •2.1 Блок – схема алгоритма
- •2.2 Распределение памяти и листинг программы с комментарием
- •2.3 Результаты тестирования программы
- •3 Описание использованных при проектировании средств вычислительной техники
- •Список литературы
- •Приложение а
- •«Разработка программ преобразования форматов двоичных данных и сортировок в машинных кодах микро-эвм см-1800 с помощью эмулятора на пк»
- •Приложение б
- •Задание
- •Приложение в
- •190013, Г. Санкт-Петербург, Московский пр., д. 26
Необходимая справочная информация
Ниже приводится материал, необходимый для выполнения курсового проекта. В главе 1 вы сможете найти формальные данные по системе программирования микропроцессора КР580 (микроЭВМ СМ-1800). Представлены три таблицы, которые являются основным справочным материалом при программировании индивидуальных заданий. Первая таблица (наиболее полная, см. раздел 1.2) дает многостороннюю характеристику всех машинных команд. В таблице раздела 1.3 вы найдете словесную расшифровку тех же функций, что и в таблице 1.2. И, наконец, в таблице 1.4 мы приводим обратное соответствие шестнадцатеричных кодов ассемблерным изображениям машинных команд.
В главе 2 приведены несколько стандартных приемов программирования, которые могут помочь вам при подготовке проекта. Советуем вам тщательно в них разобраться и освоить стиль оформления листингов ваших будущих программ с комментариями.
Глава 3 посвящена описанию нашего основного средства для выполнения как курсовых, так и лабораторных работ – эмулятора микроЭВМ СМ-1800 на ПК. Приведенное описание может служить справочным материалом для эксплуатации программы-эмулятора на вашем ПК, которую вы «скачаете» с нашего сайта www.sapr.lti-gti.ru .
1 Программирование в кодах для микроЭвм см-1800
МикроЭВМ СМ-1800 представляет собой восьмиразрядную встраиваемую агрегативную машину, выполненную на микросхемах серий К580, К589, К565 и других. Центральный процессор ЭВМ КР580ИК80А является полным функциональным аналогом однокристального микропроцессора Intel 8080.
Все внешние устройства подключаются через соответствующие адаптеры к системной магистрали СМ-1800, выполненной по стандарту И41. Адресация устройств процессором согласно этому стандарту проходит по методу «изолированных линий», что означает использование специальных команд ввода/вывода (IN/OUT).
Лабораторный практикум по дисциплине «ЭВМ и периферийные устройства» включает в себя ряд работ на базе Эмулятора ЭВМ СМ-1800 на современных персональных компьютерах и содержит элементы программирования в машинных кодах и на ассемблере.
Методические указания могут быть использованы при проведении курсового проектирования по указанной дисциплине в качестве пособия для изучения приемов программирования на машинно-ориентированных языках.
1.1 Обозначения, используемые при описании команд
При описании команд микроЭВМ СМ-1800 используются следующие обозначения регистров:
R – обозначение одного из однобайтных регистров макропроцессора из следующего набора: A,B,C,D,E,H,L;
F – регистр флагов (однобайтный), пять из восьми битов которого используется для фиксации следующих признаков результата операции:
Таблица 1 – Назначение флагов
Разряд в регис-тре F |
Обозначение бита |
Содержание признака |
Состояние бита |
|
«1» |
«0» |
|||
0 |
CY |
перенос из 7-го разряда |
есть перенос |
нет переноса |
4 |
AC |
перенос из 3-го разряда |
есть перенос |
нет переноса |
6 |
Z |
нулевой результат |
результат равен нулю |
результат не равен нулю |
7 |
S |
знак результата |
отрицатель-ный (минус) |
положитель-ный (плюс) |
2 |
P |
оценка коли-чества единиц в коде результата |
чётное |
нечётное |
SP – указатель стека (двухбайтовый регистр);
PC – программный счетчик (двухбайтовый регистр);
M – символ, используемый для обозначения ячейки оперативной памяти, причем адрес этой ячейки указывается косвенно – он содержится в паре регистров H, L.
Система команд содержит команды выполнения логических операций, для обозначения которых используются индексы:
- логическое умножение – «И»;
- логическое сложение – «ИЛИ»;
- сложение по модулю 2 – исключающее «ИЛИ».
Конкретный код команд ADD, ADC, ANA, CMP, DCR, INR, MOV, MVI, ORA, SBB, SUB, XRA определяется подстановкой кода регистра-источника данных (SSS) или кода регистра-приемника данных (DDD). Приняты следующие коды для обозначения регистров:
Имя регистра |
Код регистра |
B |
000 |
C |
001 |
D |
010 |
E |
011 |
H |
100 |
L |
101 |
M (память) |
110 |
A (аккумулятор) |
111 |
Примеры.
1. Команда ADD R(код 1000 0SSS) осуществляет сложение содержимого аккумулятора и регистра R. Если в конкретном случае регистром R является регистр С, код которого SSS=001, то код команды записывается так:
1000 0001 или 81h в шестнадцатеричной системе.
2. Команда MOV R1,R2 (код 01DDDSSS) осуществляет пересылку содержимого из регистра-источника R2 в регистр-приемник R1.Если в конкретном случав регистром-источником является регистр E (SSS=011), а регистром-приемником регистр В (DDD=010), то код команды: 0101 0011=53h.
В описании команд циклического сдвига содержимого аккумулятора (RAL, RAR, RLC, RRC) использовано обозначение АМ -бит М регистра А (аккумулятора), причем А0 и А7-соответственно младший и старший (знаковый) биты аккумулятора.
При чтении описания команд следует учитывать следующие обозначения при записи:
B2 - второй байт команды ( в командах ADI, АСI, АNI, CPI, MVI, ORI, SBI, SUI, XRI – это непосредственные данные, в командах IN и OUT – адрес порта),
ВЗ – третий байт команды, обычно самостоятельно не выступающий,
→ направление передачи данных (...из...в...),
( ) - содержимое байта (команда, регистра, памяти). Следует читать:
(H) - содержимое регистра Н,
(В) - содержимое регистра В,
(В2)- содержимое второго байта команды,
(М) - содержимое ячейки оперативной памяти, адрес которой помещен в паре регистров Н, L, т.е. адресом является (Н, L).
При описании команд вызова (безусловного САLL и восьми по условию), требующих запоминания адреса возврата из подпрограммы в стековой памяти, а также команд извлечения содержимого регистров из стека (РОР) и засылки содержимого регистров в стек (РUSН) использованы квадратные скобки для обозначения адреса ячейки стека.
Например, запись [SР-1] [SР-2] (РС) следует читать так: поместить содержимое программного счетчика РС (два байта) в две ячейки стековой памяти, адреса которых определяются как уменьшенное соответственно на единицу и на два содержимое указателя стека SР.
Для команд условного вызова подпрограмм и возврата по условию в их описании даны два значения количества машинных циклов в команде: первое, если условие не выполнено и далее выполняется очередная команда программы, а второе – если условие выполнено и происходит вызов подпрограммы или возврат. Время выполнения одного цикла команды от 1 до 5 машинных циклов.
ЗАМЕЧАНИЕ:
Все команды преобразования данных (арифметические, логические) модифицируют пять описанных в таблице 1 флагов. В результате выполнения любой логической операции флаг СY сбрасывается в 0. Операция инкремента и декремента коротких (байтовых) регистров (INR_R, DCR_R) модифицируют все флаги кроме CY. Команды INX R и DCХ R значения флагов не изменяют.
