Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Delphi/Asm, вставки в делфи 
:(
    Опции темы
ne0n
Дата 21.11.2005, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PlayBoy
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 5.8.2005
Где: Н.Новгород

Репутация: 1
Всего: 11



Ребята , вот в моей программе потребовалось использование вставок Asm,
но с asm у меня плохо(умею складывать, умножать числаsmile). Может кто подскажет статьи
для работы с асмом в делфи.
Дело втом что у всех асмовских компиляторов свой синтаксис, и фигануть между
asm..end скопированный(Ну там Masmа например) код не прокатит!!!!
И в качестве примера(если не сложно) покажите как выводить мессагу на асме(
тобиш как ето сделать asm вставками в Делфи)!

заранее благодарю!!!
PM MAIL ICQ   Вверх
oleg1973
Дата 21.11.2005, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: 1
Всего: 34



наверно так
_asm
push 0
push text
push text
push 0
call dword [MessageBoxA]
.end


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
ne0n
Дата 21.11.2005, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PlayBoy
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 5.8.2005
Где: Н.Новгород

Репутация: 1
Всего: 11



Цитата(oleg1973 @ 21.11.2005, 16:03)
наверно так
_asm
push 0
push text
push text
push 0
call dword [MessageBoxA]
.end


Не работает!!!!

Ну не ужели ни кто не пользуетсь asm вставками???!!!
и ни укого нет информации!???!! smile

PM MAIL ICQ   Вверх
DemoCode
Дата 21.11.2005, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 890
Регистрация: 20.10.2005
Где: Россия

Репутация: 2
Всего: 41



Цитата(ne0n @ 21.11.2005, 15:16)
Может кто подскажет статьи
для работы с асмом в делфи.


Очень хороший материал на эту тему (на англицком)
Learn Assembler with Delphi
Можно скачать

http://www.vbooks.ru/AUTHORS/YAN-HODGER/031530.html#
http://bookz.ru/authors/an-hodger/assmdelphi.html




--------------------
Жить стало лучше, жить стало веселей
© И.В. Сталин 
PM MAIL ICQ   Вверх
oleg1973
Дата 21.11.2005, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: 1
Всего: 34



ne0n
не работает или не компилится?


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
ne0n
Дата 21.11.2005, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PlayBoy
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 5.8.2005
Где: Н.Новгород

Репутация: 1
Всего: 11



Цитата(DemoCode @ 21.11.2005, 19:48)
Очень хороший материал на эту тему (на англицком)
Learn Assembler with Delphi
Можно скачать

http://www.vbooks.ru/AUTHORS/YAN-HODGER/031530.html#
http://bookz.ru/authors/an-hodger/assmdelphi.html

Спасибо(жалко что на англицком, ну да ладно)!!!

Народ что, ни кто не сталкивался с такой проблемой????

Добавлено @ 20:03
Цитата(oleg1973 @ 21.11.2005, 19:56)
не работает или не компилится?

компилится с небольшими исправлениями:
Код

asm
push 0
push '123'
push '1234'
push 0
call dword [MessageBoxA]
end;


я этот код момещал на обработчике нажатия кнопки, скомпилился номально,
а вот когда кнопульку нажимаешь- полная попа!!!

PM MAIL ICQ   Вверх
Rennigth
Дата 22.11.2005, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 49
Всего: 76



ne0n
я конечно не специалист в этой области, но для примера: (управление спикером) (beep короче):
Код

procedure Delay(ms: LongInt);
var
  lTime : LongInt;
begin
  lTime := GetTickCount + ms;
  while GetTickCount < lTime do
    Application.ProcessMessages;
end;


procedure Beep;
asm
  push ax
  mov    al,0b6h
  out    43h,al
  mov    ax,2000
  out    42h,al
  mov    al,ah
  out    42h,al
  in    al,61h
  or    al,3
  out    61h,al
  pop ax
end;

delay(1000);

asm
  push ax
  and    al,11111100b
  out    61h,al    
  pop ax
end;

end;


или например такая функция:
Код

(* фукция преобразует окончание строки(существительного) в зависимости от количества  *)
(* например : 1 урок , 2 урока, 7 уроков *)
(* типа родительский падеж *)
function GetStringInRP(const AString: string; ANumber: DWord): string;
var
  lRest: Dword;
begin
  (* Mod *)
  asm
    push EDX
    push EBX
    push EAX
    xor EDX, EDX
    xor EBX, EBX
    mov EAX, ANumber
    mov EBX, 64h
    div BX
    mov lRest, EDX
    pop EAX
    pop EBX
    pop EDX
  end;
// пердусмотренны ситуации когда сущ. оканчивается на твердую согласную
// и мягкий знак (возможна неправильная работа с непредусмотренными существительными)
  if AString[length(AString)] <> 'ь' then
  begin
    case lRest of
      1: Result := AString;
      2..4: Result := AString + 'а';
      0,5..99: Result := AString + 'ов';
    end;
  end else begin
    case lRest of
      1: Result := AString;
      2..4:
      begin
        Result := AString;
        Result[Length(Result)] := 'я';
      end;
      0,5..99:
      begin
        Result := AString;
        Result[Length(Result)] := 'е';
        Result := Result + 'й';
      end;
    end;
  end;
end;



Это сообщение отредактировал(а) Rennigth - 22.11.2005, 10:21


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Rennigth
Дата 22.11.2005, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 49
Всего: 76



Цитата(ne0n @ 21.11.2005, 14:16)
вот в моей программе потребовалось использование вставок Asm

по конкретнее бы сказал что нужно, глядишь помогли бы чем смогли... smile



--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Girder
Дата 22.11.2005, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: 31
Всего: 155



Код
procedure TForm1.Button1Click(Sender: TObject);
var T,C:string;
    pt,pc:Pointer;
begin
 T:='Эх...';
 C:='Ух...';
 pt:=@T[1];
 pc:=@C[1];
 asm
  pushad
  push MB_YESNO
  push pc
  push pt
  push 0
  call MessageBoxA
  popad
 end;
end;


Это сообщение отредактировал(а) Girder - 22.11.2005, 12:09


--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
ne0n
Дата 22.11.2005, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PlayBoy
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 5.8.2005
Где: Н.Новгород

Репутация: 1
Всего: 11



Цитата(Rennigth @ 22.11.2005, 10:30)
по конкретнее бы сказал что нужно, глядишь помогли бы чем смогли... smile

Не давно постил топик(в котором пояснял что создаю протектор файлов).
Так вот научился внедрять команды asm в исполняемый файл(Благодоря Arazel'y, респект этому
челу!!!!!!!!).
Тобишь внедрить то я могу а вот процедуру проверки crc не могу(т.к она долхна быть на asm'e)
Вот и спрашиваю у вас!!!! Может кто что модскажет!!!



Girder спасибо за премерчик!!! А ты где брал инфу, сам догнал или методом научной дидукции smile
PM MAIL ICQ   Вверх
Girder
Дата 22.11.2005, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: 31
Всего: 155



Цитата(ne0n @ 22.11.2005, 17:55)
Girder спасибо за премерчик!!! А ты где брал инфу, сам догнал или методом научной дидукции
Нет я из очень умной книжки передрал smile

PS: Ну ты даеш... smile



--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
Rennigth
Дата 22.11.2005, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 49
Всего: 76



smile
Girder
литературы под рукой нету, хотел спросить
Код

pushad
...
popad

это что? все регистры в стэк и обратно потом? типа:
Код

push AX
push BX
// итд.
...
push BX
push AX

?


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
ne0n
Дата 22.11.2005, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PlayBoy
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 5.8.2005
Где: Н.Новгород

Репутация: 1
Всего: 11



Цитата(Girder @ 22.11.2005, 12:08)
var T,C:string;
    pt,pc:Pointer;
begin
T:='Эх...';
C:='Ух...';
pt:=@T[1];
pc:=@C[1];
asm
  pushad
  push MB_YESNO
  push pc
  push pt
  push 0
  call MessageBoxA
  popad
end;
end;

Впринципе все хорошо, но мне код нужен на чистом асме, у меня есть вункция ShellCode(после нее идет код который надо внедрять, без всяких var, begin итп)
Выглядит она должна так:
ShelCode;
asm
тут код на чистом асме.
end;

Цитата(Girder @ 22.11.2005, 17:59)
PS: Ну ты даеш... smile


в каком смысле?
PM MAIL ICQ   Вверх
ne0n
Дата 23.11.2005, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PlayBoy
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 5.8.2005
Где: Н.Новгород

Репутация: 1
Всего: 11



Неверю!!!!
Что никто не знает!!!!
PM MAIL ICQ   Вверх
oleg1973
Дата 23.11.2005, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: 1
Всего: 34



а дельфи в асм вставках поддерживает DD или DB ?


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0961 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.