· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ASSEMBLER —› Код в .DATA

. 1 . 2 . >>

Посл.отвђт Сообщенiе


Дата: Апр 29, 2004 21:51:15 · Поправил: Asterix

Понадобилось мне, значит, запихать такой код в .DATA ну вроде как практически скомпилилось, но, почему-то ругается на jne Address, и никак не могу его(masm) уговорить:
.DATA
some_proc EQU $
  sub     esp, 20h
  mov     eax, [ebp+10h]
  cmp eax, PID
  jne Address
  xor eax, eax
  jmp Address
PID     dd 0
Address dd 0
some_proc_len EQU $ - some_proc


Дата: Апр 29, 2004 22:00:04

Ругается он скорее всего на инструкцию по этому адресу. Попробуй поставить не Address dd 0, а Address: - т.е. метку. Мало ли..


Дата: Апр 29, 2004 22:00:58

Уже пробовал :-(


Дата: Апр 29, 2004 22:06:53

хмм.. напрашивается вывод, что для такой вещи секция должна быть executable, но это на масме сделать сложно..

А почему надо код в данных писать? Не проще данные в коде указать?


Дата: Апр 29, 2004 22:10:21

Она и есть executable т.к. совмещена c .text и выставлены соответствующие атрибуты ;-)


Дата: Апр 29, 2004 22:11:14

Более того, masm и на такой же код в .CODE тоже ругается..


Дата: Апр 29, 2004 22:30:23

              some_proc db 90h
              sub esp,20h
              mov eax,[ebp+10h]
              cmp eax,PID
              jne @F
              xor eax,eax
              jmp @F
              PID               dd 0
          @@: Address           db 0,0,0,0
              some_proc_len EQU $ - some_proc

А если так?


Дата: Апр 29, 2004 22:41:51

KiNDeR

А так потерялся смысл прыжков ;-)
Прыжки должны осуществляться по адресу лежащему в переменной Address.


Дата: Апр 29, 2004 23:07:06

Если короткий, делается:
jmp_delta db ??h
jmp_oper db 74h (75h)

т.е. будет скачок на 2+?? при "Z=1" или "Z=0"

соотв-но для длинного, только надо почитать как строится комманда. не читал :) могу ошибаться

jmp_delta dd ??h
jmp_oper dw ??h
xor eax,eax
jmp jmp_delta


Дата: Апр 29, 2004 23:16:22

> Прыжки должны осуществляться по адресу лежащему в переменной Address.

jmp [Address]
?


Дата: Апр 29, 2004 23:46:03

Это в fasme ;-)
А в masm'е можно делать как я написал, кстати jmp Address работает, а вот jne нет.


Дата: Апр 29, 2004 23:50:24

Вот что собственно пишет:
 Assembling: PROJ01.BAT
PROJ01.BAT(20) : error A2077: instruction does not allow NEAR indirect 
addressin
g
LINK : warning LNK4001: no object files specified; libraries used
LINK : warning LNK4068: /MACHINE not specified; defaulting to X86
LINK : fatal error LNK1159: no output file specified
Файл не найден

Нажмите любую клавишу . . .


Дата: Апр 29, 2004 23:50:45 · Поправил: S_T_A_S_

ХМ.
Тогда так
  jne @f
  xor eax, eax
@@:  jmp Address


Дата: Апр 30, 2004 00:16:38 · Поправил: Asterix

Тоже не работает в .DATA
 Assembling: PROJ01.BAT
PROJ01.BAT(20) : error A2107: cannot have implicit far jump or call to near labe
l
LINK : warning LNK4001: no object files specified; libraries used
LINK : warning LNK4068: /MACHINE not specified; defaulting to X86
LINK : fatal error LNK1159: no output file specified
Файл не найден


Дата: Апр 30, 2004 00:22:20 · Поправил: Asterix

. 1 . 2 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.165