Using stack instructions to transfer memory blocks to video memory was also popular on ZX Spectrum (which has Z80 cpu and no dedicated blitting, DMA or sprites hardware). For example, this article describes how to do that for double-buffering. Maybe on PC it was possible to use DMA for copying large blocks of memory? (Actual double buffering of whole screen is probably done by switching displayed buffer in hardware, but, for example, for copying half of screen).
It was also used for smaller sprites, but I can’t find examples of disassembled code.
If I recall right on PC, EGA introduced the ability to double-buffer/scroll, and VGA brought the proper blitting.