I wanted ro know, how one does programming to access USB devices (such as webcams) in assembly. I know that some hardware is memory mapped (such as VGA video mapped to 0xA0000), but others are accessed by calling interupts (or certain hardware actions actually trigger interupts). While others have to be accessed directly with the IN and OUT instructions (which actually happens behind the scenes with INT based functions for accessing certain hardware), if no INT function is available. I'm curious how USB devices are accessed. I know NASM can compile 16bit code for DOS, so I'd be interested in trying to write code that accesses USB devices from DOS.