- •Оглавление
- •Введение
- •Задание на выполнение курсового проекта
- •Необходимая справочная информация
- •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.3 Кодирование текстовых данных
Если каждому символу алфавита сопоставить определенное целое число (например, порядковый номер), то с помощью двоичного кода можно кодировать и текстовую информацию…
Все современные таблицы кодировок происходят от …
Кодировка ASCII приведена в таблице …
Аналогичные системы кодирования текстовых данных были разработаны и в других странах. Так, например, в СССР в этой области действовала система кодирования КОИ-7 (код обмена информацией, семизначный). Однако поддержка производителей оборудования и программ вывела американский код ASCII на уровень международного стандарта, и национальным системам кодирования пришлось «отступить» во вторую, расширенную часть системы кодирования, определяющую значения кодов со 128 по 255. Отсутствие единого стандарта в этой области привело к множественности одновременно действующих кодировок. Только в России можно указать три действующих стандарта кодировки и еще два устаревших.
Все это привело к появлению нового кодового стандарта, так называемого кода КОИ-8…
На базе ГОСТ КОИ-8 сделана koi8-r (кодовая страница 878) — применяется в мире Linux…
Кодировка Microsoft Windows, обозначаемая сокращением CP1251…
Кодировка CP866...
Кодировка Mac…
Кодировка ISO 8859…
Юнико́д, или Унико́д (англ. Unicode) — стандарт кодирования символов, позволяющий представить знаки практически всех письменных языков…
В связи с изобилием систем кодирования текстовых данных, действующих в России, возникает задача межсистемного преобразования данных — это одна из распространенных задач информатики.
2 Практическая разработка
2.1 Блок – схема алгоритма
да
нет
нет
нет
да
да
2.2 Распределение памяти и листинг программы с комментарием
SP – адрес дна стека программы
С – счетчик цикла, также регистр C используется для хранения старшего байта
H,L – текущий адрес элемента исходного массива
D,E – текущий адрес элемента результирующего массива
500016 – адрес начала массива исходных чисел
700016 – адрес начала массива результатов
Адрес |
Данные |
Ассемблерный код |
Комментарий |
4000 |
21 |
LXI SP,A000h |
Создание стека программы |
4001 |
00 |
||
4002 |
A0 |
||
4003 |
21 |
LXI H,5000h |
Загрузка в H,L адреса, начиная с которого будет считан массив исходных констант |
4004 |
00 |
||
4005 |
50 |
||
4006 |
11 |
LXI D,7000h |
Загрузка в пару D,E адреса, начиная с которого будет записан массив результатов |
4007 |
00 |
||
4008 |
70 |
||
4009 |
01 |
LXI B,000Ah |
Создание в регистре С счетчика цикла преобразования |
400A |
0A |
||
400B |
00 |
||
400C |
7E |
MOV A,M |
Загрузка констант из памяти |
400D |
C5 |
PUSH B |
Сохранение в стек счетчика цикла |
400E |
0E |
MVI C,00h |
Обнуление регистра С |
400F |
00 |
||
4010 |
C3 |
JMP 402Ah |
Переход к подпрограмме, получения старшего байта |
4011 |
2A |
||
4012 |
40 |
||
4013 |
CE |
ACI 64h |
Сложение аккумулятора с 6416 для восстановления значения при лишнем вычитании |
4014 |
64 |
||
4015 |
47 |
MOV B,A |
Сохранение аккумулятора в регистре В |
4016 |
3E |
MVI A,00h |
Обнуление аккумулятора |
4017 |
00 |
||
4018 |
C3 |
JMP 4033h |
Переход к подпрограмме, получения младшего байта |
4019 |
33 |
||
401A |
40 |
||
401B |
12 |
STAX D |
Сохранение младшего байта двоично-десятичного числа в памяти |
401C |
79 |
MOV A,C |
Загрузка в аккумулятор из регистра С старшего байта двоично-десятичного кода |
401D |
13 |
INX D |
Переход к следующему адресу записи |
401E |
12 |
STAX D |
Сохранение старшего байта двоично-десятичного числа |
401F |
13 |
INX D |
Переход к следующему адресу записи |
4020 |
C1 |
POP B |
Восстановление из стека счетчика цикла |
4021 |
OD |
DCR C |
Отрицательное приращение регистра С |
4022 |
CA |
JZ 403Dh |
Если счетчик достиг нуля, то программа завершена |
4023 |
3D |
||
4024 |
40 |
||
4025 |
4F |
MOV C,A |
Иначе аккумулятор копируем в регистр С |
4026 |
23 |
INX H |
Переход к следующему адресу записи |
4027 |
C3 |
JMP 400Ch |
Возврат к началу подпрограммы |
4028 |
0C |
||
4029 |
40 |
||
402A |
D6 |
SUI 64h |
Вычитание из аккумулятора 6416, для получения старшего байта |
402B |
64 |
||
402C |
DA |
JC 4013h |
Если число станет меньше 6416, то возвращаемся к основной процедуре |
402D |
13 |
||
402E |
40 |
||
402F |
0C |
INR C |
Положительное приращение регистра С |
4030 |
C3 |
JMP 402Ah |
Возврат к началу подпрограммы для получения старшего байта |
4031 |
2A |
||
4032 |
40 |
||
4033 |
05 |
DCR B |
Отрицательное приращение регистра В, для получения младшего числа |
4034 |
CA |
JZ 401Bh |
Если Z=0, весь остаток исходных констант записывается в аккумулятор; если Z=1, то возврат по адресу 4018 |
4035 |
1B |
||
4036 |
40 |
||
4037 |
C6 |
ADI 01 |
Увеличение аккумулятора на 1 |
4038 |
01 |
||
4039 |
27 |
DAA |
Двоично-десятичная коррекция аккумулятора
|
403A |
C3 |
JMP 4033h |
Возврат к началу подпрограммы |
403B |
33 |
||
403C |
40 |
||
403D |
C3 |
JMP 40h |
Выход из программы в монитор |
403E |
40 |
||
403F |
00 |
