Data movement instructions are used to transfer data between registers, memory, and immediate values.
mov: Moves data from a source to a destination.push: Pushes data onto the stack.pop: Pops data from the stack.lea: Loads the address of a variable into a register.
section .data
num1 db 10 ; Declare a byte variable with value 10
num2 db 20 ; Declare another byte variable with value 20
section .text
global _start
_start:
mov al, [num1] ; Load the value of num1 into AL register
mov bl, [num2] ; Load the value of num2 into BL register
add al, bl ; Add the two values
mov [num1], al ; Store the result back into num1
This example transfers data between memory and registers and performs an addition operation.
section .text
global _start
_start:
push 5 ; Push 5 onto the stack
push 10 ; Push 10 onto the stack
pop rax ; Pop the top value (10) into rax
pop rbx ; Pop the next value (5) into rbx
Stack operations are useful for saving and restoring data during function calls.