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

Char GetMnem(long ea)

Функция возвращает символьную мнемонику инструкции элемента кода, расположенного по линейному адресу ea. Для получения операндов (если они есть) следует воспользоваться функцией GetOpnd (см. главу «Операнды»)

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

seg000:0000 mov ah, 9

a) исходные данные – требуется получить символьную мнемонику инструкции

Message(“>%s\n”,GetMnem(SegByName(“seg000”)));

b) вызов функции GetMnem

>mov

c) результат – мнемоника инструкции в символьном представлении

??? #Верстальщику – chabge table

аргумент

пояснения

ea

линейный адрес элемента кода

return

=return

пояснения

!=””

мнемоника в символьном представлении

==””

ошибка

Родственные функции: GetOpnd

Интерактивный аналог: нет

Void MakeUnkn(long ea,long expand)

Функция разрушает элемент, заданный любым принадлежащим ему адресом, превращая его содержимое в бестиповые байты. Объекты, связанные с элементом (например, метки, комментарии) при этом не уничтожаются.

Замечание: автогенирируемые метки, назначаемые ASCII-строкам при их разрушении удаляется

Аргумент ea задает любой линейный адрес, принадлежащий разрушаемому элементу.

Аргумент expand будучи неравным нулю указывает на необходимость разрушения всей цепочки элементов, связанных друг с другом перекрестными ссылками типа «ссылка на следующую инструкцию» (см. главу «Перекрестные ссылки»)

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

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

seg000:0000 aHelloSailor db 'Hello, Sailor',0

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

MakeUnkn(SegByName(“seg000”)+0x1,0);

b) вызов функции MakeUnkn для разрушения элемента данных типа «ASCII-строка»

seg000:0000 db 48h ; H

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

с) результат – элемент данных разрушен

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

seg000:0100 add si, 6

seg000:0103 jmp si

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

MakeUnkn(SegByName(“seg000”),0);

b) вызов функции MakeUnkn для разрушения только одного элемента кода

seg000:0100 start db 83h ; Г

seg000:0101 db 0C6h ; ╞

seg000:0102 db 6 ;

seg000:0103 ; ─────────────────────────

с) разрушен один элемент кода

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

seg000:0100 add si, 6

seg000:0103 jmp si

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

MakeUnkn(SegByName(“seg000”),1);

b) вызов функции MakeUnkn для разрушения всей цепочки элементов кода

seg000:0100 start db 83h ; Г

seg000:0101 db 0C6h ; ╞

seg000:0102 db 6 ;

seg000:0103 db 0FFh ;

seg000:0104 db 0E6h ; ц

seg000:0105 db 0B9h ; ╣

с) результат – вся цепочка элементов кода разрушена

??? #верстальщику – change table

агрумент

пояснения

ea

любой линейный адрес, принадлежащий разрушаемому элементу

expand

==0

разрушение только одного элемента кода или данных

!=0

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

return

=return

пояснения

==1

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

==0

ошибка

Родственные функции: нет

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

Замечение: нажатие <U> равносильно вызову MakeUnk(ScreenEA(),1) и разрушает всю цепочку элементов кода. При необходимости разрушения одного элемента, его следует предварительно выделить курсорными клавишами, удерживая нажатым <Shift> или мышью, удерживая нажатой левую кнопку.

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