Доставка цветов в Севастополе: 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

211А ЕВ 211В 42 211С 1600 211Е 7Е 211F В9

2120 С8

2121 19 ?122 05 2123 С21Е21

2126 21FFFF 2129 С9

LDSP

D.EfI

XCHG

i (H,U-АДРЕС НАЧАЛА ЭЛЕМЕНТА

B.D ; (В)-КОЛИЧЕСТВО ЭЛЕМЕНТОВ

DrO ! (D.E)-ДЛИНА ЭЛЕМЕНТА

«ИКЛ7: МОУ

; ЕСЛИ ключи СОВПАЛИ

; МОДИФИКАЦИЯ УКАЗАТЕЛЯ ТАКЛИЦЫ И СЧЕТЧИКА ЭЛЕМЕНТОВ.

D ! (H.L)-АДРЕС СЛЕДУЮЩЕГО ЭЛЕМЕНТ

«ИКЛ7 ; ЕСЛИ ЭЛЕМЕНТ НЕ ПОСЛЕДНИЙ

! ВОЗВРАТ ПРИ НЕУДАЧНОМ ПОИСКЕ

H.OFFFFH

1-й элемент

Ключ

2-й элемент

т-и элемент

п байт

Рис. 5.5. Структура таблицы

Для организации цикла сравнения используются две рабочие переменные - указатель таблицы, который содержит адрес первого байта очередного элемента, и счетчик, содержащий количество непросмотренных элементов. На каждой итерации производится сравнение значения байта, адресуемого указателем, с заданным кодом. Если они равны, то поиск завершается и осуществляется возврат из программы. При этом текущее значение указателя таблицы возвращается в качестве выходного параметра. В противном случае вычисляется новое значение указателя путем добавления к его текущему значению длины элемента. Хотя величина длины элемента помещается в одном байте, для ее хранения выделяется регистровая пара. Это сделано для упрощения модификации указа-



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

5.4.6. ПОИСК ЭЛЕМЕНТА СПИСКА

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

ТСКСП:

; ПОДПРОГРАММА ПОИСКА ЭДЕМЕНТА В СПИСКЕ ПО КЛИЧУ.

? ВХОДНЫЕ ПАРАНЕТРЫ: <Е,С)- АДРЕС НАЧАЛА СПИСКА,<Е)-ЗНА-

! ЧЕНИЕ КЛЮЧА.

i ВЫХОДНЫЕ ПАРАМЕТРЫ: (H,L) - АДРЕС НАЙДЕННОЙ ЗАПИСИ ПРИ ; УСПЕШНОМ ПОИСКЕ,<H,L)=OFFFFH В ПРОТИВНОМ СЛУЧАЕ, (В,С) ; - АДРЕС ПРЕДЫДУЩЕЙ ЗАПИСИ В СПИСКЕ.

; ОЦЕНКА: ВРЕМЯ - 10+93иН ТАКТОВ, ГДЕ Н-КОЛИЧЕСТВО ЗЛЕ-; МЕНТОВ в СПИСКЕ; ДЛИНА - 27 ЕАЙТ.

LXI Н,0 ; СРАВНЕНИЕ ПОЛЯ КЛЮЧА С ЗАДАИННМ ЗНАЧЕНИЕМ

2290 210000

2293 03

2294 03

2295 OA

2296 ЕВ

2297 ОВ 229S ОВ

2298 се

229Е 4Е 229F 23 22А0 46 22А1 2В

22А2 79 22АЗ ВО 22А4 С29322

22А7 21FFFF 22АА С9

ЦИКЛЮ:

INX INX LBAX СМР

вех вех

XCHR RZ

В В В Е В В

} (В,С) - АДРЕС ПОЛЯ КЛЮЧА

; ЕСЛИ ключ СОВПАЛ с ЗАДАННЫМ f ПЕРЕХОД К СЛЕДУЮЩЕМУ Э.ЛЕМЕНТУ мои СМ INX Н

НТО В,М ; (В,С)-АДРЕС СЛЕДУЮЩЕГО ЭЛЕМЕНТА

вех Н

i ПРОВЕРКА НА ЗАВЕРШЕНИЕ ПРОСМОТРА СПИСКА

кои А, с ! ПРОВЕРКА ПОЛЯ СВЯЗИ НА НОЛЬ

ORA В

JNZ ЦИКЛЮ ; ЕСЛИ ПРОСИОТР НЕ ОКОНЧЕН ; ВОЗВРАТ ПРИ НЕУДАЧНОМ ПОИСКЕ LXI H,OFFFFH RET



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

5.5. преобразования структур 5.5.1. ЗАДАЧИ ПРЕОБРАЗОВАНИЯ

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

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



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.0542
Яндекс.Метрика