а й для вирахування з константи. Припустимо, нам треба відняти вміст AX з 300. Дуже хочеться написати: sub 300, ax, але команда SUB не допускає можливості вирахування з безпосереднього значення, тому що приймач повинен бути РОН або пам'яттю. Значить, ми могли б попередньо помістити значення 300 в якійсь РОН, а потім відняти від нього AX, однак більш простим варіантом з точки зору процесора буде такою: axax, 300
Ми додали 300 до від'ємного значення ax, що за законами математики дає такий же результат, що і віднімання ax з 300.пріемнік, джерело
Ще одна рідкісна, але іноді дуже корисна команда. Вона схожа на ADD, тільки перед тим, як помістити суму операндів в приймач, проводить обмін значеннями між операндами (як команда XCHG). Ця команда одним махом виконує відразу 2 дії, а значить, може допомогти заощадити процесорний час. p align="justify"> Всі перераховані вище арифметичні операції змінюють прапори SF, ZF, PF, OF відповідно до результату. Команди MUL (множення) і DIV (ділення) були досить докладно описані в попередній статті, тому не будемо повторюватися, і йдемо далі. p align="justify"> Перетворення типів
Розміри операндів арифметичних команд повинні бути однаковими. Тому, якщо необхідно провести арифметичну дію над операндами, що мають різні розміри, слід спочатку перетворити один з них так, щоб обидва операнда мали однаковий розмір. Для цього в системі команд процесора передбачені команди перетворення типів. Вони служать для перетворення байтів в слова, слів - в подвійні слова, подвійних слів - в учетверенное (qword). Ці перетворення можуть виконуватися способом знакового розширення - збільшення розміру операнда з урахуванням знака (заповнення старших розрядів збільшеного операнда значенням старшого біта вихідного операнда) або нульового розширення (заповнення старших розрядів збільшеного операнда нулями). p align="justify"> Команди перетворення із знаковою розширенням без операндів: перетворює байт, що міститься в регістрі AL, в слово, що поміщається в регістр AX.преобразовивает слово, що міститься в регістрі AX, в подвійне слово, що поміщається в регістри DX: AX . Старша частина значення розміститься в DX, а молодша - у AX.преобразовивает слово, що міститься в регістрі AX, в подвійне слово, що поміщається в регістр EAX.преобразовивает подвійне слово, що міститься в EAX, в учетверенное слово, що поміщається в регістри EDX: EAX.
Ще раз нагадаю, що всі перераховані перетворення по суті своїй - лише поширення значення старшого (знакового) біта вихідного операнда на всі біти додається частини. Ці команди працюють з конкретними регістрами і тому не мають операндов.пріемнік, джерело
Перетворює з урахуванням знакового розширення байт в слово або подвійне слово; слово - в подвійне слово. Операнд-джерело може бути пам'яттю або РОН, приймач завжди повинен бути РОН.пріемнік, джерело