Анимация
JavaScript
|
Главная Библионтека long GetOpType (long ea,long n) Функция возвращает тип операнда (см. таблицу ???), принадлежащему элементу кода (не данных!). Тип операнда, за исключением типов определенных для всех процессоров, зависит от выбранного микропроцессора. Тип операнда определяется не его представлением на экране, а инструкциями, в состав которых он входит. Так, например, при попытке определения второго слева операнда конструкции "mov dx,offset MyLabel" функция вернет тип непосредственное значение, несмотря на то, что он представлен в виде смещения.
Таблица 15 Пример использования: seg000:0000 mov ax, 9 a) исходные данные - требуется определить тип обоих операндов Message(">%x, %x\n",GetOpType(SegByName("seg000"),0), GetOpType(SegByName("seg000"),1)); b) вызов функции GetOpType для определения типов операндов >1,5 c) результат - по таблице ??? определяем тип операндов - регистр общего назначения и непосредственное значение соответственно. ??? #верстальщику - change table
Родственные функции: GetOpnd, GetOperandValue Интерактивный аналог: нет longGetOperandValue(long ea,long n) Функция возвращает значение непосредственного операнда, принадлежащему элементу кода (не данных!), т.е. типу #5 (см. описание функции GetOpType). Пример использования: seg000:0000 mov ax, 9 a) исходные данные - требуется получить значение непосредственного операнда Message(">%x\n",GetOperandValue(SegByName("seg000"),1)); b) вызов функции GetOperandValue для получения значения непосредственного операнда
Родственные функции: GetOpnd, GetOpType Интерактивный аналог: нет long FindVoid (long ea,long flag) Функция ищет ближайший к переданному ей линейному адресу ea операнд типа "void", возвращая в случае успешного завершения поиска адрес головы элемента кода, которому он принадлежит. В зависимости от флага направления поиск может идти как вперед (от младших адресов к старшим), так и назад (от старших адресов к младшим). Переданный функции линейный адрес в этот диапазон поиска не входит и не обязательно должен принадлежать какому-нибудь сегменту. Аргумент flag задает направление поиска - если его младший бит установлен поиск идет от младших адресов к старшим и, соответственно, наоборот. Пример использования: seg000:0100 mov ax, 9 seg000:0103 mov dx, 133h a) исходные данные - требуется получить линейный адрес элемента, содержащего операнд типа "void" Message(">%s\n",atoa(FindVoid(0,1))); b) вызов функции FindVoid - адрес начала поиска равен нулю, единичное значение флага направление указывает вести поиск с увеличением адресов >seg000:0103 результат - линейный адрес элемента, содержащего операнд типа void, найден ??? #Верстальщику - change table
с) результат - значение непосредственного операнда ??? #верстальщику - 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 |