Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ida.final.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
6 Mб
Скачать

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

seg000:0000 db ? ; unexplored

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

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

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

seg000:0000 db ?

>1

с) результат – элемент данных типа байт успешно создан

Замечение: в ассемблерном листинге бестиповые байты помечаются комментарием “unexplored” (или ASCII кодом содержимого), сигнализирующим о неисследованости данной ячейки. В полностью дизассемблированной программе не должно остаться ни одного неисследованого байта – тип каждой ячейки должен быть задан явно.

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

seg000:0000 aHelloSailor db 'Hello, Sailor'

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

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

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

seg000:0000 aHelloSailor db 48h

seg000:0001 db 65h ; e

seg000:0002 db 6Ch ; l

seg000:0003 db 6Ch ; l

seg000:0004 db 6Fh ; o

seg000:0005 db 2Ch ; ,

seg000:0006 db 20h ;

seg000:0007 db 53h ; S

seg000:0008 db 61h ; a

seg000:0009 db 69h ; i

seg000:000A db 6Ch ; l

seg000:000B db 6Fh ; o

seg000:000C db 72h ; r

seg000:000D db 66h ; f

>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

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

return

=return

пояснения

==1

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

==0

ошибка

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

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

Success MakeWord(long ea)

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

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

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

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]