Calculadora basica de dos números
Publicado por Sebastian (1 intervención) el 05/07/2021 00:51:00
Hola, me podrían ayudar con la siguietne tarea?
1. Escriba un programa que dado dos números calcule las 4 operaciones básicas entre ellos.
2. Modifique el programa anterior para validar la división por cero.
3. Modifique el programa para que el resultado de las operaciones se imprima en el centro de la
pantalla.
A continuación lo que he conseguido hacer, me falta arreglar la division sobre 0, cuando pongo la oprecion de division dentro de la bandera "positivo" me sale un error. Ayuda por favor.
1. Escriba un programa que dado dos números calcule las 4 operaciones básicas entre ellos.
2. Modifique el programa anterior para validar la división por cero.
3. Modifique el programa para que el resultado de las operaciones se imprima en el centro de la
pantalla.
A continuación lo que he conseguido hacer, me falta arreglar la division sobre 0, cuando pongo la oprecion de division dentro de la bandera "positivo" me sale un error. Ayuda por favor.
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
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
name 'Taller 1'
; Escriba un programa que dado dos números calcule las 4 operaciones basicas entre ellos
lugar macro fila,col
mov ah,02h
mov dh,fila
mov dl,col
mov bh,0h
int 10h
endm
.model small
.stack 64
; Empezamos declarando los datos a usar
.data
; Delaramos las variables de cada numero y de las operaciones
Num1 db 0
Num2 db 0
Suma db 0
Resta db 0
Mult db 0
Divi db 0
; Pedimos al ususario que ingrese los dos numeros aplastando enter
Ingreso1 db 13,10, 'Ingrese Primer Numero', 13,10, '$'
Ingreso2 db 13,10, 'Ingrese Segundo Numero', 13,10, '$'
; Delaramos las variables cadena donde me de el resultado
Rsuma db 13,10 , 'Suma: ', 13,10, '$'
Rresta db 13,10 , 'Resta: ', 13,10, '$'
Rmult db 13,10 , 'Multiplicacion: ', 13,10, '$'
Rdivi db 13,10 , 'Division: ' , 13,10, '$'
Rcero db 13,10 , 'Division: NO VALIDA ' , 13,10, '$'
; Empezamos a escribir el codigo
.code
mov ax, @data ; Cargamos datos en el acumulador
mov ds, ax
; Pasos para ingresar primer numero
lugar 0,0
mov ah, 09h ; Iniciar consola
lea dx, Ingreso1 ; Aparece mensaje de Ingresar 1
int 21h ; Interrupcion
mov ah, 01 ; Ingresar numero atravez del teclado
int 21h ; Interrupcion para terminar bloque de instrucciones
sub al, 30h ; Convierte la tecla a numero
mov Num1, al ; Movemos el valor ingresado a la variable Num1
; Repetimos para ingresar segundo numero
lugar 3,0
mov ah, 09
lea dx, Ingreso2
int 21h
mov ah, 01
int 21h
sub al, 30h
mov Num2, al
; Empezamos Operaciones
; Suma
mov al, Num1 ; Traemos Num1 del registro anterior
add al, Num2 ; Sumamos a Num1, que esta en el acumulador, el valor de Num2
mov Suma, al ; Movemos a variable Suma el resultado del acumulador
; Resta
mov al, Num1 ; Traemos Num1 del registro anterior
sub al, Num2 ; Restamos a Num1, que esta en el acumulador, el valor de Num2
mov Resta, al ; Movemos a variable Resta el resultado del acumulador
; Multiplicacion
mov al, Num1 ; Traemos Num1 del registro anterior
mul Num2 ; Multiplicamos a Num1, que esta en el acumulador, el valor de Num2
mov Mult, al ; Movemos a variable Multi el resultado del acumulador
;Division por 0
sub bl, 30h
mov bl, Num2 ; Almacenamos Num2 en registro base
cmp bl, 0 ; Comparamos el valor de Num2
je cero ; Si el valor es cero
jl positivo ; Si el valor es positivo
; Mostramos el Resultado
positivo:
; Suma
lugar 6,0
mov ah, 09 ; Iniciamos la consola
lea dx, Rsuma ; Leemos mensaje Rsuma
int 21h ; Interrupcion para terminar bloque de instrucciones
lugar 7,39
mov dl, Suma ; Movemos resultado de variable Suma
add dl, 30h ; Transformamos resultado a letras
mov ah, 02 ; Mostramos valor de la variable
int 21h ; Interrupcion para terminar bloque de instrucciones
; Resta
lugar 9,0
mov ah, 09
lea dx, Rresta
int 21h
lugar 10,39
mov dl, Resta
add dl, 30h
mov ah, 02
int 21h
; Multiplicacion
lugar 12,0
mov ah, 09
lea dx, Rmult
int 21h
lugar 13,39
mov dl, Mult
add dl, 30h
mov ah, 02
int 21h
; Division
; Division
mov al, Num1 ; Traemos Num1 del registro anterior
div Num2 ; Dividimos a Num1, que esta en el acumulador, el valor de Num2
mov Divi, al ; Movemos a variable Divi el resultado del acumulador
lugar 15,0
mov ah, 09
lea dx, Rdivi
int 21h
lugar 16,39
mov dl, Divi
add dl, 30h
mov ah, 02
int 21h
.exit
cero:
; Suma
lugar 18,0
mov ah, 09 ; Iniciamos la consola
lea dx, Rsuma ; Leemos mensaje Rsuma
int 21h ; Interrupcion para terminar bloque de instrucciones
lugar 19,39
mov dl, Suma ; Movemos resultado de variable Suma
add dl, 30h ; Transformamos resultado a letras
mov ah, 02 ; Mostramos valor de la variable
int 21h ; Interrupcion para terminar bloque de instrucciones
; Resta
lugar 21,0
mov ah, 09
lea dx, Rresta
int 21h
lugar 22,39
mov dl, Resta
add dl, 30h
mov ah, 02
int 21h
; Multiplicacion
lugar 24,0
mov ah, 09
lea dx, Rmult
int 21h
lugar 25,39
mov dl, Mult
add dl, 30h
mov ah, 02
int 21h
; Division
lugar 27,0
mov ah, 09
lea dx, Rcero
int 21h
.exit
ret
Valora esta pregunta
0