-
Notifications
You must be signed in to change notification settings - Fork 0
/
Relogio.asm
115 lines (98 loc) · 1.98 KB
/
Relogio.asm
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
; I/O Address Bus decode - every device gets 0x200 addresses */
IO0 EQU 0000h
IO1 EQU 0200h
IO2 EQU 0400h
IO3 EQU 0600h
IO4 EQU 0800h
IO5 EQU 0A00h
IO6 EQU 0C00h
IO7 EQU 0E00h
IO8 EQU 1000h
IO9 EQU 1200h
IO10 EQU 1400h
IO11 EQU 1600h
IO12 EQU 1800h
IO13 EQU 1A00h
IO14 EQU 1C00h
IO15 EQU 1E00h
;MEU CODIGO
CODE SEGMENT
ASSUME DS: DATA
org 0000h
;RESERVADO PARA VETOR DE INTERRUPCOES
org 0400h
;MEU CODIGO
inicio:
MOV AX,DATA
MOV DS,AX ; DS AGORA APONTA PARA DATA SEGMENT
MOV AX,EXTRA
MOV ES,AX ; ES AGORA APONTA PARA EXTRA SEGMENT
MOV AX,STACK
MOV SS,AX ; SS AGORA APONTA PARA STACK SEGMENT
MOV SEGUNDOS_UNID, 0
MOV SEGUNDOS_DEZ, 0
MOSTRAR:
CALL DISPLAY
CALL DELAY
CALL DELAY
CALL DELAY
INC SEGUNDOS_UNID
CMP SEGUNDOS_UNID, 10
JE SEGUNDOS_UNID_ZERA
JMP MOSTRAR
DISPLAY:
PUSH AX
PUSH BX
PUSH DX
MOV BL, SEGUNDOS_UNID
MOV BH, 0
MOV AL, TABELA[BX]
MOV DX, IO2
OUT DX, AL
MOV BL, SEGUNDOS_DEZ
MOV BH, 0
MOV AL, TABELA[BX]
MOV DX, IO3
OUT DX, AL
POP DX
POP BX
POP AX
RET
DELAY:
PUSH CX
MOV CX, 1111111111111111B
DELAY_DEC:
DEC CX
CMP CX, 0
JE DELAY_SAI
JMP DELAY_DEC
DELAY_SAI:
POP CX
RET
SEGUNDOS_UNID_ZERA:
MOV SEGUNDOS_UNID, 0
INC SEGUNDOS_DEZ
CMP SEGUNDOS_DEZ, 6
JE SEGUNDOS_DEZ_ZERA
JMP MOSTRAR
SEGUNDOS_DEZ_ZERA:
MOV SEGUNDOS_DEZ, 0
JMP MOSTRAR
CODE ENDS
;MILHA PILHA
STACK SEGMENT STACK
DW 128 DUP(?)
STACK ENDS
;MEUS DADOS
DATA SEGMENT
TABELA DB 0111111B, 0000110B, 1011011B, 1001111B
DB 1100110B, 1101101B, 1111101B, 0000111B
DB 1111111B, 1101111B, 1110111B, 1111100B
DB 0111001B, 1011110B, 1111001B, 1110001B
SEGUNDOS_UNID DB 0
SEGUNDOS_DEZ DB 0
DATA ENDS
;EXTRA
EXTRA SEGMENT
EXTRA ENDS
end inicio