Data Declaration & Direct Addressing

Data Declaration & Direct Addressing

Short Notes Assembly language

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.