Operaţii de deplasare:
shl – shift left (deplasează
în stânga)
shr – shift right
(deplasează în dreapta)
sal – shift arithmetic left (deplasare artimetică în stânga)
sar - shift arithmetic right (deplasare aritmetică în dreapta)
Sintaxa shl:
shl destinaţie, număr
- destinaţie poate fi registru pe 1 sau 2 octeţi sau o locaţie de memorie de 1 sau 2 octeţi
- număr poate fi 1 sau registrul cl, valoarea din cl nu trebuie să depăşească 31
Efect:
Biţii stocaţi în destinaţie se deplasează număr poziţii spre stânga. Bitul (sau biţii) cel mai din dreapta se completează cu 0. Ultimul bit care iese în stânga se păstrează în CF.
Exemplu:
mov al, 00110011
mov cl, 2
shl al, cl ; -> al = 11001100, CF = 0
Sintaxa shr:
shr destinaţie, număr
- destinaţie poate fi registru pe 1 sau 2 octeţi sau o locaţie de memorie de 1 sau 2 octeţi
- număr poate fi 1 sau registrul cl, valoarea din cl nu trebuie să depăşească 31
Efect:
Biţii stocaţi în destinaţie se deplasează număr poziţii spre dreapta. Bitul (sau biţii) cel mai din stânga se completeaza cu 0. Ultimul bit care iese în dreapta se păstrează în CF.
Exemplu:
mov al, 01011110
mov cl, 2
shr al, cl ; -> al = 00010111, CF = 1
Sintaxa sar:
sar destinaţie, număr
- destinaţie poate fi registru pe 1 sau 2 octeţi sau o locaţie de memorie de 1 sau 2 octeţi
- număr poate fi 1 sau registrul cl, valoarea din cl nu trebuie să depăşească 31
Efect:
Biţii stocaţi în destinatie se deplasează număr poziţii spre dreapta. Bitul (sau biţii) cel mai din stânga se completează cu bitul de semn (bitul cel mai din stânga înainte de rotire). Ultimul bit care iese în dreapta se păstrează în CF.
Exemplu:
mov al, 11011110
mov cl, 2
sar al, cl ; -> al = 11110111, CF = 1
Sintaxa sal: identică cu sintaxa shl
Operaţii de rotire:
rol – rotate left
ror – rotate right
rcl – rotate through carry left
rcr - rotate through carry right
Sintaxa rol:
rol destinaţie, număr
- destinaţie poate fi registru pe 1 sau 2 octeţi sau o locaţie de memorie de 1 sau 2 octeţi
- număr poate fi 1 sau registrul cl, valoarea din cl nu trebuie să depăşească 31
Efect:
Biţii stocaţi în destinaţie se rotesc număr poziţii spre stânga. Odată un bit ieşit în stânga el se adaugă automat în partea dreaptă a destinaţiei. Ultimul bit rotit se păstrează în CF.
Exemplu:
mov al, 00110011
mov cl, 2
rol al, cl ; -> al = 11001100, CF = 0
Sintaxa ror:
ror destinaţie, număr
- destinaţie poate fi registru pe 1 sau 2 octeţi sau o locaţie de memorie de 1 sau 2 octeţi
- număr poate fi 1 sau registrul cl, valoarea din cl nu trebuie să depăşească 31
Efect:
Biţii stocaţi în destinaţie se rotesc număr poziţii spre dreapta. Odată un bit ieşit în dreapta el se adaugă automat în partea stângă a destinaţiei. Ultimul bit rotit se păstrează în CF.
Exemplu:
mov al, 00111110
mov cl, 2
ror al, cl ; -> al = 10001111, CF = 1
Sintaxa rcl:
rcl destinaţie, număr
- destinaţie poate fi registru pe 1 sau 2 octeţi sau o locaţie de memorie de 1 sau 2 octeţi
- număr poate fi 1 sau registrul cl, valoarea din cl nu trebuie să depăşească 31
Efect:
Biţii stocaţi în destinaţie se rotesc număr poziţii spre stânga. Odată un bit ieşit în stânga el se păstrează în CF. Valoarea anterioră din CF se adaugă automat în partea dreaptă a destinaţiei.
Exemplu:
stc; CF = 1 (set carry)
mov al, 00110011
mov cl, 2
rcl al, cl ; -> al = 11001110, CF = 0
Sintaxa rcr:
rcr destinaţie, număr
- destinaţie poate fi registru pe 1 sau 2 octeţi sau o locaţie de memorie de 1 sau 2 octeţi
- număr poate fi 1 sau registrul cl, valoarea din cl nu trebuie să depăşească 31
Efect:
Biţii stocaţi în destinaţie se rotesc număr poziţii spre dreapta. Odată un bit ieşit în dreapta el se păstrează în CF. Valoarea anterioră din CF se adaugă automat în partea stângă a destinaţiei.
Exemplu:
stc; CF = 1 (set carry)
mov al, 00110011
mov cl, 2
rcr al, cl ; -> al = 11001100, CF = 1
Operatii logice:
and – şi logic
or – sau logic
xor – sau exclusiv logic
not – negare logică
Sintaxa and, or, xor, not:
and destinaţie, sursă
or destinaţie, sursă
xor destinaţie, sursă
not destinaţie
- destinaţie poate fi registru sau memorie pe unul sau doi octeţi
- sursă poate fi registru, memorie sau constantă pe unul sau doi octeţi
- trebuie să aibă ambele aceeaşi dimensiune nu pot fi ambele memorie
Efect:
destinaţie = destinaţie and sursă
destinaţie = destinaţie or sursă
destinaţie = destinaţie xor sursă
destinaţie = not destinaţie
and |
0 |
1 |
|
or |
0 |
1 |
|
xor |
0 |
1 |
|
not |
|
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
|||
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
Observaţie: operaţiile de deplasare şi de rotire pe biţi afectează şi flagul OF. Pentru mai multe informaţii se poate consulta documentaţie Norton Guide.