Ensamblador - error memoria

   
Vista:

error memoria

Publicado por ANGEL ivan_gow96@protonmail.com (3 intervenciones) el 27/06/2016 18:20:22
Hola buenas tardes espero me puedan ayudar me dejaron hacer un menú para que el usuario elija una opción si quiere hacer la suma resta divicion y multiplicación de dos números pero creo tengo un error de desbordamiento de memoria hice 4 saltos y creo es con dos pero no se como hacerlo con dos espero me puedan ayudar




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
.model small
.stack 100h
.data
 
		txtvalor1 db 'Ingrese el primer valor:$'
		txtvalor2 db 'Ingrese el segundo valor:$'
        ingreso  db 'Ingrese un numero ::$'
        opcion_1 db 'Suma: $'
        opcion_2 db 'Resta$'
        opcion_3 db 'Multiplicacion$'
        opcion_4 db 'Divicion$'
        opcion_i db 'Opcion invalida$'  
        newline db 10,13,'$'
        numero  db  ?
        valor1  db ?
        valor2  db ?
 
.code
 
.startup
 
	mov ax, @data
	mov ds, ax
 
	  
	lea dx, ingreso
    mov ah, 09h
    int 21h
    
    mov ah, 01h
    int 21h
    
    mov numero, al
       
   
    lea dx, newline
    mov ah, 09h
    int 21h
 
	cmp numero, 01h
    je  Imp_Op1
 
	cmp numero, 02h
    je Imp_Op2
 
	cmp numero, 03h
    je Imp_Op3
 
	cmp numero, 04h
    je Imp_Op4
 
 
 
    
Imp_Op1:
 
	lea dx, txtvalor1
	mov ah, 09
	int 21h
 
	mov ah, 01h
	int 21h
	sub al, 30h
	mov valor1, al
 
	lea dx, newline
	mov ah, 09h
	int 21h
 
	lea dx, txtvalor2
	mov ah, 09
	int 21h
 
	mov ah, 01h
	int 21h
	sub al, 30h
	mov valor2, al
 
	lea dx, newline
	mov ah, 09h
	int 21h
 
	lea dx, opcion_1
	mov ah, 09h
	int 21h
 
	mov ax, 00h
	add al, valor1
	add al, valor2
 
	mov dl, al
	add dl, 30h
 
	mov ah, 02h
	int 21h
 
	lea dx, newline
	mov ah, 09h
	int 21h
 
	jmp salir
 
Imp_Op2:
 
    lea dx, txtvalor1
	mov ah, 09
	int 21h
 
	mov ah, 01h
	int 21h
	sub al, 30h
	mov valor1, al
 
	lea dx, newline
	mov ah, 09h
	int 21h
 
	lea dx, txtvalor2
	mov ah, 09
	int 21h
 
	mov ah, 01h
	int 21h
	sub al, 30h
	mov valor2, al
 
	lea dx, newline
	mov ah, 09h
	int 21h
 
	lea dx, opcion_1
	mov ah, 09h
	int 21h
 
	mov ax, 00h
	sub al, valor1
	sub al, valor2
 
	mov dl, al
	add dl, 30h
 
	mov ah, 02h
	int 21h
 
	lea dx, newline
	mov ah, 09h
	int 21h
 
 
Imp_Op3:
 
    lea dx, opcion_3
    mov ah, 09h
    int 21h
Imp_Op4:
 
    lea dx, opcion_4
    mov ah, 09h
    int 21h
 
salir:
 
.exit
end


Les adjunto mi proyecto
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