Кодирование текстовых данных

Если каждому символу алфавита сопоставить определенное целое число (например, порядковый номер), то с помощью двоичного кода можно кодировать и текстовую информацию…

Все современные таблицы кодировок происходят от …

Кодировка ASCIIприведена в таблице …

 

Аналогичные системы кодирования текстовых данных были разработаны и в других странах. Так, например, в СССР в этой области действовала система кодирования КОИ-7 (код обмена информацией, семизначный). Однако поддержка производителей оборудования и программ вывела американский код ASCIIна уровень международного стандарта, и национальным системам кодирования пришлось «отступить» во вторую, расширенную часть системы кодирования, определяющую значения кодов со 128 по 255. Отсутствие единого стандарта в этой области привело к множественности одновременно действующих кодировок. Только в России можно указать три действующих стандарта кодировки и еще два устаревших.

 

Все это привело к появлению нового кодового стандарта, так называемого кода КОИ-8…

 

На базе ГОСТ КОИ-8 сделана koi8-r (кодовая страница 878) — применяется в мире Linux…

 

Кодировка Microsoft Windows, обозначаемая сокращением CP1251…

Кодировка CP866...

Кодировка Mac…

Кодировка ISO 8859…

 

Юнико́д, или Унико́д (англ. Unicode) — стандарт кодирования символов, позволяющий представить знаки практически всех письменных языков…

 

В связи с изобилием систем кодирования текстовых данных, действующих в России, возникает задача межсистемного преобразования данных — это одна из распространенных задач информатики.

Практическая разработка

2.1 Блок – схема алгоритма

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

SP – адрес дна стека программы

С – счетчик цикла, также регистр C используется для хранения старшего байта

H,L – текущий адрес элемента исходного массива

D,E – текущий адрес элемента результирующего массива

500016 – адрес начала массива исходных чисел

700016 – адрес начала массива результатов

 

Адрес Данные Ассемблерный код Комментарий
LXI SP,A000h Создание стека программы
A0
LXI H,5000h Загрузка в H,L адреса, начиная с которого будет считан массив исходных констант
LXI D,7000h Загрузка в пару D,E адреса, начиная с которого будет записан массив результатов
LXI B,000Ah Создание в регистре С счетчика цикла преобразования
400A 0A
400B
400C 7E MOV A,M Загрузка констант из памяти
400D C5 PUSH B Сохранение в стек счетчика цикла
400E 0E MVI C,00h Обнуление регистра С
400F
C3 JMP 402Ah Переход к подпрограмме, получения старшего байта
2A
CE ACI 64h Сложение аккумулятора с 6416 для восстановления значения при лишнем вычитании
MOV B,A Сохранение аккумулятора в регистре В
3E MVI A,00h Обнуление аккумулятора
C3 JMP 4033h Переход к подпрограмме, получения младшего байта
401A
401B STAX D Сохранение младшего байта двоично-десятичного числа в памяти
401C MOV A,C Загрузка в аккумулятор из регистра С старшего байта двоично-десятичного кода
401D INX D Переход к следующему адресу записи
401E STAX D Сохранение старшего байта двоично-десятичного числа
401F INX D Переход к следующему адресу записи
C1 POP B Восстановление из стека счетчика цикла
OD DCR C Отрицательное приращение регистра С
CA JZ 403Dh Если счетчик достиг нуля, то программа завершена
3D
4F MOV C,A Иначе аккумулятор копируем в регистр С
INX H Переход к следующему адресу записи
C3 JMP 400Ch Возврат к началу подпрограммы
0C
402A D6 SUI 64h Вычитание из аккумулятора 6416, для получения старшего байта
402B
402C DA JC 4013h Если число станет меньше 6416, то возвращаемся к основной процедуре
402D
402E
402F 0C INR C Положительное приращение регистра С
C3 JMP 402Ah Возврат к началу подпрограммы для получения старшего байта
2A
DCR B Отрицательное приращение регистра В, для получения младшего числа
CA JZ 401Bh Если Z=0, весь остаток исходных констант записывается в аккумулятор; если Z=1, то возврат по адресу 4018
1B
C6 ADI 01 Увеличение аккумулятора на 1
DAA Двоично-десятичная коррекция аккумулятора  
403A C3 JMP 4033h Возврат к началу подпрограммы
403B
403C
403D C3 JMP 40h Выход из программы в монитор
403E
403F