Сейчас на форуме: (+9 невидимых)

 eXeL@B —› Крэки, обсуждения —› Команды Ассемблера
Посл.ответ Сообщение

Ранг: 24.4 (новичок)
Активность: 0.040
Статус: Участник

Создано: 12 декабря 2004 01:12
· Личное сообщение · #1

Народ, нодскажите:
mov eax, dword ptr [0000003Ah]
после eax имеет значение 725E7A25h
Как работает смещение с даннами?



Ранг: 0.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 12 декабря 2004 01:19
· Личное сообщение · #2

Команда:
ЗАПИХНУТЬ в Eax, СОДЕРЖИМОЕ по Адресу [3Ah] (dword)



Ранг: 163.7 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 12 декабря 2004 01:32
· Личное сообщение · #3

dragon-gor

Покажи опкод, что-то тут не то.
При чтении из адреса 0000003Ah должно исключение возникнуть, т.к. доступ к первым 65536 байтам запрещён.



Ранг: 0.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 12 декабря 2004 01:35
· Личное сообщение · #4

Не факт что возникнет. Ты про exception handler не забыл что может быть?



Ранг: 163.7 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 12 декабря 2004 01:58
· Личное сообщение · #5

Факт, что KiUserExceptionDispatcher в конечном счёте может вызовать установленный прогой SE Handler не говорит о том, что исключение не возникнет ;)



Ранг: 24.4 (новичок)
Активность: 0.040
Статус: Участник

Создано: 12 декабря 2004 03:07
· Личное сообщение · #6

Блин, не понял
Читаю учебник по w32asm-
там команда использует формат little endian и таблица:
смещение 3435363738393A3B3C3D3E3F404142
данные 0D0A50324457257A5E72EF7DFFADC7
Откуда и как он прощитал исходя таблицы,
что eax=725E7A25h и если в windows смещение 4gb



Ранг: 45.7 (посетитель)
Активность: 0.050
Статус: Участник
EBFE

Создано: 12 декабря 2004 03:13 · Поправил: dMNt
· Личное сообщение · #7

не факт что виндовая прога
dragon-gor что-то ты прогнал, таких смещений не бывает
dragon-gor пишет:
смещение 3435363738393A3B3C3D3E3F404142




Ранг: 495.3 (мудрец)
Активность: 0.30
Статус: Участник

Создано: 12 декабря 2004 04:15
· Личное сообщение · #8

dragon-gor
S_T_A_S_ пишет:
Покажи опкод, что-то тут не то.


ПОКАЖИ БАЙТЫ КОМАНД!

-----
Всем привет, я вернулся




Ранг: 24.4 (новичок)
Активность: 0.040
Статус: Участник

Создано: 12 декабря 2004 12:43
· Личное сообщение · #9

Вот как читать учебники которые не учат, а только запудривают мозги.
Всё что было в нём написано, я выше написал.
Это учебник по win32asm - скачал на WASM.
Так что, наплювать на смещение?

Если кто хочет почитать, у меня есть HTML версия,
Скину на мыло.



Ранг: 0.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 12 декабря 2004 12:47
· Личное сообщение · #10

ты дай кусок кода или в нех или так...

Скину на мыло.
dead_body||rambler.ru ||=@



Ранг: 24.4 (новичок)
Активность: 0.040
Статус: Участник

Создано: 12 декабря 2004 13:19
· Личное сообщение · #11

Пишу как написано:
Смещение указывает на ячейки памяти (в win32, подробнее об этом см. на предыдущей странице). Вы также можете получить значение из памяти и поместить эго в регистр. Для примера возьмем следующую таблицу:

смещение_ 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42
данные___ 0D 0A 50 32 44 57 25 7A 5E 72 EF 7D FF AD C7

(Каждый блок представляет байт)

Значение смещения обозначено здесь как байт, но на самом деле это это - 32-разрядное значение. Возьмем для примера 3A, это также - 32-разрядное значение: 0000003Ah. Только, чтобы с экономить пространство, некоторые используют маленькие смещения. Все значения - шестнадцатиричные коды.



Ранг: 24.4 (новичок)
Активность: 0.040
Статус: Участник

Создано: 12 декабря 2004 14:39
· Личное сообщение · #12

Кому интересно кидаю ссылку на учебник
learnasm.narod.ru/download/w32dasm.rar



Ранг: 163.7 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 12 декабря 2004 15:12
· Личное сообщение · #13

dMNt пишет:
не факт что виндовая прога


Симнтаксис MASM, 32х разрядный режим. Вроже как такое сейчас больше нигде не используется.

Bitfry
Bitfry пишет:
ПОКАЖИ БАЙТЫ КОМАНД!


Что есть опкод, и что есть БАЙТЫ КОМАНД!?

