Анимация
JavaScript


Главная  Библионтека 

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 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140

2. эксперимент

seg000:0000 aHelloSailor db Hello, Sailor

a) исходные данные

Message(">%x\n",MakeByte(SegByName("seg000")));

b) вызываем функцию MakeByte для преобразования элемента типа «строка» в элемент типа «байт», передавая ей линейный адрес головы данного элемента

seg000:

0000 aHelloSailor

seg000:

0001

seg000:

0002

seg000:

0003

seg000:

0004

seg000:

0005

seg000:

0006

seg000:

0007

seg000:

0008

seg000:

0009

seg000:

000A

seg000:

000B

seg000:

000C

seg000:

000D

>1

c) результат- успешное преобразование; хвост элемента типа строка преобразован в бестиповые байты.

3. эксперимент

seg000:0000 aHelloSailor db Hello, Sailor

a) исходные данные

Message(">%x\n",MakeByte(1+SegByName("seg000")));

b) вызываем функцию MakeByte для преобразования ячейки, принадлежащей хвосту элемента данных типа «строка», в элемент типа «байт».

seg000:0000 aHelloSailor db Hello, Sailor >0

c) результат - функция возвратила ошибку, не выполнив преобразования

4. эксперимент

seg000:0000 PUSH AX

a) исходные данные

Message(">%x\n",MakeByte(1+SegByName("seg000")));

b) вызываем функцию MakeByte для преобразования элемента кода в элемент данных типа байт

seg000:0000 PUSH AX

>0

c) результат - функция возвратила ошибку, не выполнив преобразования

??? #Верстальщику - change table

аргрумент пояснения

ea I линейный адрес бестипового байта или головы элемента данных"



return

=return

пояснения

успешное завершение

ошибка

Родственные функции: MakeWord, MakeDword, MakeQword, MakeFloat, MakeDouble, MakePAckReal, MakeTbyte.

Интерактивный аналог: "~Edit\Data"; <D>

success MakeWord(long ea)

Функция создает по переданному ей линейному адресу ea элемент данных типа слово, длиной два байта. Порядок следования младших и старших байт зависит от выбранного процессора. На микропроцессорах серии Intel 80x86 младший байт располагается по меньшему адресу и, соответственно, наоборот.

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

Ошибка возвратится и в том случае если по переданному функции линейному адресу находится хвост элемента данных, голова или хвост элемента кода.

Если хотя бы один из двух байт имеет неинициализированное значение, все слово приобретает неинициализированное значение.

Пример использования:

1. эксперимент

seg000:0000 db ? ; unexplored

seg000:0001 db ? ; unexplored

a) исходные данные

Message(">%x\n",MakeWord(SegByName("seg000")));

b) вызываем функцию MakeWord для создания нового элемента данных типа слово, передавая ей адрес цепочки из двух бестиповых байта

seg000:0000 dw ?

>1

c) результат - элемент данных типа слво успешно создан

2. эксперимент

seg000:0000 db ? ; unexplored

seg000:0001 db ?

a) исходные данные

Message(">%x\n",MakeWord(SegByName("seg000")));

b) вызываем функцию MakeWord для создания нового элемента данных типа слово, передавая ей адрес бестипового байта

seg000:0000 db ? ; unexplored

seg000:0001 db ?



аргрумент

пояснения

линейный адрес бестипового байта или головы элемента данных

return

=return

пояснения

успешное завершение

ошибка

Родственные функции: MakeByte, MakeDword, MakeQword, MakeFloat, MakeDouble, MakePAckReal, MakeTbyte.

Интерактивный аналог: "~Edit\Data"; <D>

success MakeDword(long ea)

Функция создает по переданному ей линейному адресу ea элемент данных типа двойное слово, длиной четыре байта. Порядок следования младших и старших байт зависит от выбранного процессора. На микропроцессорах серии Intel 80x86 младший байт располагается по меньшему адресу и, соответственно, наоборот.

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

Ошибка возвратится и в том случае если по переданному функции линейному адресу находится хвост элемента данных, голова или хвост элемента кода.

Если хотя бы один из двух байт имеет неинициализированное значение, все двойное слово приобретает неинициализированное значение.

Пример использования:

c) результат - функция завершилась с ошибкой, т.к. для создания нового элемента не достаточно места - по адресу seg000:0001 находится элемент данных типа байт, который не может быть автоматически присоединен к слову. Для выполнения преобразования его необходимо уничтожить вызовом MakeUnkn

MakeUnkn(SegByName("seg000")+1,0);

d) вызываем функцию MakeUnkn для удаления элемента данных, расположенного по адресу "seg000:0001"

seg000:0000 db ? ; unexplored

seg000:0001 db ? ; unexplored

e) резултат - элемент данных успешно разрушен.

Message(">%x\n",MakeWord(SegByName("seg0 0 0")));

f) повторно вызываем функцию MakeWord, на этот раз передавая ей адрес цепочки из двух бестиповых байт

seg000:0000 dw ?

>1

g) результат - элемент данных типа слво успешно создан ??? #Верстальщику - change table



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 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140