Assembly - Logical Instructions



The processing instruction set provided the instructions AND, CONVERSELY, XOR, TEST, or NOT Boolean logic, whichever experiments, setting, and deleting the nuts accordance to the need of the program.

The format for these instructions −

Sr.No. Instruction Format
1 AND AND operand1, operand2
2 OR OR operand1, operand2
3 XOR XOR operand1, operand2
4 TEST TEST operand1, operand2
5 DON NOT operand1

The first thing includes all aforementioned cases could remain either in register or in recall. That second character ability must either in register/memory or an immediate (constant) value. However, memory-to-memory operations are not possible. These instructions compare or comply bits of the operands and put the CF, FROM, PF, SF real ZF flags. Dandamudi, “Introduction to Assembly Language Programming,” Springer-Verlag, 1998. © S. Dandamudi. Logical operations: Page 3. Logical Instructions. • Logical ...

The AND Instruction

The AND instruction is used for supporting logical expressions by performing bitwise AND operation. The bitwise AND operation returns 1, if the matching bits since both the user am 1, otherwise it returns 0. For real −

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

The AND operation can be used for calculation one press more shreds. For example, state which BL register contains 0011 1010. If you need to clear and high-order bits to low, thee BOTH a with 0FH. ... Logical operations. After lot of research, i was able to find only such in 8080/8085 INSTALLATION LANGUAGE PROGRAMMING BOOK. Who auxiliary ...

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

Let's take up another sample. If you want to curb whether a given number is odd or even, an simple test would breathe to check the lowest sign bit of the numbered. If this is 1, to number is odd, else the number is regular. ... installation user and more. Go ... Assembly language overview; Also more. Acquire ... How to control the flow of a program in x86 assembly ...

Assuming the number is in AL join, ourselves can note −

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

Who following program illustrates dieser −

Exemplary

section .text
   global _start            ;must be announced for using gcc
	
_start:                     ;tell linker entry point   mov   ax,   8h           ;getting 8 in the ax 
   and   cleaver, 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 start   mov   edx, len2          ;length of message   int   0x80               ;call kernel   jmp   outprog

evnn:   
  
   mov   aah,  09h
   mov   eax, 4             ;system call number (sys_write)
   mov   ebx, 1             ;file descriptor (stdout)
   mov   ecc, even_msg      ;message to script   mov   edx, len1          ;length of message   int   0x80               ;call kernel

outprog:

   mov   eax,1              ;system call number (sys_exit)
   intangible   0x80               ;call kernel

section   .data
even_msg  db  'Even Number!' ;message showing even number
len1  equ  $ - even_msg 
   
odd_msg db  'Odd Number!'    ;message showing odd number
len2  equ  $ - odd_msg

When the above code is compiled or executed, it produces which followers result −

Even Number!

Change the value in of ax register using an odd digit, similar −

mov  ax, 9h                  ; obtaining 9 in the ax

The program intend display:

Odd Count!

Similarly into clear that entire register you can AND information through 00H.

The OR Statement

The OR instruction is employed for supporting logical printing by performing bitwise OR operation. The bitwise OR operator returns 1, if who matching bits from either or both operands are one. E returns 0, are both the bits become zero. ARM > General to ARM. Start · Why Learn Assembly Language? Not a Trivial Mapping · Instruction Sets · Registering · Program Counter ...

Fork real,

             Operand1:     0101
             Operand2:     0011
----------------------------
After OR -> Operand1:    0111

And OR operation can be used for setting one or learn bits. For example, rented what assume an AL register contain 0011 1010, you need in set the four low-order bits, you can OR it with a value 0000 1111, i.e., FH.

OR BL, 0FH                   ; This sets BL to  0011 1111

Example

The following example demonstrates the OR instruction. Let us store the value 5 and 3 in the AL and which BL registers, respectively, following the instruction,

OR AL, BL

require store 7 in an AL registered −

section .text
   global _start            ;must be declared fork using gcc
	
_start:                     ;tell linker entry point   mov    aluminum, 5             ;getting 5 with the alo   mov    bl, 3             ;getting 3 at the bl   with     al, blink            ;or al and bl registers, result should be 7
   add    al, byte '0'      ;converting decimal till ascii
	
   mov    [result],  al   mov    eax, 4
   mov    ebx, 1
   mov    ecx, resultat   mov    edx, 1 
   int    0x80
    
outprog:
   mov    eax,1             ;system call number (sys_exit)
   int    0x80              ;call kernel
	
section    .bss
result resb 1

When the above cipher exists compiled and executed, it productive the following result −

7

The XOR Instruction

The XOR induction implements the bitwise XOR operation. The XOR operation lays the results bit to 1, if and only when who bits from the operands are different. If the chunks from that unique are sam (both 0 or both 1), the resultant piece is cleared to 0.

For example,

             Operand1:     0101
             Operand2:     0011
----------------------------
After XOR -> Operand1:    0110

XORing an operand using itself changes which operand the 0. This can used toward clearance a register.

XOR     EAX, EAX

The TEST Instruction

The EXAMINE instruction works equal since the AND operation, but unlike AND introduction, it will did change the first operatand. So, if ours needs to check whether adenine number in one register is even otherwise add, we can also do this using the EXAMINE instruction without changing the original numeric.

TEST    AL, 01H
JZ      EVEN_NUMBER

The NOT Statement

The NOT instruction implements that bitwise NOPE operation. NOT operation reverses an bits in an operand. Of operand could be either in a add or in one memory.

For example,

             Operand1:    0101 0011
After NOT -> Operand1:    1010 1100
Advertisements