Содержание.
Введение.................................................................................................................................2
Аналитическая часть...............................................................................................3
Практическая разработка........................................................................................6
Блок-схема алгоритма с поясняющим текстом..............................................6
Распределение памяти и листинг программы с комментарием..................10
Результаты тестирования программы............................................................12
Описание использованных при проектировании средств вычислительной техники.....................................................................................................................13
Выводы...................................................................................................................................14
Литература.............................................................................................................................15
Введение.
Задача для разработки алгоритма и программной реализации на Эмуляторе микро-ЭВМ СМ-1800.
Пользуясь программой-монитором, занести в память ЭВМ, начиная с адреса 500016, следующий массив из 10 восьмиразрядных констант:
Адрес16 |
Константа16 |
Адрес16 |
Константа16 |
5000 5001 5002 5003 5004 |
09 FF 7D AC 19 |
5005 5006 5007 5008 5009 |
88 4D FA 36 00 |
Будем рассматривать их как массив однобайтных целых чисел со знаком в прямом коде.
Составить программу, которая выбирает из исходного массива (с адреса 500016), отрицательные числа и преобразует их в массив кодов КОИ-7 шестнадцатеричных цифр, записывая с адреса 600016. (600016 – символ старшей шестнадцатеричной цифры 1-го числа, 600116 – символ младшей шестнадцатеричной цифры 1-го числа
и т.д.).
Программу располагать в памяти с ячейки 400016.
1.Аналитическая часть.
Двоично-десятичное кодирование.
Наряду с двоичными кодами, которыми оперирует ЭВМ, для ввода и вывода десятичных чисел (данных) используют специальное двоично-десятичное кодирование. При двоично-десятичном кодировании каждая десятичная цифра заменяется тетрадой (четверкой) двоичных цифр, а сами тетрады записываются последовательно в соответствии с порядком следования десятичных цифр. При обратном преобразовании двоично-десятичного кода в десятичный исходный код разбивается на тетрады вправо и влево от запятой, которые затем заменяются десятичными цифрами.
Таким образом, при двоично-десятичном кодировании фактически не производится перевод числа в новую систему счисления, а мы имеем дело с двоично-кодированной десятичной системой счисления.
Например, десятичное число 15(10)= 1111(2)= 0001 01012-10.
Арифметические действия над ДД-кодами.
Приведем один из алгоритмов сложения, который получил довольно широкое распространение.
Сложение чисел начинается с младших цифр (тетрад) и производится с учетом возникающих переносов из младших разрядов в старшие.
Вычитание мы заменяем сложением, причём число, которое мы вычитаем, нужно перевести в прямой, обратный и дополнительный коды.
Час я приведу примеры сложения и вычитания ДД-кодов, взятых из задания к своему курсовому проекту.
Произвести сложение А=0716 и В=2216.
А2-10 0000 0111
+
B2-10 0010 0010
С2-10 0010 1001
Теперь вычтем, например, из А=8516 В=2216.
2216=0010 00102-10. Переведем это число в прямой, в обратный, затем в дополнительный коды. Получим число -2216=1110 11102-10=B'
Нужно сложить A и B’.
А2-10 1000 0101
+
B’2-10 1110 1110
С 2-10 0110 0011
Должно получиться число С16=63. Так и есть, младшая тетрада – это 3, а старшая – это 6.
Стандарты кодирования текстов.
Для компьютерного представления текста необходимо каждому знаку присвоить некоторое число — его код. Все современные таблицы кодировок происходят от возникшей еще в 60-е годы 7-разрядной таблицы ASCII (American Standard Code for Information Interchange), которая содержит 33 кода команд или управляющих символов, большая часть которых сегодня не используется, и 95 кодов для различных знаков, достаточных для работы с английскими текстами. При 7-разрядном кодировании каждому символу сопоставляется 7 бит, то есть число в диапазоне от 0 до 127. В простых текстовых (plain text) файлах допустимы только управляющие символы, отмечающие концы строк и переходы на позиции табуляции. Скажем, маркер конца строки в Linux — это код 10, в Macintosh OS — 13, в CP/M, DOS и Microsoft Windows — последовательность кодов 13, 10.
Для аналогичного представления знаков русского алфавита ныне применяется таблица КОИ-7 (Код для Обмена Информацией 7-битный. У такого кодирования есть два важных преимущества: оно компактно (для доступа к латинским и другим буквам и возврата обратно к кириллице используются специальные управляющие коды) и вводит естественную транслитерацию, что позволяет работать с текстами на русском единообразно в разных компьютерных системах. Со временем такая кодовая таблица оказалась недостаточной для широкого использования из-за отсутствия в ее составе кодов символов русского алфавита (кириллицы) и псевдографики (символов, позволяющих строить примитивные графические изображения на текстовом экране). Возникли новые модификации кода КОИ-7 ,так называемые таблицы КОИ-7 Н1, КОИ-7 НПО, КОИ-7 НАП и КОИ-7 НПП, которые, в свою очередь, не полностью решили возникшие проблемы.
Все это привело к появлению нового кодового стандарта, так называемого кода КОИ-8. При этом способе кодирования для представления символа используется 8 бит информации, что дает возможность в рамках одной кодовой таблицы использовать 256 (28) символов. Первая половина таблицы полностью совпадает с кодовой таблицей КОИ-7 НО, вторая половина таблицы, содержащая символы большой и малой кириллицы, практически повторяет кодовую таблицу КОИ-7 Н1, но значения кодов символов кириллицы увеличены на 128. Такое построение таблицы обусловлено желанием сохранить совместимость между этими двумя стандартами. В этой таблице, в отличие от предыдущей, представлена шестнадцатеричная кодировка.
ASCII-коды все еще довольно широко используются для текстов на английском, особенно в США, а также в системах e-mail. Стандартные текстовые утилиты UNIX (grep, sed, awk) вплоть до середины 90-х по умолчанию могли работать только с ASCII — подключение 8-го бита требовало их перекомпиляции. Сегодня 7-битная кириллица встречается, пожалуй, только в системе для подготовки научных публикаций TEX, да и то неявно, а для кодирования символов алфавитов большинства языков используется 8-разрядное кодирование, при котором каждому символу сопоставляется 8 бит или 1 байт кода. Код представляет собой число в диапазоне от 0 до 255, а первые 128 символов при таком кодировании аналогичны ASCII.
Существует пять признанных во всем мире таблиц кодировки русских букв:
ISO 8859-5 — стандарт международной организации по стандартизации для кириллицы, в РФ используется редко. Базируется на основной кодировке ГОСТ. Псевдографика отсутствует.
Кодовая страница (code page, CP) 866 основана на альтернативной кодировке ГОСТ. Она создана специально для ОС MS-DOS, в которой часто используются символы псевдографики. Практически вытеснена следующей таблицей.
Кодовая страница 1251 для Microsoft Windows стала популярной благодаря огромному влиянию фирмы Microsoft на рынок компьютерных технологий. Кроме того, в ней отсутствует ненужная в графических средах поддержка символов псевдографики и гораздо полнее, чем в других кодировках, представлены такие символы, как ©, ®, №, различные виды кавычек, тире и т. п.
На базе ГОСТ КОИ-8 сделана koi8-r (кодовая страница 878) — применяется в мире Linux. В ней естественным образом обеспечивается связь с 7-разрядным кодированием: отбрасыванием восьмого бита из кода буквы русского алфавита koi8-r получается код той же буквы в КОИ-7. Кодировка поддерживает символы псевдографики, занимающие около половины всех кодов. В 1993 году стандартизирована в Интернете, а в начале XXI века появились ее модификации koi8-u и koi8-ub — с дополнениями до украинского и затем, соответственно, до белорусского. В koi8-ub вместо символов псевдографики включаются знаки разнообразных кавычек и тире, №, евро, иены и т. п. Эта кодировка находится на начальной стадии внедрения, и ее перспективы пока туманны.
Кодовая страница 10007 — используется на компьютерах Macintosh, по своему набору знаков почти совпадает с CP1251.
2. Практическая разработка.