In programming, accessing external devices like printers or modems involves communication between an application program and a device driver. The driver is specialized software that facilitates direct communication with hardware components. This process typically involves reading and writing to specific addresses associated with various chips within the computer, rather than standard memory addresses. Different chips handle different types of communication, such as serial, parallel, or USB. By interacting with these addresses, data is transferred between the processor and the hardware, enabling functionality with devices like printers and modems.