Форум программистов, компьютерный форум, киберфорум
Наши страницы

Assembler, MASM, TASM

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.63
Lovkach
5 / 5 / 0
Регистрация: 12.08.2009
Сообщений: 25
#1

Задать несколько значений в один параметр функции - Assembler

10.09.2009, 21:39. Просмотров 1050. Ответов 3
Метки нет (Все метки)

В Дельфях например есть такая структуа:
Delphi
1
AnyFunction(@target, @source, ACCESS_ATTRIBUTE1 or ACCESS_ATTRIBUTE2)
Или в Сях
C++
1
2
3
4
AnyFunction(&target, *source, ACCESS_ATTRIBUTE1 || ACCESS_ATTRIBUTE2)
// или так
AnyFunction(&target, *source, ACCESS_ATTRIBUTE1 && ACCESS_ATTRIBUTE2)
// ну или примерно так...
Вот для начало разъясните ктонить мне как это работает и как такуюже структуру реализовать в АСМме. Ну всмысле как понять эту структуру: значит допустим в AnyFunction берем source, берем не просто а с ACCESS_ATTRIBUTE1 "или":"и" ACCESS_ATTRIBUTE2 делаем чтото в функции и засовываем результат в target. Атрибуты в абсолютном понимание это всеголишь шеснадцатиричные значения которые играют какуюто роль в функции Например: ACCESS_ATTRIBUTE1=0х0200 ACCESS_ATTRIBUTE2=0х0040. По логике получается параметр функции один а задаются два разных атрибута и т.к. это числа, то 200h or 40h = 240h или 200h and 40h = 0h. Значит в параметр передается одно значение, что есть результат логической операции или както по хитрому обрабатывается?
Или сначало проверяется один атрибут при "или" если не прошел то проверяется второй, а при "и" проверяются оба??
Следующий момент как таоеже проделать а АСМе?
Если я правильно догадался про механику работы, то мне кажется вот так:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
push ACCESS_ATTRIBUTE2
push source
push target
call AnyFunction@12
cmp eax, 0 ; т.к. функции в большинстве случаев возвращают в eax какието значения то сравниваем с нудем
jz ...; прыгаем на установку другого атрибута
 
push ACCESS_ATTRIBUTE1
push source
push target
call AnyFunction@12
cmp eax, 0
jz ... ; и так далее...
Нужен совет как делать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.09.2009, 21:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Задать несколько значений в один параметр функции (Assembler):

Вычисление шести значений функции возвращает только один ответ - Assembler
Программа считает правильно, только на экран выводит первое значение. В чем может быть ошибка? Yn = 25х^3 – 2,1 (x изменяется с шагом...

Как задать несколько интервалов для проверок чисел? - Assembler
.MODEL SMALL; .STACK 400H; .data m1 db 22h,10h,13h,21h db 11h,15h,27h,22h db 14h,21h,27h,23h db 24h,36h,22h,22h ...

Передать несколько значений в параметр report builder - C#
Как программно передать в параметр отчета несколько значений? Я передаю так : ReportParameter id_shift = new...

Как праильно задать параметр функции? - jQuery
Здравствуйте. Есть функция, которая выводит блоки div из массива и функции добавления и удаления дивов из массива. При клике на div...

Задать функцию как параметр функции - C++
Написал программу для решения уравнения с вырожденным ядром, где по ходу решения вышли две по три идентичные функции. Хотел бы узнать как...

Как задать программно параметр функции WinInet - C++ WinAPI
Добрый день.Подскажите ,пожалуйста . Пишу так- hConnect =InternetConnect( hInternet, ...

3
odip
Эксперт С++
7159 / 3221 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
11.09.2009, 11:02 #2
Ты правильно догадался - подается одно значение - 240h.
Внутри функции оно опять разбиратся на биты и определяется какие биты выставлены.

Добавлено через 1 час 51 минуту
Если я правильно догадался про механику работы, то мне кажется вот так
А вот это совсем неправильно.
0
Lovkach
5 / 5 / 0
Регистрация: 12.08.2009
Сообщений: 25
11.09.2009, 13:02  [ТС] #3
Спосибо. Тогда по первому варианту будет так:
Assembler
1
2
3
or ACCESS_ATRIBUTE1, ACCESS_ATRIBUTE2
push ACCESS_ATRIBUTE1
push... ;и так далее
все понял очень благодарен.
0
dim-hj
28 / 25 / 0
Регистрация: 28.07.2009
Сообщений: 109
12.09.2009, 05:38 #4
Не, там просто push. Ассемблер обычно умеет производить вычисления на этапе компиляции.
0
12.09.2009, 05:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.09.2009, 05:38
Привет! Вот еще темы с ответами:

Как задать переменной несколько значений? - VBA
Есть форма, вначале которой (при запуске) мне нужно задать переменной несколько значений, типа: Public Znachenie1$ = "Водка" Or "Вино" Or...

Задать элемент массива функций как параметр функции - C++
Имеется не до конца доработанная программа. Застопорился при попытке задать элемент массива функций как параметр функции. Был бы очень...

Несколько значений за один запрос - PHP БД
Всем доброго времени суток. У меня такая ситуация... Есть пополняемая таблица вида: User | Type | Link | что-то еще... ...

Может ли один столбец иметь несколько значений? - SQL Server
Пробую преобразовать базу Access в MSSQL c помощью внутренней функции Access. Все переносится нормально, кроме того столбца, в котором...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru