Сейчас на форуме: (+9 невидимых) |
eXeL@B —› Крэки, обсуждения —› Команды Ассемблера |
Посл.ответ | Сообщение |
|
Создано: 12 декабря 2004 01:12 · Личное сообщение · #1 |
|
Создано: 12 декабря 2004 01:19 · Личное сообщение · #2 |
|
Создано: 12 декабря 2004 01:32 · Личное сообщение · #3 |
|
Создано: 12 декабря 2004 01:35 · Личное сообщение · #4 |
|
Создано: 12 декабря 2004 01:58 · Личное сообщение · #5 |
|
Создано: 12 декабря 2004 03:07 · Личное сообщение · #6 |
|
Создано: 12 декабря 2004 03:13 · Поправил: dMNt · Личное сообщение · #7 |
|
Создано: 12 декабря 2004 04:15 · Личное сообщение · #8 |
|
Создано: 12 декабря 2004 12:43 · Личное сообщение · #9 |
|
Создано: 12 декабря 2004 12:47 · Личное сообщение · #10 |
|
Создано: 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. Только, чтобы с экономить пространство, некоторые используют маленькие смещения. Все значения - шестнадцатиричные коды. |
|
Создано: 12 декабря 2004 14:39 · Личное сообщение · #12 |
|
Создано: 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. |
|
Создано: 12 декабря 2004 16:37 · Личное сообщение · #14 S_T_A_S_ пишет: Что есть опкод, и что есть БАЙТЫ КОМАНД!? То, что я здесь так и не увидел. Вот когда оно не нужно, например, в статьях где hex-значение команд только мешает, так - пожалуйста, а тут: mov eax, dword ptr [0000003Ah]. Ни смещения, по которому находится этот бред, ни опкода. Похоже, человек сам не понимает, что он хочет узнать. ----- Всем привет, я вернулся |
|
Создано: 12 декабря 2004 19:13 · Личное сообщение · #15 |
|
Создано: 12 декабря 2004 19:19 · Личное сообщение · #16 |
|
Создано: 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: |
|
Создано: 13 декабря 2004 04:51 · Личное сообщение · #18 |
|
Создано: 13 декабря 2004 04:57 · Личное сообщение · #19 |
|
Создано: 13 декабря 2004 11:36 · Личное сообщение · #20 |
|
Создано: 13 декабря 2004 12:16 · Личное сообщение · #21 |
|
Создано: 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'овских док... |
|
Создано: 14 декабря 2004 08:21 · Личное сообщение · #23 |
|
Создано: 14 декабря 2004 10:05 · Личное сообщение · #24 |
|
Создано: 14 декабря 2004 10:12 · Личное сообщение · #25 |
|
Создано: 14 декабря 2004 10:23 · Личное сообщение · #26 Видал я эти уроки... Я оригинала не встречал, поэтому, возможно, это ошибки перевода. Хрен его знает. В любом случае, читать надо чего-нибудь другое, хотя бы Юрова. Благо валяется на пироговском сайте, правда 30 с лишним метров качать удовольствие сомнительное %). ----- Все говорят что мы вместе. Но не многие знают в каком. |
eXeL@B —› Крэки, обсуждения —› Команды Ассемблера |
Эта тема закрыта. Ответы больше не принимаются. |