З поверненням.
У цьому уроці ми розглянемо CWD
і ще один, останній, CDQ.
CWD перетворює слова на подвійні слова.
Вона не приймає аргументів.
Він розширюється - до - : - на основі знака.
Наприклад, якщо у нас є двійкове число, яке переміщується в - , і ми виконуємо CWD, ми побачимо,
що воно розширить - в - на основі цього знаку.
Отже, оскільки це від'ємне число, воно поширюватиметься на всі числа до - . А другий - CDQ.
CDQ перетворює подвійне слово (чотири байти) у чотири слова (вісім байт).
Давайте спробуємо зробити це у x64dbg.
Отже, відкриваємо наш шаблон перший.
А потім ми введемо цю інструкцію.
Тут просто введіть
MOV - , 0b, один,
два, три, чотири,
п'ять, шість, сім, вісім, дев'ять, десять, 11, 12, 13, 14, 15, 16.
Вибачте, я забув - тут.
Клац.
Гаразд.
А тепер наберемо CWD.
Клац.
Гаразд.
Є брейк-поінт,
ми біжимо до нього і переступаємо.
Перемістіть це в - .
Тож давайте подивимось, що там зараз.
Отже, ми копіюємо це значення,
переходимо до нашого калькулятора і бачимо, що він отримав це 16-бітне число,
а саме це.
Отже, це - .
Тож тепер ми перейдемо до ХГВЗ.
Гаразд.
А тепер подивимось, що знаходиться в - . - знаходиться тут, тому скопіюємо - .
І ми бачимо - пішли всі.
Чому?
Тому що останній біт для - був від'ємним числом. Це один.
Ось чому він розширює всі одиниці до - .
Отже, це ХВГС.
Отже, давайте подивимося на CDQ.
CDQ перетворює подвійні слова на чотири слова.
Чотири слова - це вісім байт.
Не сперечайтеся.
Він розширюється - до - : - на основі знака.
Наприклад, якщо ми перемістимо це 32-бітне число у - , і виконаємо CDQ, то воно розширить цей знак, який
у даному випадку є від'ємним числом, у - .
Отже, ви бачите, що - має всі одиниці.
Тож давайте спробуємо це зараз у нашій програмі.
Отже, тут ми введемо нову інструкцію, MOV - , і введемо двійкове число. Введіть це двійкове число, 32-бітне
число.
Отже, 0b, один, два, три, чотири, п'ять, шість, сім, вісім, дев'ять, десять,
11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32.
Тож це довге число.
Потім ми робимо CDQ, CDQ.
Гаразд, продовжимо.
Ми зараз тут, і давайте продовжимо переступати, переступати, і подивимося, що знаходиться в - .
Отже, ми копіюємо значення, відкриваємо наш калькулятор і вставляємо його сюди, і бачимо, що -
має це 32-бітне число, яке ми щойно ввели тут.
Тепер ми збираємося зробити CDQ.
Тож ми переступаємо через нього і розглядаємо - . - всі одиниці.
Так чи інакше, давайте підтвердимо це.
Скопіюйте це і вставте сюди, і ви побачите всі варіанти.
Так відбувається тому, що - є негативним. Тому він поширюється на всі.
Якби це було додатне число, якби це був нуль, то це додатне число, тоді це були б усі
нулі.
Ось як працює CDQ.
Отже, в цьому уроці ми розглянули ХГВЗ та ХКЗ.
Тож давайте врятуємо це зараз.
Отже, натискаємо файл, патч, патч, і називаємо це 44-convert -bytes-words-part2.
Асм.
Збережи.
На цьому відео все.
Дякуємо за перегляд.