Assembly is the closer you can get to the computer hardware with a programming language.
Instead of using IFs, WHILEs, etc., you will move values to registers and memory locations by hand.
If you write a program in C (or C++, Java, Python, etc) you will be able to compile the same code (with some minor changes) on any computer and Operating System. But you won't be able to do the same with Assembly, as it is platform and OS dependent.
You will use Assembly to write hardware drivers or to perform tasks that would take a lot longer using higher level languages.
High performance dependent software (such as games) may use some routines written in ASM to make things faster. You can call an ASM routine from higher level languages.
Just as an example, here goes a small program in Assembly 8086.
This code calculates 6 elements of the Fibonacci numbers.
mov cx, 6; n Fibonacci elements
mov ax, 0
mov bx, 1
mov fib, bx
add fib, ax
mov ax, bx
mov bx, fib
fib dw 0