dragon-gor пишет:
Вот как читать учебники которые не учат, а только запудривают мозги.


Ты сам ясно выразиться не можешь, зачем обвинять других?
Что за учебник?

dragon-gor пишет:
смещение_...


Это сильно напоминает ASCII строку со всякой лажей:
456789:;<=>?@AB
P2DW%z^r

dragon-gor пишет:
там команда использует формат little endian и таблица


Какия команда, XLAT что-ли ?

dragon-gor пишет:
кидаю ссылку на учебник


Ты ни чего не употребдяешь? Это ссыла на дизассемблер w32dasm.



Ранг: 495.3 (мудрец)
Активность: 0.30
Статус: Участник

Создано: 12 декабря 2004 16:37
· Личное сообщение · #14

S_T_A_S_ пишет:
Что есть опкод, и что есть БАЙТЫ КОМАНД!?

То, что я здесь так и не увидел.
Вот когда оно не нужно, например, в статьях где hex-значение команд только мешает, так - пожалуйста, а тут: mov eax, dword ptr [0000003Ah]. Ни смещения, по которому находится этот бред, ни опкода. Похоже, человек сам не понимает, что он хочет узнать.

-----
Всем привет, я вернулся




Ранг: 163.7 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 12 декабря 2004 19:13
· Личное сообщение · #15

А... я подумал, что ты хотел сказать, что это разные вещи =)

ЗЫ: поначалу думал, что dragon-gor где-то в реальной проге такое увидел (тогда в eax 725E7A25h могло оказаться только после SEH), а теперь впонимаю, что ничего не понимаю =). зачем я сюда влез 8-()




Ранг: 332.0 (мудрец)
Активность: 0.180
Статус: Участник
•Pr0tEcToRs KiLLeR•

Создано: 12 декабря 2004 19:19
· Личное сообщение · #16

S_T_A_S_ пишет:
Ты ни чего не употребдяешь? Это ссыла на дизассемблер w32dasm.

Лол. Хорошо сказано ;)



Ранг: 24.4 (новичок)
Активность: 0.040
Статус: Участник

Создано: 13 декабря 2004 04:00
· Личное сообщение · #17

Э-э-э, зра ругаешься. Учебник тот. Глянь на странице, может потом поймёшь.
Win32Asm Tutorial

---------------------------------------------------------------------- ----------

назад 5- Коды рперации вперед


---------------------------------------------------------------------- ----------

5.0 - Коды операции (опкоды).

Опкоды это команды для процессора. Опкоды - фактически "читаемый текст"- версии шестнадцатиричных кодов. Из-за этого, ассемблер считается саммым низко-уровневым языком программирования, все в ассемблере непосредственно преобразовывается в шестнадцатиричные коды. Другими словами, у вас нет компилятора, который преобразовывает язык высокого уровня в язык низкого уровня, ассемблер только преобразовывает коды ассемблера в данные.

В этом уроке мы обсудим несколько опкодов, которые имеют отношение к вычислению, поразрядным операциям, и т.д. Другие опкоды, команды перехода, сравнения и т.д, будут обсуждены позже.

5.1 - Несколько основных опкодов вычисления

MOV

Эта команда используется для перемещения (или фактически, копирования) значения из одного места в другое. Это 'место' может быть регистр, ячейка памяти или непосредственное значение (только как исходное значение). Синтаксис команды mov:

mov приемник, источник

Вы можете перемещать значение из одного регистра в другой (Учтите, что команда копирует значение в приемник, несмотря на ее название 'move', что в переводе на русский - перемещать).

mov edx, ecx

Вышеприведенная команда копирует содержание ecx в edx. Размер источника и приемника должны быть одинаковыми,
например: эта команда - НЕ допустима:

mov al, ecx ; не правильно

Этот опкод пытается поместить DWORD (32-битное) значение в байт (8 битов). Это не может быть сделано mov командой (для этого есть другие команды).
А эти команды правильные, потому что у них источник и приемник не отличаются по размеру:

mov al, bl
mov cl, dl
mov cx, dx
mov ecx, ebx

Смещение указывает на ячейки памяти (в win32, подробнее об этом см. на предыдущей странице). Вы также можете получить значение из памяти и поместить эго в регистр. Для примера возьмем следующую таблицу:

смещение 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42
данные 0D 0A 50 32 44 57 25 7A 5E 72 EF 7D FF AD C7

(Каждый блок представляет байт)

Значение смещения обозначено здесь как байт, но на самом деле это это - 32-разрядное значение. Возьмем для примера 3A, это также - 32-разрядное значение: 0000003Ah. Только, чтобы с экономить пространство, некоторые используют маленькие смещения. Все значения - шестнадцатиричные коды.

