Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как запустить ф-цию с параметрами строки в ASM [D6]


NikNet ©   (2005-09-04 08:53:00) 

В общем мне надо без всяких "Var/const/type" а прямо в ф-ций
создать  нужную строку и значение и  запустить например как
запустить MessageBox на ASM к примеру с любой строкой...
В моём случае надо поместить в первый параметр значение
а во второй строку... Эти значение должны входить в ASM
код! То есть надо что бы не было не  каких переменных...

ASM
Call MessageBox
END;


Digitman   (2005-09-05 09:21:00) [1]

а-а-а ... пардон, я не посмотрел, что ты стек балансируешь последней строчкой


begin...end   (2005-09-05 09:08:00) [2]

> Digitman ©   (05.09.05 08:51) [8]

> а в [1] это ты так пошутил, да ? с cdecl-соглашением ?

Э-э-э... Не понял... Причём там cdecl-соглашение?


Digitman   (2005-09-05 08:51:00) [3]


> begin...end ©   (04.09.05 15:10) [6]


> Можно проще


да, можно и проще, но РОН я использовал лишь для наглядной иллюстрации


> Есть, по крайней мере, одно иключение -- wsprintf


сомневаюсь в ее полезности для случая с ObjectPascal.

а в [1] это ты так пошутил, да ? с cdecl-соглашением ?


begin...end   (2005-09-04 15:18:00) [4]

> Digitman ©   (04.09.05 13:32) [4]

> любая WinAPI-ф-ция ориентирована именно на это соглашение

Есть, по крайней мере, одно иключение -- wsprintf.


begin...end   (2005-09-04 15:10:00) [5]

> Digitman ©   (04.09.05 13:47) [5]

> LEA   EAX, [hdr]
> PUSH  [EAX]

Можно проще: PUSH [hdr].


Digitman   (2005-09-04 13:47:00) [6]

procedure MyProc;
const hdr: string = 'Заголовок';
const txt: string = 'Любая строка';
asm
PUSH  MB_ICONEXCLAMATION
LEA   EAX, [hdr]
PUSH  [EAX]
LEA   EAX, [txt]
PUSH  [EAX]
PUSH  $00
CALL  MessageBox
end;


Digitman   (2005-09-04 13:32:00) [7]

никак.

а зачем ?

при stdcall (любая WinAPI-ф-ция ориентирована именно на это соглашение) факт.параметры вызова ф-ции передаются через стек, а не через РОН


NikNet   (2005-09-04 13:29:00) [8]

А как в EDI поместить строку?


Digitman   (2005-09-04 13:28:00) [9]


> То есть надо что бы не было не  каких переменных


чем тебе переменные так насолили ?


begin...end   (2005-09-04 11:17:00) [10]

procedure MyProc;
asm
 PUSH  $0021E9CE
 PUSH  MB_ICONEXCLAMATION
 PUSH  $00
 LEA   EAX, [ESP + 2 * $04]
 PUSH  EAX
 PUSH  $00
 CALL  MessageBox
 ADD   ESP, $04
end.


:-)))


Наверх

Титульная страница Поиск, карта сайта Написать письмо