When generating a software interupt, the processor calls one of the 256 functions pointed to by the interrupt descriptor table (IDT) which is located in the first 1024 bytes of memory while in real mode. It is therefore possible to call these withg a far call.

The first 0x20 (from 0 to 0x1F=31) are reserved for the CPU generated. Then there are 0x10 material interrupts

0X0 Division by zero
0X1 Single-step interrupt
0X2 NMI
0X3
0X4 Overflow
0X5 Bounds
0X6 Invalid Opcode
0X7 Coprocessor not available
0X8 Double fault
0X9 Coprocessor segment overrun
0XA Invalid Task State Segment
0XB Segment not present
0XC Stack Fault
0XD General Protection Fault
0XE Page fault
0XF reserved
0X10 Math fault
0X11 Alignement check
0X12 Machine check
0X13 SIMD floating point Exception
0X14 Virtualization Exception
0X15 Control Protection Exception
0X16
0X17
0X18
0X19
0X1A
0X1B
0X1C
0X1D
0X1E
0X1F
0X20
0X21
0X22
0X23
0X24
0X25
0X26
0X27
0X28
0X29 RtlFailFast(ecx) with ecx = 5 <- STATUS_INVALID_CRUNTIME_PARAMETER
0X2A
0X2B
0X2C
0X2D
0X2E
0X2F
0X30
0X31
0X32
0X33
0X34

Sources

Wikipedia : interrupt descriptor table