Specificarea numerelor în binar

Un literal se poate specifica ca fiind reprezentarea unui numar scris în baza doi daca este urmat de caracterul 'b'.

Exemplu:

a db 10011001b
a db 153
a db 99h

reprezinta aceasi declaratie de octet.


Reprezentarea întregilor negativi

Un numar întreg x, negativ se prezinta în calculator în cod complementar. Un numar întreg x, x<0, se reprezinta în cod complementar astfel: începând de la bitul de rang 0 (cel mai din dreapta), spre stânga, se pastreaza bitii de la reprezentarea lui |x| pâna la întâlnirea primului bit de valoare 1, care se pastreaza si el. Începând de la stânga acestuia, toti ceilaltî biti îsi inverseaza valorile.

Exemple:

Reprezentarea în cod complementar pe un octet al întregului -7

|-7| = 7 = (00000111)2

Aplicând algoritmul de mai sus obtinem (11111001)2=(F9)16, am subliniat singurul bit care si-a pastrat valoarea

Reprezentarea în cod complementar pe un octet al întregului -12

|-12| = 12 = (00001100)2

Aplicând algoritmul de mai sus obtinem (11110100)2=(F4)16, am subliniat bitii care si-a pastrat valoarea


Verificarea valorii din CF

Valoarea din Carry Flag se poate verifica cu ajutorul instructiunii jc (jump if carry):

Exemplu:

mov al, 19

shr al, 1 ; în CF se pune bitul care iese în dreapta, de fapt restul împartirii lui al la 2

jc impar

; valoarea din al este para

jmp peste

impar:

; valoarea din al este impara

peste:


Pseudo operatii pe biti

În limbaj de asamblare exista si pseudo-operatii corespunzatoare operatiilor 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 numar

expresie1 shr numar

Observatie: Toate expresiile trebuie sa 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