0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Теги: ассемблер, математические операции</p>
1
<p>Теги: ассемблер, математические операции</p>
2
<p>В этой статье мы поговорим об основных математических операциях и переведем каждую из них в ассемблерный код. Будут рассмотрены такие операции, как сложение и вычитание, умножение и деление, поразрядная конъюнкция (И) и дизъюнкция (ИЛИ), поразрядное отрицание и поразрядное исключающее ИЛИ, битовый сдвиг вправо и влево. Понимание этих аспектов поможет вам продвинуться в изучении реверс-инжиниринга.</p>
2
<p>В этой статье мы поговорим об основных математических операциях и переведем каждую из них в ассемблерный код. Будут рассмотрены такие операции, как сложение и вычитание, умножение и деление, поразрядная конъюнкция (И) и дизъюнкция (ИЛИ), поразрядное отрицание и поразрядное исключающее ИЛИ, битовый сдвиг вправо и влево. Понимание этих аспектов поможет вам продвинуться в изучении реверс-инжиниринга.</p>
3
<p>Код математических функций следующий:</p>
3
<p>Код математических функций следующий:</p>
4
<p>Итак, сначала присвоим переменной A значение 0A в 16-ричной системе счисления либо 10 в десятичной. В свою очередь, переменной B присвоим значение 0F или 15 в десятичной.</p>
4
<p>Итак, сначала присвоим переменной A значение 0A в 16-ричной системе счисления либо 10 в десятичной. В свою очередь, переменной B присвоим значение 0F или 15 в десятичной.</p>
5
<p>Для сложения воспользуемся инструкцией add:</p>
5
<p>Для сложения воспользуемся инструкцией add:</p>
6
<p>Для вычитания подойдет инструкция sub:</p>
6
<p>Для вычитания подойдет инструкция sub:</p>
7
<p>Для умножения - imul:</p>
7
<p>Для умножения - imul:</p>
8
<p>Для деления воспользуемся инструкцией idiv. Кроме того, задействуем оператор cdq - это необходимо для удвоения размера EAX и чтобы результат деления поместился в регистре.</p>
8
<p>Для деления воспользуемся инструкцией idiv. Кроме того, задействуем оператор cdq - это необходимо для удвоения размера EAX и чтобы результат деления поместился в регистре.</p>
9
<p>При поразрядной конъюнкции применим инструкцию and:</p>
9
<p>При поразрядной конъюнкции применим инструкцию and:</p>
10
<p>При дизъюнкции - or:</p>
10
<p>При дизъюнкции - or:</p>
11
<p>Для поразрядного исключающего ИЛИ - xor:</p>
11
<p>Для поразрядного исключающего ИЛИ - xor:</p>
12
<p>Для поразрядного отрицания - not:</p>
12
<p>Для поразрядного отрицания - not:</p>
13
<p>Для битового сдвига вправо - sar:</p>
13
<p>Для битового сдвига вправо - sar:</p>
14
<p>Для битового сдвига влево - shl:</p>
14
<p>Для битового сдвига влево - shl:</p>
15
<p><em>По материалам статьи "<a>BOLO: Reverse Engineering - Part 1 (Basic Programming Concepts)</a>"</em>.</p>
15
<p><em>По материалам статьи "<a>BOLO: Reverse Engineering - Part 1 (Basic Programming Concepts)</a>"</em>.</p>
16
16