Посмотрите на смещение 3A в таблице выше. Данные на этом смещении - 25, 7A, 5E, 72, EF, и т.д. Чтобы поместить значение со смещения 3A, например, в регистр, вы также используете команду mov:



Ранг: 24.4 (новичок)
Активность: 0.040
Статус: Участник

Создано: 13 декабря 2004 04:51
· Личное сообщение · #18

Про смещение памяти мне понятно,
но непонятно-откуда появились данные на 3A
(Посмотрите на смещение 3A в таблице выше. Данные на этом смещении - 25, 7A, 5E, 72, EF, и т.д. Чтобы поместить значение со смещения 3A, например, в регистр, вы также используете команду mov)



Ранг: 24.4 (новичок)
Активность: 0.040
Статус: Участник

Создано: 13 декабря 2004 04:57
· Личное сообщение · #19

Блин----Понял!!!!
Это код помещённый в ячейки памати.
А я думаю - откуда цифры взялись




Ранг: 260.3 (наставник), 2thx
Активность: 0.120
Статус: Участник
PPC-PROTECT author

Создано: 13 декабря 2004 11:36
· Личное сообщение · #20

dragon-gor ) а вообще ты чего хотел? статью эту опровергнуть, сказать что там ошибка )

-----
Пиво, сиськи, транс




Ранг: 24.4 (новичок)
Активность: 0.040
Статус: Участник

Создано: 13 декабря 2004 12:16
· Личное сообщение · #21

Нет, просто читать надо лучше (это я себе)



Ранг: 163.7 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 13 декабря 2004 19:43
· Личное сообщение · #22

Бл@, после таких "учебников" не только крыша съедет :\

Короче, IMHO бред написан (что на какой странице глянуть так и не понял, читал здесь):

MOV - это не опкод, а мнемоника команды. Опкод - это те цифирки, которые видно в Olly в колонке слева от мнемоник. Именно они и находятся в оперативе и проц их оттуда считывает и выполняет. Для команды MOV существует несколько опкодов, в зависимости от операндов и режима адресации (выделено жирным):

A1 00000204 ; mov eax, [4020000]
B8 00000204 ; mov eax, 4020000
8B05 00000204 mov eax, [4020000]
8B83 00000204 ; mov eax, [ebx+4020000]
8B84CB 00000204 ; mov eax, [ebx+ecx*8+4020000]

(это конечно упрощённо, т.к. я в опкод включил так же и байты ModR/M & SIB)


Значение смещения обозначено здесь как байт, но на самом деле это это - 32-разрядное значение. Возьмем для примера 3A, это также - 32-разрядное значение: 0000003Ah. Только, чтобы с экономить пространство, некоторые используют маленькие смещения.

Здесь автор "забыл" сказать, что MOV маленькие смещения никогда не использует, в отличает от JMP (и арифметических команд, толко там не смещения)

dragon-gor
Забей ты на этот учебник, лучше на wasm.ru статьи почитай. А автору письмо напиши, пусть скачает себе 2й том intel'овских док...



Ранг: 79.6 (постоянный), 2thx
Активность: 0.080
Статус: Участник
алХимик

Создано: 14 декабря 2004 08:21
· Личное сообщение · #23

dragon-gor

Чего-то я не нашел там этого "учебника", дай точную ссылку, ну очень интересно что там еще написано =))))))))

-----
Все говорят что мы вместе. Но не многие знают в каком.




Ранг: 24.4 (новичок)
Активность: 0.040
Статус: Участник

Создано: 14 декабря 2004 10:05
· Личное сообщение · #24

попробуй эту
www.taspro.narod.ru/doc/assembler/uroks.zip
я его же ашь с 4 мест скачивал, и все файлы имеют разное название.
Искал через Рамблера->документация на win32dasm



Ранг: 79.6 (постоянный), 2thx
Активность: 0.080
Статус: Участник
алХимик

Создано: 14 декабря 2004 10:12
· Личное сообщение · #25

dragon-gor пишет:
документация на win32dasm


А причем тут дизассемблер %)

-----
Все говорят что мы вместе. Но не многие знают в каком.




Ранг: 79.6 (постоянный), 2thx
Активность: 0.080
Статус: Участник
алХимик

Создано: 14 декабря 2004 10:23
· Личное сообщение · #26

Видал я эти уроки... Я оригинала не встречал, поэтому, возможно, это ошибки перевода. Хрен его знает.
В любом случае, читать надо чего-нибудь другое, хотя бы Юрова. Благо валяется на пироговском сайте, правда 30 с лишним метров качать удовольствие сомнительное %).

-----
Все говорят что мы вместе. Но не многие знают в каком.



 eXeL@B —› Крэки, обсуждения —› Команды Ассемблера
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати