Data Declaration & Direct Addressing
Short Notes Assembly language

I've got accomplished web development with expertise in various programming languages including PHP, Laravel, C#, and C++. My curiosity to learn more and my passion for coding drives me to constantly enhance my skills and create exceptional digital experiences.
Introduction: Assembly language programming involves low-level programming techniques to control and manipulate computer hardware. Two fundamental concepts in assembly programming are data declaration and direct addressing. In this blog, we will explore these concepts and understand their significance in writing efficient and effective assembly code.
Data Declaration:
Data declaration is the process of allocating memory for variables and assigning initial values to them. This step is crucial as it allows the program to store and manipulate data. Two common directives used for data declaration are db and dw.
db Directive:
The db directive is used to define a byte, which represents an 8-bit value. It allocates and initializes byte-sized data. Let's see an example:
assemblyCopy codemy_byte db 10
In the above code, a byte-sized variable named my_byte is declared and initialized with the value 10. The db directive allocates one byte of memory for this variable.
dw Directive:
The dw directive is used to define a word, which represents a 16-bit value. It allocates and initializes word-sized data. Consider the following example:
assemblyCopy codemy_word dw 100
In this code snippet, a word-sized variable named my_word is declared and initialized with the value 100. The dw directive allocates two bytes of memory for this variable.
Direct Addressing:
Direct addressing is an essential addressing mode in assembly language programming. It allows direct access to data stored in specific memory addresses. The mov instruction is commonly used for direct addressing.
mov Instruction:
The mov instruction moves data between registers and memory locations. In direct addressing, we can move data from memory to a register or vice versa. Let's consider the following example:
assemblyCopy codemov ax, my_word
In this code, the mov instruction moves the value stored in the memory location my_word into the ax register. This allows us to access and manipulate the data directly.
add Instruction:
The add the instruction performs addition operations in assembly language. In direct addressing, we can add values from memory locations. Here's an example:
assemblyCopy codeadd ax, my_byte
In the above code, the add instruction adds the value stored in the memory location my_byte to the value in the ax register. This operation modifies the value in the ax register directly.
Example Code:
Let's examine a small block of code that demonstrates data declaration and direct addressing:
assemblyCopy codesection .data
my_byte db 5
my_word dw 10
section .text
global _start
_start:
mov al, [my_byte] ; Move the value in my_byte to the al register
mov bx, [my_word] ; Move the value in my_word to the bx register
add ax, bx ; Add the values in ax and bx
; Further operations or program logic
mov ah, 0x4c ; Set the exit function code
int 0x21 ; Invoke the operating system function
In this code snippet, we declare and initialize a byte-sized variable my_byte with the value 5 and a word-sized variable my_word with the value 10. We then use direct addressing to move the values of my_byte and my_word into the al and bx registers, respectively. Finally, we add the values in the ax and bx registers and perform further operations or program logic.

