Привіт і ласкаво просимо назад.
У цьому уроці ми розглянемо перетворення байтів, слів і подвійних
слів за допомогою команд CBW, CWD, CWDE і CDQ.
СБВ.
CBW розшифровується як перетворення байта в слово.
Це означає, що він перетворює один байт, який має вісім біт, у слово, яке має 16 біт.
Не сперечайтеся.
Він поширюється - на - на основі знаку.
Наприклад, якщо ми перемістимо це двійкове число в - , і якщо ми припустимо, що це знакове число, це буде від'ємне число
через одиницю, що стоїть перед ним.
Отже, коли ми виконуємо інструкцію CBW, вона додає розширення або одиниці ззаду, щоб перетворити
її на 16 біт.
У цьому і полягає сенс CBW.
Далі, CWDE.
CWDE перетворює слово, яке складається з двох байт, у подвійне слово, яке складається з чотирьох байт.
Не сперечайтеся.
Він поширюється - на - на основі знаку.
Наприклад, якщо ми перемістимо це однобайтне значення в - , і припустимо, що це знакове число, це буде від'ємне
число.
І коли ми виконуємо CWDE, він розширює всі інші біти одиницями через від'ємне
число, щоб отримати чотири байти або 32 біти.
Якщо тут був нуль, а це означає, що це додатне число, то всі ці числа будуть відповідно
нулями.
Тож давайте спробуємо
спочатку CBW і CWDE.
Тож відкрийте свій x64dbg.
Відкрийте
шаблонний. Спустіться сюди і введіть ці інструкції. Спочатку натисніть клавішу пробіл, потім MOV - , а потім 0b
для двійкового числа, а потім це двійкове число,
один, два, три, чотири, п'ять, шість, сім, вісім.
Далі вводимо
CBW.
СБВ.
Гаразд.
Тепер у нас є брейк-поінт.
Ви біжите до брейк-пойнту і переступаєте через нього.
Тож коли ми переступаємо, - зараз... - має таке значення.
Давайте подивимося, що це таке у двійковій формі.
Давайте скопіюємо його і вставимо в наш калькулятор тут.
І ми бачимо, що це - дійсно одиниця, за якою йдуть нулі та одиниця, яку ми щойно ввели.
Далі ми зробимо CBW.
Тож давайте переступимо через CBW.
А тепер давайте повернемося сюди, скопіюємо нове значення і вставимо його в калькулятор.
А тепер ви побачите, що вона розгорнута,
всі вони тут, тому що це одна. Це від'ємне число.
Тому він розширює його одиницями.
Отже, це два байти або слово.
Тепер давайте розглянемо інший
приклад, CWDE.
Тож ми продовжуємо тут.
Сюди, а потім
сюди ми переміщуємо це ж значення в - .
0b, один, два, три, чотири, п'ять, шість, сім, вісім.
Заходьте.
Потім ми робимо CWDE, C-W-D-E, CWDE.
Гаразд.
Тож ми продовжуємо переступати. Він переміщує це в - . Тож давайте перевіримо - зараз. Клацніть правою кнопкою миші, скопіюйте
це значення.
І покладіть його у свій калькулятор.
Гаразд.
Отже, тепер перший байт - 10000001.
Ми знаємо це з попереднього прикладу.
Отже, зараз ми перейдемо до цієї інструкції, CWDE.
А потім ми копіюємо це нове значення і вставляємо його сюди.
А тепер ми бачимо, що він розширив усі ці біти ззаду, щоб зробити його 32-бітним або подвійним словом.
Тож давайте врятуємо це зараз.
Отже, ми натискаємо файл, файл виправлення і даємо йому ім'я.
Ми назвемо його 43, а це -convert -bytes,
а це -part1. Асм.
Збережи.
На цьому відео все.
У наступному відео ми продовжимо розповідь про інші два перетворення.
Побачимося.
Дякуємо за перегляд.