Single stepping over calls is implemented using normal breakpoints; note that this will not work on code in ROM. Stepping through other instructions is implemented using the Trap Flag (bit 8 of the EFLAGS register in the 80386).