In a nutshell
There are three ways to move data between a device and memory. With programmed I/O the CPU does everything — it repeatedly checks the device (polling) and copies every single word itself, staying fully busy. Interrupt-driven I/O lets the CPU do other work and step in only when the device signals it is ready. DMA goes further: a dedicated controller moves the whole block directly between device and memory, freeing the CPU until one interrupt announces the transfer is done.