Доставка цветов в Севастополе: SevCvety.ru
Главная -> Появление первого микропроцессора

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 [77] 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116

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

5.5.2. ПРЯМАЯ ПЕРЕКОДИРОВКА СТРОКИ

Пусть имеется некоторая строка, представляющая собой массив символов, закодированный в системе кодов А (входная система кодирования). Необходимо получить строку, содержащую такую же последовательность символов, но закодированную в системе кодов В (выходная система кодирования). Если входная и выходная системы кодирования различаются незначительно (небольшим количеством символов), перекодировку можно осуществить путем последовательного просмотра входной строки и селекции различающихся массивов с их последующей заменой. В более общем случае перекодировка производится с помощью специальной таблицы. Таблица составляется следующим образом: в i-й элемент таблицы помещается код символа в выходной системе кодирования, соответствующий символу, который кодируется кодом i во входной системе кодирования. Таким образом, код символа во входной системе кодирования можно использовать как индекс для нахождения соответствующего кода выходной системы кодирования в таблице (схема перекодировки приведена на рис. 5.6). Программа перекодировки имеет вид:

ППКОД:

; ЯОДПРОГРАМНА ПРЯНОЙ ПЕРЕКОДИРОВКИ СТРОКИ. ; ПАРАНЕТРЫ: (BfC) - АДРЕС ВХОДНОЙ СТРОКИ» (В»Е) - АДРЕС ; ТАБЛИЦЫ ПЕРЕКОДИГОВК-И» (ST+l) - АДРЕС ВЫХОДНОЙ СТРОКИ. ; (ST+2)-ДЛИНА ВХОДНОЙ СТРОКИ.

5 ОЦЕНКА: БРЕИЯ - 10+385»Н ТАКТОВ. ГДЕ N - ДЛИНА СТРОКИ? 5 ДЛИНА-67 ЕАЙТ.

;кккхкххххкккххххххххкхххнк«ххххххххххкхххххххххх«««х»«« » ФОРНИГОВАИИЕ ИНДЕКСА ПО КОДУ ВХОДНОЙ СТРОКИ

21АЗ 2600 KVI Н>0

21А5 OA LDAX Б



21а6 6f

l»a ? (Hi-L)-индекс

5 получение соответствующего кода в выходной строке

21й7 19

xtrn

e»c,1 ? (b.c)-адрес выходной стпоки

21в5 7е

a>k

21в6 02

stax

; модификация

указателей

21б7 03

xtrn

в.с»1 (в.с)-адрес входной ctpoiw

21с5 03

xtrh

в.с.2 i (в.о-длина входной строки

21d3 ob

i проверка на

окончание просмотра входной строки

2Ш 79

2iD5 ео

xtrn

б.с,2 ; (в.с)-адрес входной строки

21e3 c2a321

ппкод ; если входная строка не исчерпана

21е6 с9

Входиаа строка

Лйходтя строка

\ 07

04 1

вР 1 A3

Таблица перекодироЬки Рис. 5.6. Схема перекодировки символов входной и выходной строк

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

S.S.3. ОБРАТНАЯ ПЕРЕКОДИРОВКА СТРОКИ

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



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

опкол:

; nOflnPOrPfthhA обратной перекодировки строки.

t параметры: (б,с) - адрес входной строки. (в.е) - адрес

; таблицы перекодировки. (st+1) - адрес выходной строки.

} (st+2) - длина входной строки.

; оценка: время-10h26g5xm тактов.где М - длина выходной

; строки; длина - 79 байт; ГЛУГ*1НА стека - s байт.

;xkxxx«xx*x»xmsxxsx*kxxxxxx«k«xxxxxsxxxxxx«xxx«xkxxxxx»»

; поиск элемента входной строки в таблице перекодировки

21Е7 21Е8 21Е9 21ЕА 21ЕВ 21ЕС 21EF 21F0 21F3 21F4 2iF5 21F6 21F7 21FS 21F9 21FA

с5 69 60 4е d5

217f00 е5

cbf520

2204 7в

2205 02

2206 03

2214 с1

2215 03

2223 ов

2224 79

2225 во

2233 с2е721 2236 с9

push

push lxi push call pop pop mov sub mov mov sbb mov

l.c Н.б

h.7fh h

пск1

a.l e

l.a a.h в

; (с)-код ЭЛЕМЕНТА входной строки

! (е)-код элемента выходной строки ! запись элемента в выходную строку

lbsp б.с.2 ; (б.с)-адрес выходной строки мои a.l stax в

; модификация указателей ihx в xtrn в.с,2

pop в ; (в,с)-адрес входной строки

inx Б

5 проверка на окончание просмотра входной строки

xtrn

вех мои

ora xtrh jnz ret

в.с.2 в

в.с.2 опкод

; (в.о-длинА входной строки

(ЕуС)-АДРЕС ВХОДНОЙ СТРОКИ

ЕСЛИ ВХОДНАЯ СТРОКА НЕ ИСЧЕРПАНА

Как и в предыдущей программе, для организации итеративного цикла используются два указателя -



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 [77] 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116



0.0192
Яндекс.Метрика