Constants भी एक प्रकार वेरिएबल है जो मेमोरी या निर्देश लोकेशन या स्थर मान को स्टोर करता है। nasm असेम्ब्ली लैंग्वेज में स्थिरांक को परिभाषित करने के लिए EQU निर्देश का उपयोग किया जाता है।
NASM असेंबली भाषा में स्थिरांक (Constants)
NASM द्वारा प्रदान किए गए कई निर्देश हैं जो स्थिरांक को परिभाषित करते हैं। स्थिरांक को परिभाषित करने के लिए EQU निर्देश, % असाइन निर्देश, % परिभाषित निर्देश आदी.
हम विशेष रूप से तीन निर्देशों पर चर्चा करेंगे -- EQU
- %assign
- %define
EQU निर्देश
EQU निर्देश का उपयोग स्थिरांक को परिभाषित करने के लिए किया जाता है।
EQU निर्देश का सिंटैक्स
CONSTANT_NAME EQU expression
उदाहरण
TOTAL_STUDENTS equ 50
स्थिर मान का उपयोग
mov ecx, TOTAL_STUDENTS
cmp eax, TOTAL_STUDENTS
EQU स्टेटमेंट का ऑपरेंड एक एक्सप्रेशन हो सकता है - और इस प्रकार भी लिख सकते हो।
LENGTH equ 20
WIDTH equ 10
AREA equ length * width
उपरोक्त कोड खंड एरिया को 200 के रूप में स्टोर और परिभाषित करेगा।
उदाहरण
निम्न उदाहरण EQU निर्देश के उपयोग को दर्शाता है -
SYS_EXIT equ 1
SYS_WRITE equ 4
STDIN equ 0
STDOUT equ 1
section .text
global _start ;must be declared for using gcc
_start: ;tell linker entry point
mov eax, SYS_WRITE
mov ebx, STDOUT
mov ecx, msg1
mov edx, len1
int 0x80
mov eax, SYS_WRITE
mov ebx, STDOUT
mov ecx, msg2
mov edx, len2
int 0x80
mov eax, SYS_WRITE
mov ebx, STDOUT
mov ecx, msg3
mov edx, len3
int 0x80
mov eax,SYS_EXIT ;system call number (sys_exit)
int 0x80 ;call kernel
section .data
msg1 db 'Hello, programmers!',0xA,0xD
len1 equ $ - msg1
msg2 db 'Welcome to the world of,', 0xA,0xD
len2 equ $ - msg2
msg3 db 'NASM assembly programming! '
len3 equ $- msg3
उपरोक्त कोड परिणाम
Hello, programmers!
Welcome to the world of,
NASM assembly programming!
% असाइन करने का निर्देश
% असाइन निर्देश का उपयोग EQU निर्देश जैसे संख्यात्मक स्थिरांक को परिभाषित करने के लिए किया जा सकता है। यह निर्देश पुनर्वितरण की अनुमति देता है। उदाहरण के लिए, आप स्थिर टोटल को − के रूप में परिभाषित कर सकते हैं
सिंटैक्स
%assign TOTAL 10
बाद में कोड में, आप इसे - के रूप में फिर से परिभाषित कर सकते हैं
%assign TOTAL 30
यह निर्देश केस-संवेदी है।
defined - % परिभाषित निर्देश
% परिभाषित निर्देश संख्यात्मक और स्ट्रिंग स्थिरांक दोनों को परिभाषित करने की अनुमति देता है। उदाहरण के लिए, आप निरंतर PTR को - के रूप में परिभाषित कर सकते हैं
उदाहरण
%define PTR [EBP+4]
उपरोक्त कोड PTR को [EBP+4] से बदल देता है।
यह निर्देश भी पुनर्वितरण की अनुमति देता है और यह केस-संवेदी है।