Page 29 - 4989
P. 29
початкової адреси масиву arr та регістру еdi.
Операнди команди MOV повинні мати однакову розмірність.
Наприклад, недопустимими є команди MOV AX,BH або
MOV BX,VAR при розрядності змінної VAR, відмінної від 2
байт. Якщо все ж необхідно скопіювати певну кількість байт
незалежно від розрядності змінної, слід застосовувати
модифікатори BYTE PTR/WORD PTR/DWORD PTR для
позначення відповідно 1-, 2- та 4-байтового операнда. Наприклад:
MOV BX, DWORD PTR VAR
Цей модифікатор також слід застосовувати, якщо із команди
незрозуміло, скільки байт слід скопіювати. Наприклад, команда
MOV [EBX], 10 невірна, оскільки невідома розрядність константи
10. Слід написати, наприклад
MOV WORD PTR [EBX], 10
Командою MOV не може бути виконана пересилка із комірки
пам’яті у комірку пам’яті. Наприклад, якщо Х та Y – це деякі
змінні, то команда MOV X,Y буде невірною.
3.3.2 Логічні команди. Флаги
Логічні команди виконують порозрядні логічні операції між
операндами, тобто, наприклад, при виконанні команди
AND AL,BL операція "логічне І" виконується окремо над кожним
із 8 бітів регістрів AL і BL.
По результатах виконання більшості логічних команд
встановлюються флаги нуля ZF, парності PF та знаку SF. Флаги –
це окремі біти в регістрі флагів мікропроцесора EFLAGS, які
встановлюються в "1" при наявності деякої ознаки у результаті
виконання арифметичних або логічних команд та в "0" при її
відсутності. На рис. 3.1 показано регістр FLAGS (молодші 2
байти регістру EFLAGS).
- NT IOPL1 IOPL0 OF DF IF TF SF ZF - AF - PF - CF
Рисунок 3.1 – Регістр FLAGS ("-" – біт не використовується)
29