Ensamblador - Reloj en binario

 
Vista:

Reloj en binario

Publicado por soulblazer (2 intervenciones) el 07/12/2012 21:42:56
Tengo este código de un reloj en Ensamblador (corre):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
;PROGRAMA RELOJ PARA MOSTRAR EN PANTALLA EL RELOJ DE LA MAQUINA
 
.MODEL SMALL  ;MODELO SMALL
 
.DATA  ;SEGMENTO DE DATOS
 
 ;VARIABLES
 
        CADENA  DB 9 DUP (' '),'$'
        RESIDUO DB ?
        AUX     DB ?
        HDEC    DB ?
        HUNI    DB ?
        MDEC    DB ?
        MUNI    DB ?
        SDEC    DB ?
        SUNI    DB ?
 
.STACK 100H  ;PILA
 
.CODE  ;CODIGO
 
INICIO:
 
    MOV	AX, @DATA
    MOV	DS,  AX
    MOV AL, 3  ;MODO DE VIDEO
    MOV AH, 0  ;80 X 25
    INT 10H
 
CAPTURA:
 
    MOV AH, 2CH  ;LLAMA LA INT QUE CAPTURA EL RELOJ DE LA MAQUINA
    INT 21H
 
    CALL RELOJ  ;LLAMADA AL PROCEDIMIENTO RELOJ
 
    MOV AH, 2
    MOV DL, 35  ;POSICIONA EL CURSOR
    MOV DH, 10  ;EN LA FILA 10,  COLUMNA 35
    INT 10H
 
    MOV AH, 02H
    MOV DL, HDEC
    INT 21H
    MOV DL, HUNI
    INT 21H
 
    MOV AH, 02H
    MOV DL, 58
    INT 21H
 
    MOV AH, 2
    MOV DL, 38  ;POSICIONA EL CURSOR
    MOV DH, 10  ;EN LA FILA 10,  COLUMNA 38
    INT 10H
 
    MOV AH, 02H
    MOV DL, MDEC
    INT 21H
    MOV DL, MUNI
    INT 21H
 
    MOV AH, 02H
    MOV DL, 58
    INT 21H
 
    MOV AH, 2
    MOV DL, 41  ;POSICIONA EL CURSOR
    MOV DH, 10  ;EN LA FILA 10,  COLUMNA 41
    INT 10H
 
    MOV AH, 02H
    MOV DL, SDEC
    INT 21H
    MOV DL, SUNI
    INT 21H
 
    MOV AH, 1  ;VERIFICA SI SE HA PRESIONADO TECLA
    INT 16H
    JZ  CAPTURA  ;SINO SALTA A CAPTURA Y EL RELOJ  SIGUE FUNCIONADO
 
    MOV AX,  4CH  ;REGRESA AL DOS
    INT 21H
 
RELOJ PROC  ;PROCEDIMIENTO QUE OBTIENE EL RELOJ DE LA MAQUINA
 
    CALL HORAS  ;LLAMADA A LOS PROCEDIMIENTOS DE HORAS,  MINUTOS Y SEGUNDOS
    CALL MINUTOS
    CALL SEGUNDOS
 
    RET  ;RETORNO
 
ENDP  ;FIN DEL PROCEDIMIENTO
 
HORAS PROC  ;PROCEDIMIENTO QUE OBTIENE LAS HORAS
 
    MOV AL, CH  ;SE OBTIENEN LAS HORAS (0-23)
    AAM  ;SE DESEMPAQUETA EN BCD
 
    ADD AX, 3030H  ;SE CONVIERTE A ASCII
 
    MOV HDEC, AH
    MOV HUNI, AL
 
    RET  ;RETORNO
 
ENDP  ;FIN DEL PROCEDIMIENTO
 
MINUTOS PROC  ;PROCEDIMIENTO QUE OBTIENE LOS MINUTOS
 
    MOV AL, CL  ;SE OBTIENEN LOS SEGUNDOS
    AAM  ;SE DESEMPAQUETA EN BCD
 
    ADD AX, 3030H  ;SE CONVIERTE A ASCII
 
    MOV MDEC, AH
    MOV MUNI, AL
 
    RET  ;RETORNO
 
ENDP  ;FIN DEL PROCEDIMIENTO
 
SEGUNDOS PROC  ;PROCEDIMIENTO QUE OBTIENE LOS SEGUNDOS
 
    MOV AL, DH  ;SE OBTIENEN LOS SEGUNDOS
    AAM  ;SE DESEMPAQUETA EN BCD
 
    ADD AX, 3030H  ;SE CONVIERTE A ASCII
 
    MOV SDEC, AH
    MOV SUNI, AL
 
    RET  ;RETORNO
 
ENDP  ;FIN DEL PROCEDIMIENTO
 
END INICIO  ;FIN DEL PROGRAMA


El reloj funciona bien, pero no lo puedo poner en binario T___T Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder