-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathex4.asm
192 lines (180 loc) · 2.99 KB
/
ex4.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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
DOSSEG
.model small
.stack
.data
MESSAGE db "Entre com sua senha de acesso:",0dh,0ah,"$"
MESSAGE1 db 0ah,0dh,"Digite 1 ou 2: ", "$"
senha1 DB 0,0,0
senhar1 DB 31h,32h,33h
ver DB 0
ver_senha DB 0
nElementos DB 0
vetor1 DB 3 DUP(1,2,3)
vetor2 DB 3 DUP(2,2,5)
VetorXor DB 3 DUP(0)
SENHACORRETA db 0dh,"Senha correta",0ah, 0dh, " $"
SENHAINCORRETA db 0dh,"Senha incorreta",0ah, 0dh, " $"
VetorXorm db 0ah,0dh,"Vetorxor:$"
nElementosm db 0ah,0dh,"Numero de elementos:$"
String1 DB "Arturfrancapi"
tam1 EQU $-String1
String2 DB "Arturfrancapu"
tam2 EQU $-String2
DIF db 0dh,0ah,"Comprimentos diferentes$"
IGUALR db 0dh,0ah,"Comprimentos iguais e mesmo conteudo$"
IGUAL_d db 0dh,0ah,"Comprimentos iguais e conteudos diferentes$"
voltarp db 0dh,0ah,"Deseja voltar ao programa? Digite S se sim.$"
s DB 53h
.code
main proc
MOV AX, @DATA
MOV DS, AX
inicio:
MOV AH, 09h
MOV DX, OFFSET MESSAGE
INT 21h
MOV CX, 3
MOV SI, 0
MOV BX, OFFSET senha1
; OBTER SENHA
loopsenha:
MOV AH, 1h
INT 21h
MOV [BX + SI], AL
INC SI
LOOP loopsenha
;COMPARAR SENHA
MOV CX, 3
MOV SI, 0
loop1:
MOV DL, [BX + SI]
PUSH BX
MOV BX, OFFSET senhar1
MOV DH, [BX + SI]
POP BX
CMP DH, DL
je igual
jmp diferente
igual:
INC ver
diferente:
INC SI
LOOP loop1
verificacaosenha:
MOV DL, 3
CMP ver, DL
je senhacorreta1
jmp senhaincorreta1
senhaincorreta1:
MOV AH, 09h
MOV DX, OFFSET SENHAINCORRETA
INT 21h
INC ver_senha
CMP ver_senha, 3
jl inicio
MOV AH, 4Ch
INT 21h
senhacorreta1:
MOV AH, 09h
MOV DX, OFFSET SENHACORRETA
INT 21h
digitaopcao:
MOV AH, 09h
MOV DX, OFFSET MESSAGE1
INT 21h
MOV AH, 1h
INT 21h
CMP AL, 31h
jl valorinvalido
jg valormaior
je opcao1
valorinvalido:
MOV AH, 09h
MOV DX, OFFSET voltarp
INT 21h
MOV AH, 1h
INT 21h
CMP AL,s
je digitaopcao
MOV AH, 4Ch
INT 21h
valormaior:
CMP AL, 32h
je opcao2
jg valorinvalido
opcao1:
MOV DH, tam1
MOV DL, tam2
CMP DH, DL
je mesmocomp
jmp difcomp
difcomp:
MOV AH, 09h
MOV DX, OFFSET DIF
INT 21h
MOV AH, 4Ch
INT 21h
mesmocomp:
MOV SI, offset String1
MOV DI, offset String2
MOV AX, tam1
MOV CX, AX
cmpr:
MOV AL, [SI]
CMP AL, [DI]
jne nsame
iNC SI
INC DI
loop cmpr
same:
MOV AH, 09h
MOV DX, OFFSET IGUALR
INT 21h
MOV AH, 4Ch
INT 21h
nsame:
MOV AH, 09h
MOV DX, OFFSET IGUAL_d
INT 21h
MOV AH, 4Ch
INT 21h
;JMP continua
opcao2:
MOV CX, 3
MOV SI, 0
MOV AH, 09h
MOV DX, OFFSET VetorXorm
INT 21h
loop2:
PUSH BX
MOV BX, OFFSET vetor1
MOV DH, [BX + SI]
POP BX
PUSH BX
MOV BX, OFFSET vetor2
MOV DL, [BX + SI]
POP BX
PUSH BX
MOV BX, OFFSET VetorXor
XOR DH, DL
MOV [BX + SI], DH
MOV DL, [BX + SI]
ADD DL, 48
POP BX
MOV AH, 2h
INT 21h
INC SI
LOOP loop2
MOV nElementos, LENGTH VetorXor
MOV AH, 09h
MOV DX, OFFSET nElementosm
INT 21h
MOV DL, nElementos
ADD DL, 48
MOV AH, 2h
INT 21h
continua:
MOV AH, 4Ch
INT 21h
main ENDP
end main