Título.
Escribe un lenguaje ensamblador para una cuenta regresiva de 60 segundos.
;filename.asm
segmento de pila ;Definir la pila del segmento de pila
db 100 dup(?) ;Asignar el tamaño del segmento de pila
fin de la pila; fin del segmento de la pila
segmento de datos; definir datos del segmento de datos
IN_BUF: db 100 dup(0); : db 0 ;registro de tiempo de 60 segundos
SEC_1: db 0
Stop_Flag:db 0
final de datos ;fin del segmento de datos
segmento de código ' code' ;Definir el segmento de código
asuume cs:code,ds:data,ss:stack;Determinar el segmento lógico al que apunta CS/DS/SS
start : mov ax,ss
mov sp,ax
mov ax,data ;Establece la dirección de segmento DS del segmento de datos
mov ds,ax p>
;.. ............ ;Código de programa
mov SEC_60,60
mov SEC_1,0
mov Stop_Flag,0 p>
mov ah,2ch
int 21h
mov SEC_1,dh
;--- p>
bucle:
mov ah,1
int 16h
jnz loop1
mov ah,0
int 16h p>
mov al,Stop_Flag
inc al
and al,1
mov Stop_Flag,al p>
bucle1:
mov al,Stop_Flag
o al,1
jnz loop
mov ah,2ch
int 21h
mov al,SEC_1
cmp al,dh
jz loop
mov SEC_1,dh
mov al,SEC_60
dec al
jnz loop
;---
mov ax, 4c00h
;Volver a DOS
int 21h
finaliza el código ;Fin del segmento de código
;............ ;Código de subrutina
end start ;La compilación finaliza, el punto de inicio del programa es el inicio