Un literal se poate specifica ca
fiind reprezentarea unui număr scris în baza doi dacă este urmat de
caracterul “b”.
Exemplu:
a
db 10011001b
a
db 153
a
db 99h
reprezintă aceaşi
declaraţie de octet.
Un număr întreg x, negativ
se prezintă în calculator în cod complementar. Un număr întreg x,
x<0, se reprezintă în cod complementar astfel: începând de la bitul de
rang 0 (cel mai din dreapta), spre stânga, se păstrează biţii de
la reprezentarea lui |x| până la întâlnirea primului bit de valoare 1,
care se păstrează şi el. Începând de la stânga acestuia,
toţi ceilalţî biţi îşi inversează valorile.
Exemple:
Reprezentarea în cod complementar
pe un octet al întregului –7
|-7| = 7 = (00000111)2
Aplicând algoritmul de mai sus
obţinem (11111001)2=(F9)16, am subliniat
singurul bit care şi-a păstrat valoarea
Reprezentarea în cod complementar
pe un octet al întregului –12
|-12| = 12 = (00001100)2
Aplicând algoritmul de mai sus
obţinem (11110100)2=(F4)16, am subliniat
biţii care şi-a păstrat valoarea
Valoarea din Carry Flag se poate
verifica cu ajutorul instrucţiunii jc (jump if carry):
Exemplu:
mov al, 19
shr al, 1 ; în CF se pune bitul
care iese în dreapta, de fapt restul împărţirii lui al la 2
jc impar
; valoarea din al este pară
jmp peste
impar:
; valoarea din al este
impară
peste:
În limbaj de asamblare există şi pseudo-operaţii corespunzătoare operaţiilor logice: and, or, xor, not, shl, shr.
Sintaxa and, or, xor:
expresie1 and expresie2
expresie1 or expresie2
expresie1 xor expresie2
Sintaxa not:
not expresie
Sintaxa shl, shr:
expresie1 shl număr
expresie1 shr număr
Observaţie: Toate expresiile trebuie să fie
evaluabile la compilare.
Nu este corecta o folosire de forma:
mov al, a or b
Dar este corecta o folosire de forma:
mov al, 1 or 7