programa de reloj
hola como le puedo hacer en ensamblador para simular el funcionamiento de un reloj pero que solo maneje los minutos y seguntos porfavor si alguien me puede ayudar se lo agradeceria bye
porfa necesito elcodigo de un reloj digital que se ingresa los datos por consola si alguien tiene algo que me lo pase a este correo [email protected]
oye te envio este que muestra la fecha y hora puedes modificarlo
DISP MACRO CHAR
PUSH AX
PUSH DX
MOV DL,CHAR
MOV AH,2
INT 21H
POP DX
POP AX
ENDM
STACK SEGMENT PARA STACK
DB 1024 DUP ("_")
STACK ENDS
DATOS SEGMENT
DTAB DW SUN,MON,TUE,WED,THU,FRI,SAT
MTAB DW JAN,FEB,MAR,APR,MAY,JUN
DW JUL,AUG,SEP,OCT,NOV,DEC
SUN DB "SUNDAY","$"
MON DB "MONDAY","$"
TUE DB "TUESDAY","$"
WED DB "WEDNESDAY","$"
THU DB "THURSDAY","$"
FRI DB "FRIDAY","$"
SAT DB "SATURDAY","$"
JAN DB "JANUARY","$"
FEB DB "FEBRUARY","$"
MAR DB "MARCH","$"
APR DB "APRIL","$"
MAY DB "MAY","$"
JUN DB "JUNE","$"
JUL DB "JULY","$"
AUG DB "AUGUST","$"
SEP DB "SEPTEMBER","$"
OCT DB "OCTOBER","$"
NOV DB "NOVEMBER","$"
DEC DB "DECEMBER","$"
DATOS ENDS
CODIGO SEGMENT
ASSUME CS:CODIGO,DS:DATOS,SS:STACK
PRINCIPAL PROC FAR
PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DATOS
MOV DS,AX
CALL TIMES ;DESPLIEGA HORA
CALL DATES ;DESPLIEGA FECHA
RET
PRINCIPAL ENDP
TIMES PROC NEAR
MOV AH,2CH ;OBTIENE HORA DEL DOS
INT 21H
MOV BH,"A"
CMP CH,12
JB TIMES1
MOV BH,"P"
SUB CH,12
TIMES1:
OR CH,CH
JNE TIMES2
MOV CH,12
TIMES2:
MOV AL,CH
MOV AH,0
AAM ;CONVIERTE A HORAS
OR AH,AH
JZ TIMES3
ADD AH,"0"
DISP AH
TIMES3:
ADD AL,"0"
DISP AL
DISP ":"
MOV AL,CL
MOV AH,0
AAM ;CONVIERTE MINUTOS
MOV AX,3030H
PUSH AX
DISP AH
POP AX
DISP AL
DISP " "
DISP BH
DISP "."
DISP "M"
DISP "."
DISP " "
RET
TIMES ENDP
DATES PROC NEAR
MOV AH,2AH
INT 21H
PUSH DX
MOV AH,0 ;OBTIENE DIA DE LA SEMANA
ADD AX,AX
MOV SI,OFFSET DTAB
ADD SI,AX
DISP " "
MOV DX,[SI] ;DESPLIEGA DIA DE LA SEMANA
MOV AH,9
INT 21H
POP DX
PUSH DX
MOV AL,DH ;OBTIENE MES
DEC AL
MOV AH,0
ADD AX,AX
MOV SI,OFFSET MTAB
ADD SI,AX
DISP " "
MOV DX,[SI] ;DESPLIEGA MES
MOV AH,9
INT 21H
POP DX
MOV AL,DL ;OBTIENE DIA DEL MES
MOV AH,0
AAM
OR AH,AH
JZ DATES1
ADD AH,30H
DISP " "
DISP AH
DATES1:
ADD AL,30H
DISP AL
DISP ","
DISP " "
CMP CX,2000
JB DATES2
SUB CX,100
DISP "2"
DISP "0"
JMP DATES3
DATES2:
DISP "1"
DISP "9"
DATES3:
SUB CX,1900
MOV AX,CX
AAM
ADD AX,3030H
DISP AH
DISP AL
RET
DATES ENDP
CODIGO ENDS
END PRINCIPAL
DISP MACRO CHAR
PUSH AX
PUSH DX
MOV DL,CHAR
MOV AH,2
INT 21H
POP DX
POP AX
ENDM
STACK SEGMENT PARA STACK
DB 1024 DUP ("_")
STACK ENDS
DATOS SEGMENT
DTAB DW SUN,MON,TUE,WED,THU,FRI,SAT
MTAB DW JAN,FEB,MAR,APR,MAY,JUN
DW JUL,AUG,SEP,OCT,NOV,DEC
SUN DB "SUNDAY","$"
MON DB "MONDAY","$"
TUE DB "TUESDAY","$"
WED DB "WEDNESDAY","$"
THU DB "THURSDAY","$"
FRI DB "FRIDAY","$"
SAT DB "SATURDAY","$"
JAN DB "JANUARY","$"
FEB DB "FEBRUARY","$"
MAR DB "MARCH","$"
APR DB "APRIL","$"
MAY DB "MAY","$"
JUN DB "JUNE","$"
JUL DB "JULY","$"
AUG DB "AUGUST","$"
SEP DB "SEPTEMBER","$"
OCT DB "OCTOBER","$"
NOV DB "NOVEMBER","$"
DEC DB "DECEMBER","$"
DATOS ENDS
CODIGO SEGMENT
ASSUME CS:CODIGO,DS:DATOS,SS:STACK
PRINCIPAL PROC FAR
PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DATOS
MOV DS,AX
CALL TIMES ;DESPLIEGA HORA
CALL DATES ;DESPLIEGA FECHA
RET
PRINCIPAL ENDP
TIMES PROC NEAR
MOV AH,2CH ;OBTIENE HORA DEL DOS
INT 21H
MOV BH,"A"
CMP CH,12
JB TIMES1
MOV BH,"P"
SUB CH,12
TIMES1:
OR CH,CH
JNE TIMES2
MOV CH,12
TIMES2:
MOV AL,CH
MOV AH,0
AAM ;CONVIERTE A HORAS
OR AH,AH
JZ TIMES3
ADD AH,"0"
DISP AH
TIMES3:
ADD AL,"0"
DISP AL
DISP ":"
MOV AL,CL
MOV AH,0
AAM ;CONVIERTE MINUTOS
MOV AX,3030H
PUSH AX
DISP AH
POP AX
DISP AL
DISP " "
DISP BH
DISP "."
DISP "M"
DISP "."
DISP " "
RET
TIMES ENDP
DATES PROC NEAR
MOV AH,2AH
INT 21H
PUSH DX
MOV AH,0 ;OBTIENE DIA DE LA SEMANA
ADD AX,AX
MOV SI,OFFSET DTAB
ADD SI,AX
DISP " "
MOV DX,[SI] ;DESPLIEGA DIA DE LA SEMANA
MOV AH,9
INT 21H
POP DX
PUSH DX
MOV AL,DH ;OBTIENE MES
DEC AL
MOV AH,0
ADD AX,AX
MOV SI,OFFSET MTAB
ADD SI,AX
DISP " "
MOV DX,[SI] ;DESPLIEGA MES
MOV AH,9
INT 21H
POP DX
MOV AL,DL ;OBTIENE DIA DEL MES
MOV AH,0
AAM
OR AH,AH
JZ DATES1
ADD AH,30H
DISP " "
DISP AH
DATES1:
ADD AL,30H
DISP AL
DISP ","
DISP " "
CMP CX,2000
JB DATES2
SUB CX,100
DISP "2"
DISP "0"
JMP DATES3
DATES2:
DISP "1"
DISP "9"
DATES3:
SUB CX,1900
MOV AX,CX
AAM
ADD AX,3030H
DISP AH
DISP AL
RET
DATES ENDP
CODIGO ENDS
END PRINCIPAL
