З поверненням.
Тепер ми розглянемо IDIV.
IDIV - це те саме, що й DIV, який ми вивчали раніше.
Це означає, що якщо у вас є IDIV -, ви повинні спочатку завантажити значення, яке ви хочете розділити на -, а потім розділити
IDIV -, і тоді результат, частка, буде зберігатися в -, а залишок буде зберігатися
в -.
Аналогічно, якщо ви розділите - на слово, він збереже частку в -, а залишок
- в -.
А якщо ви розділите - подвійним словом, то воно збереже частку в -, а залишок в
-.
Тож якщо ви забули про це, будь ласка, поверніться до попередніх уроків, де ми вивчали це раніше
для DIV.
Тепер, коли ви ставите I попереду, воно стає IDIV.
Це означає, що дивізія знає про знак.
Це єдина відмінність.
Тож принципи ті ж самі. Перед діленням програма
спочатку перетворить його в додатне число, а потім запам'ятає знак.
І після цього він робить ділення, а потім перетворює його назад у вихідний знак.
Так само, як і для множення.
Тож давайте розглянемо приклад практичного сценарію.
Отже, скажімо, зараз ми робимо все навпаки.
Раніше ми займалися множенням.
Це помножити на це, і ми отримуємо
ось такий результат.
Тепер ми візьмемо цей результат, який є від'ємним числом, і поділимо.
Отже, ми ділимо на 19.
Отже, спочатку ми переміщуємо це від'ємне число, яке дорівнює від'ємному 94, в -, а потім переміщуємо 19 в гексі в -.
Потім виконуємо IDIV -.
Зараз результат виглядає так.
Символ - буде зберігати частку, а - буде зберігати залишок.
Отже, давайте спробуємо це зробити у вашому x64dbg.
Отже, я поставлю це праворуч, а потім відкрию шаблон.
Прокрутіть вниз і введіть ці інструкції.
Отже, я спочатку MOV -, F63C, 63C, enter, а потім MOV -, hex 19, enter, і IDIV -, enter.
Перевірте, чи правильно ви ввели інструкції.
Тепер ми ставимо тут точку зупинки, що я і зробив, і просто запускаємо її, і вона досягає вашої точки зупинки.
Давай переступимо.
Тепер він перемістить F63C до -.
Пам'ятайте, що F63C - від'ємне число, тому переступимо через нього.
Тепер F63C в -.
Це означає, що ці два байти - F63C.
Давайте скопіюємо це і перевіримо на калькуляторі.
Вставте його сюди, і ви побачите,
що F63 C - від'ємне число.
Чому?
Тому що цей, найстарший біт, дорівнює одиниці.
Далі ми перемістимо 19 на -.
Давайте переступимо через це.
А тепер - має одну дев'ятку.
Тож давайте скопіюємо його і знову введемо в калькулятор.
І тепер ви бачите - це цінність.
Цей байт є додатнім числом, оскільки старший біт дорівнює нулю.
Зараз ми будемо виконувати IDIV-. Тож давайте переступимо через це.
Отже, після виконання цієї інструкції частка буде зберігатися в -.
Тож давайте подивимося
на -, 9 C. Ось так.
Тож давайте
скопіюємо цю цифру 9C і введемо її в калькулятор, і ви побачите, що вона є від'ємним числом.
Чому?
Тому що старший біт дорівнює одиниці.
Тож давайте перетворимо це в додатне число і подивимося, що з цього вийде.
Тож давайте відкриємо ваш калькулятор.
Переконайтеся, що ви перебуваєте в режимі програміста.
Виберіть двійковий запис, а тут виберіть байт.
Тепер введіть це значення: 10011100.
Тож давайте покладемо це зараз.
10011100.
Отже, це ваш 9С.
Тепер давайте перетворимо в
додатне число, і ви побачите, що це 64.
Отже, це число 9C насправді є від'ємним 64.
Тож ми отримали назад наш номер.
Раніше ми виконували множення, тепер ділимо і отримуємо від'ємне 64.
Ось як працює IDIV.
Давайте врятуємо нашу роботу.
Тож давайте натиснемо
на файл patch, file, patch, а потім прокрутимо вниз і назвемо його 45-idiv- 45-idiv. exe. Залиш це собі.
Ось і все.
На цьому відео все.
Дякуємо за перегляд.