пного рядка
loop m1
15. Команди побітовій обробки даних
До командам побітовій обробки даних відносяться логічні команди, команди зсуву, установки, скидання і інверсії бітів.
Логічні команди: and, or, xor, not. Для всіх логічних команд, крім not, операнди одночасно не можуть знаходитися в пам'яті, значення прапорців: OF=CF=0, AF - не визначений, SF, ZF, PF - визначаються результатом команди.
Загальний вигляд команди логічного множення:
<ім'я> and OP1, OP2; < коментар>
За цією командою вміст першого операнда (OP1) логічно УМН?? Жается на вміст другого операнда (OP2), рез-т передається за адресою першого операнда. Результатом операції AND є «істина», якщо обидва операнда мають значення «істина», в інших випадках результатом буде «брехня». Для комп'ютера «істина»- Це 1, а «брехня»- Це 0.
Приклад: (AL)=1011 0011, (DL)=0000 1111,
and AL, DL; (AL)=0000 0011
Другий операнд називають маскою. Основним призначенням команди and є установка в нуль за допомогою маски деяких розрядів першого операнда. Нульові розряди маски обнуляют відповідні розряди першого операнда, а одиничні залишають відповідні розряди першого операнда без зміни. Маску можна задавати безпосередньо в команді і можна витягати з регістра або пам'яті. Наприклад:
1) and CX, 0FFh; маскою є константа
2) and AX, CX; маска міститься в регістрі CX
3) and AX, TOT; маска в ОП за адресою (DS) + TOT
4) and CX, TOT [BX + SI]; маска в ОП за адресою (DS) + (BX) + (SI) + TOT
5) and TOT [BX + SI], CX; в нуль встановлюються деякі розряди ОП
6) and CL, 0Fh; в нуль встановлюються старші 4 розряду регістра CL
Команда логічного складання має вигляд:
<ім'я> or OP1, OP2; <Коментар>
Результатом виконання цієї команди є поразрядное логічне додавання вмісту першого і другого операндів, результат пересилається за адресою першого операнда. Результатом операції OR є «брехня», якщо обидва операнда мають значення «брехня», в інших випадках результат дорівнює «істина». Ця команда використовується для установки в 1 заданих бітів 1-го операнда за допомогою маски OP2. Нульові біти маски залишають без зміни, а одиничні встановлюють у одиницю відповідні біти першого операнда. Наприклад:
(AL)=1011 0011, (DL)=0000 1111
or AL, DL; (AL)=1011 1111
Старші біти регістра AL залишилися без зміни, а молодші всі стали рівними одиницями. У команді можуть використовуватися різні операнди:
CX, 00FFh;
or TAM, AL;
or TAM [BX] [DX], CX
Якщо у всіх бітах результату будуть 0, то ZF=1.
Команда додавання за модулем 2 (виключає або) має вигляд:
<ім'я> xor OP1, OP2; <Коментар>
Результат цієї операції:
1 xor 1=0, 0 xor 0=0