HTML Diff
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