Ensamblador - Suma de numeros positivos

 
Vista:
sin imagen de perfil

Suma de numeros positivos

Publicado por Oscar Eduardo (5 intervenciones) el 04/07/2013 15:48:55
buen@s dias tardes noches...
necesito ayuda lo mas prooonto posible :'( jeje espero puedan ayudarme

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
;
 
;EJEMPLO DE PROGRAMA
 
DATOS SEGMENT ; empieza segmento de datos
    NUMEROS DB 1,2,-3,-4,5,6,-7,-8,9,10  ; ARREGLO DE DATOS
    CUENTA DW 10; NUMERO DE DATOS A SUMAR
    DATOS ENDS
PILA SEGMENT STACK; SEPARA 256 LOCALIDADES DE 16B
    DW 256 DUP (?); PARA EL SATCK
    PILA ENDS
CODIGO SEGMENT; INICIA SEGMENTO DE CODIGO
    SUMA PROC FAR; EMPIEZA PROGRAA PRINCIPAL
        ASSUME CS:CODIGO, DS:DATOS, SS:PILA; ASIGNA LOS
        PUSH DS
        XOR AX, AX
        PUSH AX ; DIRECCION DE RETORNO A WINDOWS
        MOV AX, DATOS
        MOV DS, AX; EMPIEZA PROGRAMA DE SUMA
        MOV AL, 00H; INICIALIZA SUMADOR
        MOV SI, 00H; APUNTADOR DE DATOS
        MOV CX, CUENTA; CARGA EN CX NUMERO DE DATOS
CICLO: CMP NUMEROS [SI], 0; SI ES NEGATIVO NO LO SUMA
JL SIGUE
ADD AL , NUMEROS [SI]; SUMA SOLO POSITIVOS
SIGUE: INC SI ; INCREMENTA APUNTADOR DE DATOS
LOOP CICLO; REPITE EL CICLO CUENTA VECES
; DESPLIEGA LA SUMA Y TERMINA
; LIMPIA
AAM
ADD AH, 30H
ADD AL, 30H
MOV DL, AH ; DESPLIEGA EL RESULTADO (AL) EN EL MONITOR
MOV AH, 02H
INT 21H
MOV DL, AL
MOV AH, 02H
INT 21H
MOV AH, 07
INT 21H
RET
SUMA ENDP
CODIGO ENDS
END SUMA



Bueno ese es mi codigo lo unico que necesito es comparar si la suma es mayor a 99 de ser mayor a 99 hacer una funcion para desplegar los 3 digitos en pantalla, asi como lo tengo despliega numeros de 2 digitos nada mas :/ la ayuda que necesito es como implementar el CMP.....y el JG junto con las instrucciones para convertir y mostrar en pantalla numeros de 3 digitos
espero su pronta ayuda graaacias por todo :D
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
sin imagen de perfil

solucion

Publicado por Oscar Eduardo Crespo Couoh (5 intervenciones) el 04/07/2013 18:32:47
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
; EJEMPLO DE PROGRAMA, MODIFICAR EL PROGRAMA PARA QUE SALGA 33 Y NO EL SIGNO DE ADMIRACION
 
 
 
DATOS SEGMENT ; empieza segmento de datos
    NUMEROS DB 1,2,-3,-4,5,6,-7,-8,99,10  ; ARREGLO DE DATOS
    CUENTA DW 10; NUMERO DE DATOS A SUMAR
 
    C DB 0
    D DB 0
    U DB 0
    MENS1 DB "EL RESULTADO ES: $"
    DATOS ENDS
PILA SEGMENT STACK; SEPARA 256 LOCALIDADES DE 16B
    DW 256 DUP (?); PARA EL SATCK
    PILA ENDS
CODIGO SEGMENT; INICIA SEGMENTO DE CODIGO
    SUMA PROC FAR; EMPIEZA PROGRAA PRINCIPAL
        ASSUME CS:CODIGO, DS:DATOS, SS:PILA; ASIGNA LOS
        PUSH DS
        XOR AX, AX
        PUSH AX ; DIRECCION DE RETORNO A WINDOWS
        MOV AX, DATOS
        MOV DS, AX; EMPIEZA PROGRAMA DE SUMA
        MOV AL, 00H; INICIALIZA SUMADOR
        MOV SI, 00H; APUNTADOR DE DATOS
        MOV CX, CUENTA; CARGA EN CX NUMERO DE DATOS
CICLO: CMP NUMEROS [SI], 0; SI ES NEGATIVO NO LO SUMA
JL SIGUE
ADD AL , NUMEROS [SI]; SUMA SOLO POSITIVOS
SIGUE: INC SI ; INCREMENTA APUNTADOR DE DATOS
LOOP CICLO; REPITE EL CICLO CUENTA VECES
; DESPLIEGA LA SUMA Y TERMINA
; LIMPIA
 
CICLO2: CMP AL, 99
        JG SIGUE2
 
        AAM
        MOV U, AL
        MOV D, AH
        MOV AH, 02H
        MOV DL, D
        ADD DL, 30H
        INT 21H
        MOV DL, D
        ADD DL, 30H
        INT 21H
        JMP ALLA
 
SIGUE2: AAM
        MOV U, AL
        MOV AL, AH
        AAM
        MOV C,AH
        MOV D,AL
        MOV AH, 02h
        MOV DL , C
        ADD DL, 30H
        INT 21H
        MOV DL, D
        ADD DL, 30H
        INT 21H
        MOV DL, U
        ADD DL, 30H
        INT 21H
 
ALLA: MOV AH,07H
      INT 21H
      RET
 
      SUMA ENDP
CODIGO ENDS
END SUMA


resolvi el problema les dejo la solucion :D
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de xve

solucion

Publicado por xve (8 intervenciones) el 04/07/2013 20:34:59
Gracias por comentarlo Oscar...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

solucion

Publicado por Oscar Eduardo (5 intervenciones) el 04/07/2013 20:49:14
de nada jejeje estuvo algo facil pero ahora debo modificarlo para introducirle datos y desplegar mensajes Strings ejeje espero buscar algo jajaja gracias por todo a todos :D muy buena pagina :D
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 7
Ha disminuido 1 puesto en Ensamblador (en relación al último mes)
Gráfica de Ensamblador

solucion

Publicado por Daniel (3 intervenciones) el 15/05/2021 06:41:15
Compa solo me saca en pantalla:

"123"

Lo estoy ejecutando en emu8086
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar