As interrupções de software são lançadas manualmente, em qualquer momento para rotinas
importantes do programa, realizar depuração e outros. Esse tipo de interrupção é lançada utilizando
a instrução INT. Essas interrupções podem ser inibidas utilizando a flag I.
Sintaxe:
INT NNN;
Por boa prática, a INT deve ser utilizada com os tipos 35~255 como valor imediato de acordo com o
IVT visto anteriormente.
Quando uma interrupção de software ocorre, os seguintes passos abaixo são executados automaticamente:
Fluxo de execução:
- Salva o PSR(Flags) na pilha
- Salva o endereço de retorno CS:IP na pilha
- Carrega IP com endereço 16-bits contido em NNN*4
- Carrega CS com endereço 16-bits contido em NNN*4 + 4
- As flags I e T são resetadas para 0
É responsabilidade do usuário/programador associar suas rotinas de tratamento. Essas rotinas devem conter
a instrução IRET em seu fim para que o fluxo de execução seja restaurado corretamente.
A INT3 é uma interrupção de software destinada a depuração, ou debug, acionada pela instrução de
de mesmo nome. Segue o fluxo de execução visto acima e possui seu vetor específico definido. A
instrução INT3 possui apenas 1 byte de tamanho.
A INTO é uma outro interrupção de software que é acionada caso a flag overflow esteja setada(1)
no momento da execução da instrução INTO. Segue o fluxo de execução visto acima e possui seu vetor
específico definido. A instrução INTO possui apenas 1 byte de tamanho.