abc Asembler - elektronski priručnik
XI dio Logičke instrukcije

Instrukcija AND

Instrukcija AND se koristi za podršku logičkih izraza izvođenjem bitske (bitwise) AND operacije. AND operacija vraća 1, ako su upareni bitovi od oba operanda 1, inače vraća 0. Na primjer:

                Operand1:  0101
                Operand2:  0011
-------------------------------- 
Nakon AND  -> 	Operand1:  0001

Operacija AND se može koristiti da se isprazni jedan ili više bitova. Na primjer, neka BL registar sadrži 0011 1010. Ako je potrebno isprazniti bitove višeg reda na nulu, AND-ujemo ih sa 0FH.

AND  BL,  0FH 		; This sets BL to 0000 1010

Pogledajmo drugi primjer. Ako želimo provjeriti da li je dati broj neparan ili paran, jednostavan test bi bio da provjerimo najmanje značajan bit tog broja. Ako je on 1, broj je neparan, inače je broj paran.
Pretpostavljajući da je broj u AL registru, možemo pisati:

AND     AL, 01H 		; ANDing with 0000 0001
JZ      EVEN_NUMBER 

Sljedeći program ilustruje ovo:.

Primjer

section   .text
     global _start 			;must be declared for using gcc
_start: 					;tell linker entry point
       mov  ax, 8h 			;getting 8 in the ax
       and  ax, 1 			;and ax with 1
       jz   evnn
       mov  eax, 4 			;system call number (sys_write)
       mov  ebx, 1 			;file descriptor (stdout)
       mov  ecx,odd_msg 	;message to write
       mov  edx, len2 		;length of message
       int  0x80 			;call kernel
       jmp  outprog
evnn:
       mov  ah, 09h
       mov  eax, 4 			;system call number (sys_write)
       mov  ebx, 1			;file descriptor (stdout)
       mov  ecx, even_msg 	;message to write
       mov  edx, len1 		;length of message
       int  0x80 			;call kernel
outprog:
       mov  eax, 1 			;system call number (sys_exit)
       int  0x80 			;call kernel
section   .data
even_msg   db  'Paran broj!'    ;message showing even number
len1             equ $ - even_msg
odd_msg    db  'Neparan broj!' 	;message showing odd number
len2            equ $ - odd_msg

Kada se gore navedeni kod kompajlira i izvrši, on će proizvesti sljedeći rezultat:

Paran broj!

Zamijenimo vrijednost u ax registru sa neparnim brojem, poput:

mov  ax, 9h 	; getting 9 in the ax 

Program će prikazati:

Neparan broj!

Slično, da bismo ispraznili čitav registar, možemo ga AND-ovati sa 00H.

Logičke instrukcije    <    Index    >    Instrukcija OR