Ensamblador - Imprimir un numero guardado en AL, no el caracter

   
Vista:
Imágen de perfil de jaimee

Imprimir un numero guardado en AL, no el caracter

Publicado por jaimee (3 intervenciones) el 13/04/2014 23:25:20
Tengo un problema con mi programa... es que tengo que imprimir la suma que está guardada en AL, pero no se cómo hacerle para que no me imprima el caracter...

Por ejemplo en mi programa la suma del array es 37... e imprime el caracter correspondiente al 37 decimal que es un %... pero yo solo quiero que imprima el 37

este es mi código...


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
DATOS SEGMENT ;
    ARRAY DB -1,-2,3,4,5,-6,7,8,-9,10  ;SUMA=37
    CONTADOR DW 10
    LET DB 10,13,"PROGRAMA QUE SUMA ELEMENTOS POSITIVOS DE UN VECTOR: $"
    NUMM DB 10,13,"NUMEROS -1,-2,3,4,5,-6,7,8,-9,10  $"
	SUM DB 10,13,'EL RESULTADO ES:  $'
 
    DATOS ENDS
 
SEGSTACK SEGMENT STACK
    DW 256 DUP (?)
SEGSTACK ENDS
 
CODIGO SEGMENT
    SUMA PROC FAR
        ASSUME CS:CODIGO, DS:DATOS, SS:SEGSTACK
        PUSH DS
        XOR AX, AX
        PUSH AX
        MOV AX, DATOS
        MOV DS, AX
;LEA DX, LET
;MOV AH,09H
;INT 21H
 
;LEA DX, NUMM
;MOV AH,09H
;INT 21H
 
;LEA DX, SUM
;MOV AH,09H
;INT 21H
 
  MOV AL, 00H
  MOV SI, 00H
  MOV CX, CONTADOR
 
TAE: CMP ARRAY[SI],00H
 
JL MAO
ADD AL,ARRAY[SI]
 
MAO: INC SI
 
LOOP TAE
 
;///////////
mov DL,AL
mov ah,2
int 21h
;//////////////
RET
SUMA ENDP
CODIGO ENDS
END SUMA
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

Imprimir un numero guardado en AL, no el caracter

Publicado por Pico (50 intervenciones) el 14/04/2014 06:30:48
Tienes que hallar el código ascii de cada dígito del número que quieras sacar. Lo que haya en al estará en hexadecimal. Si es así como lo quieres puedes hallar cada dígito con rotaciones y luego sumarle 30h. Si lo quieres en decimal usa las funciones de ajuste ascii, aam en tu caso.
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
Imágen de perfil de jaimee

Imprimir un numero guardado en AL, no el caracter

Publicado por jaimee (3 intervenciones) el 16/04/2014 02:35:02
Gracias! he resuelto mi problema... aquí lo dejo funcionando perfectamente :3
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
DATOS SEGMENT ;
    ARRAY DB -1,-2,3,4,5,-6,7,8,-9,10  ;SUMA=37
    CONTADOR DW 10
    LET DB 10,13,"PROGRAMA QUE SUMA ELEMENTOS POSITIVOS DE UN VECTOR: $"
    NUMM DB 10,13,"NUMEROS -1,-2,3,4,5,-6,7,8,-9,10  $"
	SUM DB 10,13,'EL RESULTADO ES:  $'
	cadena db '   ','$'
	 RESU DB '0'
    DATOS ENDS
 
SEGSTACK SEGMENT STACK
    DW 256 DUP (?)
SEGSTACK ENDS
 
CODIGO SEGMENT
    SUMA PROC FAR
        ASSUME CS:CODIGO, DS:DATOS, SS:SEGSTACK
        PUSH DS
        XOR AX, AX
        PUSH AX
        MOV AX, DATOS
        MOV DS, AX
LEA DX, LET
MOV AH,09H
INT 21H
 
LEA DX, NUMM
MOV AH,09H
INT 21H
 
LEA DX, SUM
MOV AH,09H
INT 21H
 
  MOV AL, 00H
  MOV SI, 00H
  MOV CX, CONTADOR
 
TAE: CMP ARRAY[SI],00H
 
JL MAO
ADD AL,ARRAY[SI]
MAO: INC SI
 
LOOP TAE
 
mov RESU,AL
 
MOV AH, 0  ;Se limpia el registro
    MOV AL, RESU;El dividendo en AX para impresion de digitos uno por uno
    MOV BL, 10  ;Se le pone 10 al divisor BL
    DIV BL  ;Se divide (al=numero/divisor=10 ) COCIENTE=AL RESIDUO=DX
    MOV CL, AL  ;Guardamos el cociente en CL
    MOV CH, AH  ;Guardamos el residuo en CH
    ADD AL, 48  ;Sumamos 48d al numero para convertirlo en ascii
    MOV AH, 2  ;Funcion del DOS para imprimir un caracter
    MOV DL, AL  ;Imprimir el primer digito
    INT 21h
    ADD CH, 48  ;Sumamos 48d al numero para convertirlo en ascii
    MOV DL, CH  ;Imprimimos el segundo caracter
    INT 21h
    MOV AH, 4Ch        ;Sale al DOS
    INT 21h
 
RET
SUMA ENDP
CODIGO ENDS
END SUMA
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

Imprimir un numero guardado en AL, no el caracter

Publicado por Pico (50 intervenciones) el 16/04/2014 07:46:40
División entre 10 no, rotación.
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
Imágen de perfil de xve

Imprimir un numero guardado en AL, no el caracter

Publicado por xve (7 intervenciones) el 16/04/2014 08:38:19
Gracias por compartirlo Jaimee!!!
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