Duda con las diapositivas de compilación de un ejercicio de interrupción en asembler

Duda con las diapositivas de compilación de un ejercicio de interrupción en asembler

de Maria Valentina Da Silva De Souza -
Número de respuestas: 3
Hola el problema plantiado es el siguiente:
Se desea controlar un LED conectado al bit menos significativo del byte de ES sólo escritura ES_LED, de modo que permanezca por siempre un segundo prendido y otro segundo apagado-
Nota: La interrupción TIMER es la O8h y se ejecuta 18 veces por segundo.

Aca pongo la parte del código en asembler que tengo duda:

ES_LED equ ....
cantTics db 0  ;[ Acá estoy definiendo que cantTics sea una variable de tipo byte y que se inicialice  su valor en cero?]

estadoLED db 0

principal proc

move byte ptr CS:[cantTics],0   ;{ Aca dice que esto es igual a hacer cantTics=0, pero nose porque lo hace devuelta si ya lo hizo más arriba. Tambien supongo que asume que las variables declaradas se almacenaron en el rango del CS}
move byte ptr CS:[estadoLED],0  
xor al,al
out dx,al

cli         ; { Porque recién aca deshabilita interrupciones y no lo hace antes en el programa,osea porque cli no es la primera instrucción dentro del programa?}
xor ax,ax
xor bx,bx
mov es,ax

mov word ptr es:[bx+8*4], offset TIMER
mov word ptr es:[bx+8*4 ,cs ; { aca supongo que tembien supone que el segmento de la rutina TIMER es cs?}
sti;
principal endp.

En respuesta a Maria Valentina Da Silva De Souza

Re: Duda con las diapositivas de compilación de un ejercicio de interrupción en asembler

de Gonzalo Tejera -
Hola.

1. Si, eso es lo que se define con el DB.
2. Sí, la segunda inicialización está de más, está hecho así para seguir paso a paso la compilación del código en alto nivel. Sí, las variables globales para los manejadores están en CS.
3. Las secciones críticas de los programas que se protegen y limitan la ejecución de otras cosas que podrían ser importantes deben ser lo más chico posible. El CLI y el STI deben proteger al menos los dos MOVs que acceden al vector de interrupciones.
4. Sí, asume eso para el segmento.

Saludos, Gonzalo

En respuesta a Gonzalo Tejera

Re: Duda con las diapositivas de compilación de un ejercicio de interrupción en asembler

de Maria Valentina Da Silva De Souza -
Hola quizas esta pregunta no viene tanto para este foro, pero sigue con el ejemplo. Cuando utilizo algo db valor, estoy definiendo que la variable algo va a hacer de un byte y la inicializo en cero, cuando hago algo dw 3, estoy definiendo que la variable algo es de 16 bits y la inicializo en 3. Es correcto esto?

Gracias por contestar lo otro que te pregunte :).
Saludos.
En respuesta a Maria Valentina Da Silva De Souza

Re: Duda con las diapositivas de compilación de un ejercicio de interrupción en asembler

de Gonzalo Tejera -
algo db valor, reserva estáticamente un byte en memoria etiquetado como algo e inicializado en valor.

el ejemplo de dw es correcto.

Saludos, Gonzalo