असेंबली - लॉजिकल ऑपरेटर्स / निर्देश

Prahlad Godara ------ From DOOSEEP

लॉजिकल ऑपरेटर बूलियन एक्सप्रेशन का मूल्यांकन करते हैं और यह निर्धारित करते हैं कि उपयोग किए गए ऑपरेटर के आधार पर संपूर्ण एक्सप्रेशन सही है या गलत। असेंबली लैंग्वेज में कंडीशन इंस्ट्रक्शंस के साथ लॉजिकल इंस्ट्रक्शंस का भी इस्तेमाल किया जाता है।

असेंबली में लॉजिकल ऑपरेटर - AND, OR, XOR, TEST and NOT


Operators - AND, OR, XOR, TEST and NOT

NASM असेंबली लैंग्वेज प्रोसेसर इंस्ट्रक्शन सेट AND, OR, XOR, टेस्ट और नॉट बूलियन लॉजिक प्रदान करता है, जो प्रोग्राम द्वारा आवश्यक बिट्स का परीक्षण, सेट और क्लियर करता है।

निर्देशों का प्रारूप −

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 NOT NOT operand1

सभी मामलों में पहला ऑपरेंड या तो एक रजिस्टर या मेमोरी में हो सकता है। दूसरा ऑपरेंड या तो रजिस्टर/मेमोरी या तत्काल (स्थिर) मान में हो सकता है। हालाँकि, मेमोरी-टू-मेमोरी ऑपरेशन संभव नहीं हैं। ये निर्देश ऑपरेंड के बिट्स की तुलना या मिलान करते हैं और CF, OF, PF, SF और ZF फ्लैग सेट करते हैं।

  Operand1: 	Operand1: register or memory
  Operand2: 	Operand2: register/memory or immediate (constant)
--------------------------------------
After AND ->  Operand: register/memory

AND अनुदेश

AND निर्देश बिटवाइज़ AND ऑपरेशन करके तार्किक अभिव्यक्तियों का समर्थन करने के लिए उपयोग किया जाता है। यदि दोनों ऑपरेंड के मैचिंग बिट 1 हैं, तो बिटवाइज़ AND ऑपरेशन 1 देता है, अन्यथा यह 0 देता है।

Syntax
 AND    Register or memory,    register/memory or immediate (constant)

For example

AND  AL,  01H


THE OR अनुदेश

OR निर्देश बिटवाइज़ OR ऑपरेशन करके तार्किक अभिव्यक्ति का समर्थन करने के लिए उपयोग किया जाता है। यदि एक या दोनों ऑपरेंड के मिलान बिट 1 हैं। तो बिटवाइज़ OR ऑपरेटर 1 लौटाता है, यदि दोनों बिट शून्य हैं, तो यह 0 देता है।

OR ऑपरेशन का उपयोग एक या अधिक बिट सेट करने के लिए भी किया जा सकता है।

Syntax
 OR    Register or memory,    register/memory or immediate (constant)

For example

OR  AL, BL

XOR इंस्ट्रक्शन

XOR इंस्ट्रक्शन बिटवाइज़ XOR ऑपरेशन को लागू करता है। यदि दोनों ऑपरेंड के बिट अलग-अलग हैं। एक्सओआर ऑपरेशन परिणामी बिट को 1 पर सेट करता है, यदि ऑपरेंड के बिट समान हैं (दोनों 0 या दोनों 1), परिणामी बिट 0 पर सेट है।

किसी ऑपरेंड को अपने साथ XOR करने से ऑपरेंड 0 में बदल जाता है। इसका उपयोग रजिस्टर को खाली करने के लिए किया जाता है।

Syntax
 XOR    Register or memory,    register/memory or immediate (constant)

For example

XOR  EAX,  EAX

TEST अनुदेश

TEST निर्देश AND ऑपरेशन की तरह ही काम करता है, लेकिन AND निर्देश के विपरीत, यह पहले ऑपरेंड को नहीं बदलता है।

Syntax
 TEST    Register or memory,    register/memory or immediate (constant)

For example

TEST  AL,  01H

NOT इंस्ट्रक्शन

नॉट इंस्ट्रक्शन बिटवाइज़ नॉट ऑपरेशन को लागू करता है। NOT ऑपरेशन एक ऑपरेंड में बिट्स को उलट देता है। ऑपरेंड या तो रजिस्टर में या मेमोरी में हो सकता है। यदि परिणाम 1 है तो 0 लौटाता है। 0 होने पर 1 लौटाता है।

Syntax
  NOT    Register or memory 

NOTE - एक से अधिक स्थितियों की तुलना करने के लिए लॉजिकल इंस्ट्रक्शंस/ऑपरेटर्स का उपयोग किया जाता है। अन्य भाषाओं में सत्य और असत्य की तरह, असेंबली में 1 और 0 का प्रयोग किया जाता है।

Exampal

एक उदाहरण लेते हैं। कि दी गई संख्या विषम है या सम।


    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  'Even Number!' ;message showing even number
len1  equ  $ - even_msg 
   
odd_msg db  'Odd Number!'    ;message showing odd number
len2  equ  $ - odd_msg

जब उपरोक्त कोड संकलित और निष्पादित किया जाता है, तो यह निम्न परिणाम उत्पन्न करता है −

 Even Number!


Read in- English
Tags- education, Assembly - Logical Operators in hindi, assembly language, type of Assembly Logical Operators , example program in assembly language
कोई टिप्पणी नहीं:
एक टिप्पणी भेजें