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

Элдмеит i

t/гграблающш код

Эл9МЁит2

Адрес подпрограммы

обрабтки

Элвмдцт N

Рис. 5.2. Структура таблицы управляющих кодов

такие же, как и в программе ЗАПЗ, но в регистровых парах- (В,С) и (D, Е) содержатся не начальные, а текущие значения соответствующих переменных. Если ни одно из сравнений полученного кода с управляющими кодами таблицы не дает положительного результата, полученный код записывается в заполняемый массив, значения указателя и счетчика длины массива модифицируются и выполняется следующая итерация.

5.3. копирование массивов 5.3.1. ПЕРЕСЫЛКА ИНФОРМАЦИИ С КОНЦА МАССИВА

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

2000 С5

2001 D5

2002 Е5

2003 19 222

КОШ:

; ПОЛПРОГРйМНА ПЕРЕСЫЛКИ ЙЙССИБА С КОНЦА МАССИВА.

5 ПАРАМЕТРЫ: <В»С)-АДРЕС МАССИВА-ПРИЕМНИКА(МПР) i. (В.Е)-АД-

; РЕС МАССИВА-ИСТОЧНИКА(MHC)f(H,L)-ДЛИНА МАССИВА.

; ОЦЕНКА: БРЕМЯ-149+41*Н ТАКТОБ.ГДЕ N-ЧИСЛО -ПЕРЕСЫЛАЕМЫХ

5 ЕАЙТ5 ЛЛИ11А-26 БАЙТ! ГЛУБИНА СТЕКА-6 ЕАЙТ.

гКККККККККНКККХККУКХКХКХХХКККККУНХКНКККХККУХНКНХКУУКККК

5 СОХРАНЕНИЕ РЕГИСТРОВ Б СТЕКЕ.

PUSH В

PUSH В

PUSH Н ; ОПРЕДЕЛЕНИЕ АДРЕСА КОНЦА МИС

BAD В



ЕВ XCHG ;<D.E)-АДРЕС КОНЦА ИИС

! ОПРЕДЕЛЕНИЕ АДРЕСА КОНЦА МНР

2006 Е1 POP »

2007 Е5 PUSH Н

2008 09 DftD Б

009 2В PCX Н ;<H»L)-АДРЕС КОНЦА ИПР

ооА С1 POP Б ЯВ.С) - ДЛИНА НАССИВА

200Б С5 PUSH Б

5 НЕПОСРЕДСТВЕННАЯ ПЕРЕСЫЛКА

200С 1А иИКЛ1! LDAX D

200D 77 пои М.А

200Е ОВ DCX Е

200F IB DCX D

2010 2В ICX Н

2011 73 MOV А>Б

2012 Bl ORA С

2013 C20C20 JNZ ЦИКЛ1

5 ВОССТАНОВЛЕНИЕ РЕГИСТРОВ

2016 El POP Н

2017 Dl POP D

2018 CI POP E -

2019 C9 RET

Массив - приемник

Массив- источник

Возрастание адресов

Массив - приемник

Массив - истоиник

Возрастание адресов Рис. 5.3. Схемы расположения массивов в памяти:

с - при пересылке с конца массива-источника; б - при пересылке с начала массива-источника

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



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

5.3.2. ПЕРЕСЫЛКА ИНФОРМАЦИИ С НАЧАЛА МАССИВА

Если адрес начала массива-источника принадлежит области памяти массива-приемника, пересылку массива необходимо начинать с младших адресов (рис. 5.3,6). Программа пересылки имеет вид:

201й С5 201Б DG 201С Е5

201D 1ft 201Е 02 201F 03

2020 13

2021 2В

2022 7С

2023 В5

2024 C21D20

2027 Е1

2028 D1

2029 С1 202ft С9

К0П2:

: ПОЯПРОГРАМНА ПЕРЕСЫ.ЧКИ HftCCMBft С HftSftflA НАССИЕА.

? ПАРАНЕТРЫ: (В,С)~АДРЕС НИР. (В.Е)-АДРЕС ЖС. (Н.Е)-ЯДИНА

i НАССКБА.

г ОЦЕНКА: БРЕНЯ-76+48*;Н ТАКТОВ. ГДЕ Н-КОДИЧЕСТЕО ПЕРЕСЫ-. ЛАЕМЫХ БАЙТ; ДЛИНА-17 БАЙТ! ГЛ)ЕИНА СТЕКА-6 ЕАЙТ.

J СОХРАНЕНИЕ РЕГИСТРОВ Б СТЕКЕ.

PUSH В

PUSH В

PUSH Н J НЕПОСРЕДСТВЕННАЯ ПЕРЕСЫЛКА ЧИКЛ2: LBAX В

STAX

Б D H

ЦИКЛ2

! ВОССТАНОВЛЕНИЕ РЕГИСТРОВ POP H POP D POP D RET

Структура программы аналогична структуре программы К0П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.0185
Яндекс.Метрика