Implementar un delay en assembler 8086

Algoritmos, estructuras de datos, estrategias o patterns. Lenguaje' de programasión, vieja! Ce, loco, Ce! Páison, y todo eso.

Implementar un delay en assembler 8086

Notapor Adriano el Mar Jun 05, 2007 4:27 pm

Esta función implementa un retraso (en centésimas de segundo) especificado en RITARDO. Estoy aún tratando de comprender bien el algoritmo, pero funciona. Comentarios y críticas bienvenidos.

Código: Seleccionar todo
;       WAITP:    delays the execution of the main loop
;   uses registers:     AX, DL, BX, CX, DX,
;   variables:   RITARDO

WAITP   PROC NEAR
                    push    ax
                    push    bx
                    MOV     BL, [RITARDO]    ; set the delay
                    MOV     AH, SET_TIME   ; reset system time:
                    XOR     CX, CX         ; zero the time registers
                    XOR     DX, DX
                    INT     DOS

DELAY:             
                    MOV     AH, GET_TIME    ; now read the time
                   INT     DOS
                   MOV     AL, 100           ; compute hundredths of seconds
                   MUL     DH
                   XOR     DH, DH
                   ADD     AX, DX
                   CMP     AL, BL           ; delay passed?
                   JL      DELAY             ; else loop
                    pop     ax
                    pop     bx
                   RET
WAITP   endp
Saludos
Adriano
Avatarde Usuario
Adriano
Administrador
 
Posts: 392
Registrado: Sab Dic 09, 2006 12:50 pm
Ubicación: Argentina

Implementar un delay en assembler 8086

Sponsor

Sponsor
 

Re: Implementar un delay en assembler 8086

Notapor Adriano el Vie Jun 08, 2007 3:26 pm

Un delay sirve, en este caso, para poder ver algo: si no lo agrego entre las llamadas a "print_ball" y "delete_ball" no se ve nada, porque el programa cicla demasiado rápido.
Saludos
Adriano
Avatarde Usuario
Adriano
Administrador
 
Posts: 392
Registrado: Sab Dic 09, 2006 12:50 pm
Ubicación: Argentina

Re: Implementar un delay en assembler 8086

Notapor buanzo el Vie Jun 08, 2007 3:37 pm

Para sincronizar threads, por ejemplo, serviria. Para generar una frecuencia cuadrada. Para muchas cosas. Pero veo que sos medio troll Razz
Avatarde Usuario
buanzo
Administrador
 
Posts: 673
Registrado: Sab Dic 09, 2006 11:17 am
Ubicación: Buanzonia (ok, Florida, Buenos Aires)


Volver a Programación y Diseño de Sófwer.

¿Quién está conectado...?

Usuarios navegando este Foro: No hay usuarios registrados visitando el Foro y 2 invitados

cron