Amigos,
Inicialmente quero agradecer pelas respostas dadas. :thumbup:
Testei algumas interrupções mas não obtive resultados.Paciência.
Aproveitando a oportunidade gostaria de fazer outra pergunta tendo como base o programinha abaixo:
[code].model small
.stack
.code
inicio:
;leitura
mov ah,1h ;Lê o caracter digitado
int 21h ;Lança a interrupção para o caracter digitado
;escrita
mov dl,al ; O valor lido em al, vai para dl
mov ah,2h ; A função 2h(segundo a tabela) deveria imprimir o caractere em dl
int 21
end inicio
[/code]
Este é um programinha simples que deveria ler um caracter do teclado retornando-o em seguida (ECO), mas que não funciona.
Algo semelhante ao
scanf();
printf():
do c.
A versão que funciona é:
[code] .model small
.stack
.code
inicio:
;leitura
mov ah, 2h ;Não entendo o porque da função de impressão está logo no começo
mov ah, 1h ;Lê o caracter digitado
int 21h ;Lança a interrupção para o caracter digitado
mov dl,al
;escrita
mov ah,4ch ; a função 4ch deveria finalizar o dos, mas aqui ela estranhamente faz o que o 2h deveria fazer: a impressão.
int 21h
end inicio[/code]
Onde está o erro na primeira versão? O código está bem estruturado, como em um algoritmo simples.
Na segunda versão, o código começa com mov ah,2h que deveria ser usado para impresão, para mim, isto torna o código pouco lógico.Mas o pior é que funciona!
E por fim a linha mov ah, 4ch deveria apenas fechar o programa, mas neste caso a linha esta funcionando como um “printf()”
Alguém gostaria de comentar?.