-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathETPB_2_Manhattan.asm
190 lines (134 loc) · 3.49 KB
/
ETPB_2_Manhattan.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
TITLE NombrePrograma
;DESCRPICIÓN
;Objetivo: Archivo de Ejemplo
;
; Autore(s):
; Luna Sanchez Juan Pablo.
; Ruiz Garcia Emmanuel Alejandro.
; Semestre: 8vo Semestre ISC
;FIN DESCRPICIÓN
INCLUDE Irvine32.inc
.data
; Área de Declaración de Variables
msj1_ej db "Ingrese x1 ", 0
msj2_ej db "Ingrese x2 ", 0
msj3_ej db "Ingrese y1 ", 0
msj4_ej db "Ingrese y2 ", 0
msj5_ej db "ingrese la potencia", 0
msj6_ej db "El resultado de la potencia es:", 0
msj7_ej db "El resultado final de los dos puntos medios es:", 0
var_2_2 dword 0d
var1 dword 0
.code
main41 PROC
;Lógica del Programa
; eax ebx ecx edx
; 0 0 0 0
;*******MENSAJE 1*******
mov edx, OFFSET msj1_ej
call writestring
call crlf
call readint ; leyendo el valor = 5
; eax ebx ecx edx
; 0 0 0 0
; 5 0 0 ms1
;
mov ebx, eax
; eax ebx ecx edx
; 0 0 0 N/A
; 0 5 0 MS1
;
;*******MENSAJE 2*******
mov edx, OFFSET msj2_ej
call writestring
call crlf
call readint ; leyendo el valor = 10
; eax ebx ecx edx
; 0 0 0 0
; 0 5 0 MS1
; 10 5 0 MS2
sub eax,ebx
; eax ebx ecx edx
; 0 0 0 0
; 0 5 0 MS1
; 10 5 0 MS2
; 5 0 0 0
mov ecx,eax
; eax ebx ecx edx
; 0 0 0 0
; 0 5 0 MS1
; 10 5 0 MS2
; 5 0 0 0
; 0 0 5 0
;
;
call writeint ;IMPRIMIMOS EL VALOR DE EAX EL CUAL ES 5
call crlf
mov ebx , eax ; ebx respalda la base
;*******MENSAJE 5*******
mov edx, OFFSET msj5_ej
call writestring
call crlf
call readint; leemos un valor y lo guardamos en eax - POTENCIA
mov ecx , eax ;ecx respalda la potencia
;se debe regresar la base a eax
mov eax , ebx
repite:
mul ebx ; eax = eax * ebx = 9
sub ecx , 1 ; restando 1 .... ecx = ecx - 1 una multiplicacion menos que hacer
cmp ecx , 1 ;condicional de una operacion booleana
jg repite ; es la reaccion como si fuera un if
;*******MENSAJE 6*******
mov edx, OFFSET msj6_ej
call writestring
call crlf
call writedec ; imprime el resultado de la potencia de 5 = 25
;call writeint;
mov var1 , eax
call crlf
;*******MENSAJE 3*******
mov edx, OFFSET msj3_ej
call writestring
call crlf
mov ecx, eax
call readint ; esta leyendo y1= 20
;*******MENSAJE 4*******
mov edx, OFFSET msj4_ej
call writestring
mov ebx, eax
call crlf
call readint ; esta leyndo y2 = 30
sub eax,ebx
call writeint ; imprime el resultado de la resta de y2-y1 = 10
call crlf
;*******MENSAJE 5*******
mov edx, OFFSET msj5_ej
call writestring
call crlf
mov ecx, eax
mov edx, ecx ; se movio el valor de registro ecx al registro edx
mov ebx , eax ; ebx respalda la base
call readint; leemos un valor y lo guardamos en eax - POTENCIA
mov ecx , eax ;ecx respalda la potencia
;se debe regresar la base a eax
call crlf
mov eax , ebx
repite2:
mul ebx ; eax = eax * ebx = 9
sub ecx , 1 ; restando 1 .... ecx = ecx - 1 una multiplicacion menos que hacer
cmp ecx , 1 ;condicional de una operacion booleana
jg repite2 ; es la reaccion como si fuera un if
;*******MENSAJE 6*******
mov edx, OFFSET msj6_ej
call writestring
call writedec ; imprime el resultado de la potencia de 10 = 100
call crlf
add eax , var1
;*******MENSAJE 7*******
mov edx, OFFSET msj7_ej
call writestring
call writeint
call crlf
exit
main41 ENDP
END main41