reverseenengineering:основы

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
reverseenengineering:основы [2025/07/04 17:54] – [Некоторые основные команды ассемблера] Lexreverseenengineering:основы [2025/07/04 17:56] (текущий) – [Операнды, коды, форматы] Lex
Строка 134: Строка 134:
 ==== Группа "Основная арифметика" ==== ==== Группа "Основная арифметика" ====
  
-Команды ADD, OR, ADC, SBB, AND, SUB, XOR, CMP - эти восемь команд можно назвать самыми первыми в системе команд x86 ("первая восьмерка"), достаточно взглянуть на ту таблицу команд, в которой команды расположены в порядке кодов операций. Все эти команды имеют два операнда и совершенно одинаковый формат (три разных формы), как на языке ассемблера, так и в машинных кодах.+Команды ADD, OR, ADC, SBB, AND, SUB, XOR, CMP - эти восемь команд можно назвать самыми первыми в системе команд x86 ("первая восьмерка"), достаточно взглянуть на ту таблицу команд, в которой команды расположены в порядке кодов операций. Все эти команды имеют два операнда и совершенно одинаковый формат (три разных формы), как на языке ассемблера, так и в машинных кодах.
  
-Команда TEST также имеет два операнда. Три ее формы почти такие же, как у команд первой восьмерки и отличаются только в деталях.+Команда TEST также имеет два операнда. Три ее формы почти такие же, как у команд первой восьмерки и отличаются только в деталях.
  
-Команды NEG и NOT имеют только один операнд, их формат намного проще.+Команды NEG и NOT имеют только один операнд, их формат намного проще.
  
-Примечание. Команды умножения и деления помещены в свою отдельную группу:  Умножение и деление +Примечание. Команды умножения и деления помещены в свою отдельную группу:  Умножение и деление 
  
 ==== Операнды, коды, форматы ==== ==== Операнды, коды, форматы ====
Строка 148: Строка 148:
  
   CMD   dst, src   CMD   dst, src
-Здесь CMD - мнемоника команды, dst (destination) - приемник, src (source) - источник. Результат выполнения операции заносится в первый операнд dst. 
  
-В операциях вычитания из значения dst вычитается значение src. 
  
-Таким образом, операции сложения ADD и вычитания SUB будут выглядить так:+> Здесь CMD - мнемоника команды, dst (destination) - приемник, src (source) - источник. Результат выполнения операции заносится в первый операнд dst. 
 + 
 +> В операциях вычитания из значения dst вычитается значение src. 
 + 
 +Таким образом, операции сложения ADD и вычитания SUB будут выглядить так:
  
   dst = dst + src   dst = dst + src
Строка 158: Строка 160:
  
 === Команды с участием флага переноса === === Команды с участием флага переноса ===
-Команда ADC выполняет сложение трех слагаемых: первого (dst) операнда, второго (src) операнда и флага переноса CF (значение 0 или 1). Результат выполнения операции заносится в первый (dst) операнд. 
  
-По команде SBB из значения первого (dst) операнда вычитается значение второго (src) операнда. Из полученного результата вычитается значение флага переноса CF (значение 0 или 1). Результат выполнения операции заносится в первый (dst) операнд.+> Команда ADC выполняет сложение трех слагаемых: первого (dst) операнда, второго (src) операнда и флага переноса CF (значение 0 или 1). Результат выполнения операции заносится в первый (dst) операнд. 
 + 
 +По команде SBB из значения первого (dst) операнда вычитается значение второго (src) операнда. Из полученного результата вычитается значение флага переноса CF (значение 0 или 1). Результат выполнения операции заносится в первый (dst) операнд.
  
-Условно это можно показать так:+Условно это можно показать так:
  
- dst = dst + src + CF +   dst = dst + src + CF 
- dst = dst - src - CF+   dst = dst - src - CF
  
 ==== Логические операции ==== ==== Логические операции ====
  • reverseenengineering/основы.1751626486.txt.gz
  • Последнее изменение: 2025/07/04 17:54
  • Lex