Ensamblador - Ayuda Prg Pares y Nones Error

 
Vista:

Ayuda Prg Pares y Nones Error

Publicado por Mario (1 intervención) el 09/04/2008 02:06:13
hola estoy empezando a programar en Assambler y me pidieron un programa que pregunte si quieres numeros pares o nones, despues cuantas iteraciones necesitas y luego mostrar hasta esa iteracion de veces los numeros pares o nones que sean... anexo mi programa por que al mostrar los numeros aparece codigo ASCII solo he hecho la parte de los pares puesto que seria lo mismo con los impares, MI PROBLEMA ES QUE A LA HORA DE IMPRIMIR LOS NUMEROS SE IMPRIME EN PANTALLA LO QUE ESTA EN PARENTESIS ( "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" )

STACKSG SEGMENT PARA STACK 'Stack'
DB 32 DUP ( )
STACKSG ENDS

DATA SEGMENT
MEN1 DB 'PRESIONA UNA TECLA PARA VISUALIZAR',10,13
DB 'NUMEROS PARES [P]',10,13
DB 'NUMEROS NONES [N] ','$'
MEN2 DB 13,10,13,10,13,10,'CUANTAS ITERACIONES NECESITAS',13,10,'$'
ITER DB 3,?,7 DUP('$'),'$'

DATA ENDS

CODE SEGMENT

NUMEROS PROC FAR
ASSUME CS:CODE, DS:DATA, SS:STACKSG
MOV AX,DATA
MOV DS,AX

;CLEAR
mov ah,00h
mov al,03h
int 10h

MOV AH,09H ; Muestra el Mensaje en la pantalla
LEA DX,MEN1 ; Lee mensaje guardado en MEN1
INT 21H ; Salida a Dos

A01: MOV AH, 1 ;Lee tecla precionada
INT 21H
CMP AL,"P" ;compara tecla con el codigo Ascii de P
JE PARES ;Salta [Pares] si Al=P
JNE A02 ;salta [A02] si Al es diferente de P
A02:
MOV AH, 1 ;Lee tecla precionada
INT 21H
CMP AL,"N" ;compara tecla con el codigo Ascii de P
JE NONES ;Salta [Pares] si Al=P
JNE A01 ;salta [A02] si Al es diferente de P

PARES:

LEA DX,MEN2 ; Lee mensaje guardado en MEN2
MOV AH,09H ; Muestra el Mensaje en la pantalla
INT 21H ; Salida a Dos

MOV AH,0AH ;Captura la cantidad (hasta 2 digitos)
INT 21H ;Salida a Dos
SUB DL,30h ;Ajustamos para realizar operaciones internas
MOV ITER,DL ;Mueve DL a Iter
MOV CL,00h ;Contador auxiliar
MOV BL,02h ;Asigna el valor de 2
MOV AL,01H ;Asignar el valor de 1

mov ah,02h ;Imprime
mov dl,AL ;AL
int 21h ;Interrupción de DOS

OP1: mov ah,02h ;Imprime
mov dl," " ;Separador
int 21h ;Interrupción de DOS

ADD AX,BX
mov ah,02h ;Imprime
mov dl,AL ;AX
int 21h ;Interrupción de DOS

INC CL
INC CL
MOV DL,ITER
CMP CL,DL
JE salir ;[salir]
;Si es diferente
JNE OP1 ;[OP1]

NONES:

SALIDA PROC FAR
MOV AH,4CH
INT 21H
RET
SALIDA ENDP
ENDP
CODE ENDS
END
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