Atividade 3 (obrigatória):   Programação de rotinas de interrupção

Editado em 30 Set 2003

O objetivo desta atividade é codificar em assembler duas rotinas de interrupção completas.

1.1 Escreva um programa inteiramente em assembler que:

1.2 Escreva um programa inteiramente em assembler que:


 Obs:
(1)
a fim de evitar que seu programa entre num laço infinito de interrupções, a rotina de interrupção deve retornar com o IP apontando para a instrução seguinte àquela que fez a divisão por zero.
(2)Tanto no caso 1.1 como 1.2, a única função do DOS permitida no seu programa é a de saída de cadeia decaracteres no vídeo INT 21h, 09.

1.3 (Opcional) Modifique o programa myint.asm visto em aula de forma a instalar a rotina de interrupção myint no vetor 1ch que é acionado pelo BIOS cerca de 18 vezes por segundo. Utilize um contador na memória com valor inicial igual a 18, decrementando-o dentro da rotina a cada interrupção: somente quando o contador chegar a 0 emita a mensagem "dentro da rotina de interrupção" e volte o contador ao valor inicial. Como o BIOS muda o valor de ds ao acionar a interrupção 1ch, na rotina myint V. deve fazer ds := cs. No laço principal do programa V. deve ficar à espera da interrupção executando a instrução hlt como no exemplo a seguir:

l0:
    hlt          ; esta instrução é simulada pela máquina virtual do Windows
    jmp l0
                 ; interrompa a execução com Ctrl-C !!

Observe que o truque de mostrar o número do vetor não vai funcionar nesse caso. Ignore o problema.

V. deve demonstrar o funcionamento dos dois programas no laboratório e entregar impressões dos programas em assembler (no formato .lst)

Data de submissão: 30/09/03. Prazo de Entrega: 9/10/03.