Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Прочие языки программирования > Assembler
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 14.03.2013, 15:54
DarkSmile DarkSmile вне форума
Прохожий
 
Регистрация: 11.03.2013
Сообщения: 19
Версия Delphi: XE3
Репутация: 10
По умолчанию Запись адреса

Здравствуйте! Задача такова, есть такой код в ассемблере http://clip2net.com/clip/m195299/136....png?nocache=1 к fld qword ptr [eax+138] обращается адрес eax+138, так вот, мне нужно записать адрес eax в другой адрес специально выделенный заранее. Как такое можно сделать, приведите пожалуйста самые простые кодики)
Ответить с цитированием
  #2  
Старый 14.03.2013, 19:50
DarkSmile DarkSmile вне форума
Прохожий
 
Регистрация: 11.03.2013
Сообщения: 19
Версия Delphi: XE3
Репутация: 10
По умолчанию

Жив кто не?
Ответить с цитированием
  #3  
Старый 14.03.2013, 21:41
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Цитата:
fld qword ptr [eax+138] обращается адрес eax+138
Стоп-стоп-стоп. Вот у тебя есть адрес. Город Тюмень, улица Петрова, дом 9124 квартира 777. Как этот адрес может к кому-то обращаться? Более того: как можно поселить человека В этот адрес? Понимаю По адресу, или еще как... И что значит "адрес eax"? Адрес регистра? Это надо у Intel спрашивать, по какому адресу во внутренней памяти процессора у них регистр...
Я к чему: нормально сформулируй вопрос. Я не понял ни слова. Про обращающийся адрес, про адрес регистра, про запись адреса регистра еще в какой-то адрес...
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #4  
Старый 14.03.2013, 22:56
DarkSmile DarkSmile вне форума
Прохожий
 
Регистрация: 11.03.2013
Сообщения: 19
Версия Delphi: XE3
Репутация: 10
По умолчанию

А все разобрался. Чтоб не создавать новую тему т.к. вопрос маленькой задам его сюда, как можно из
Код:
S:String;
S:='F30F7E4260BBFFFFFFFF660F57C9F20F';

Конвертировать в байты что-бы получилось такое:
Код:
Value : Array [0..15] of Byte = ($F3, $0F, $7E, $42, $60, $BB, $FF, $FF, $FF, $FF, $66, $0F, $57, $C9, $F2, $0F);
На дельфях
Ответить с цитированием
  #5  
Старый 14.03.2013, 23:06
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Берешь по два символа, переводишь из HEX в число.
Код:
a[0] := s[1] - '0';
if (a[0] > '9')
 a[0] := a[0] + '0' - 'A' + 10;
a[1] := s[2] - '0';
if (a[1] > '9')
 a[1] := a[1] + '0' - 'A' + 10;
a[0] := a[0] shl 4 + a[1];
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #6  
Старый 14.03.2013, 23:10
DarkSmile DarkSmile вне форума
Прохожий
 
Регистрация: 11.03.2013
Сообщения: 19
Версия Delphi: XE3
Репутация: 10
По умолчанию

А вот сдела вот так
Код:
function Hex2Byte(S : String):Byte;
const C:string[16]='0123456789ABCDEF';
begin
  if Length(S) < 22 then
    Result := Pos(S, C) - 1
  else
    Result := (Pos(S[1], C) - 1)*16 + Pos(S[2], C) - 1
end;
Но почему то в Result записывается только первый байт
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 08:20.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter