Bueno aca tenes, hace lo que queres, no lo puli... no te prometo que lo voy a hacer.. como te dije fijate en los detalles de los procedimientos.. pero ahora toma los datos como corresponde, y saca el promedio. Anda arreglandolo, ponele lineas de pregunta hacelo mas grafico, y anda mostrandome los resultados, si tengo tiempo te muestro como lo optimice yo, pero ya funciona...
.MODEL SMALL
.STACK 256
.DATA
DATO DB 3 DUP(?)
flotante db ?
RESUL DB ?
RESUL1 DW ?
PROM DB 4 DUP(00),"$"
.CODE
MOV AX,@DATA
MOV DS,AX
MOV ES,AX
LEA SI,DATO
CALL LIMPIA
Comienzo:
MOV CX,02
L3: CALL INPUT
CMP AL,29H
JA L2
JMP L3
L2: CMP AL,39H
JA L3
PUSH ax
MOV ah, 2
MOV dl, al
INT 21h
POP ax
AND AL,0FH
MOV [SI],AL
inc si
Loop L3
N1:
push ax
xor ax, ax
add al, [si-2]
mov bl, 0ah
mul bl
add al, [si-1]
mov [si-2], al
Pop ax
mov [si-1], 00h
cmp [si-2], 14h
ja ERROR
dec si
call space
mov cx, 3
xor ax, ax
cmp si, 3
je L4
jmp comienzo
;comienzo
L4:
MOV DL,[SI-3]
ADD AL,DL
INC SI
LOOP L4
LEA DI,RESUL
MOV [DI],AL
AND AX,00FFH
MOV BH,03H
DIV BH
mov flotante[0], ah
and ax, 00ffh
LEA SI,PROM
mov bh, 0ah
div bh
or ax, 3030h
MOV [SI],ax
CMP flotante[0],01H
JE L5
CMP flotante[0],02H
JE L7
L6: CALL CURSOR
CALL MOSTRAR
JMP L8
L5: LEA SI,PROM+2
MOV AL,"."
MOV [SI],AL
INC SI
MOV AH,03H
OR AH,30H
MOV [SI],AH
JMP L6
L7: LEA SI,PROM+2
MOV AL,"."
MOV [SI],AL
INC SI
MOV AH,06H
OR AH,30H
MOV [SI],AH
JMP L6
L8: MOV AX,4C00H
INT 21H
;fin
;Proc
LIMPIA:
MOV AH,02H
MOV DX,00H
INT 10H
MOV AX,0920H
MOV BL,17H
MOV CX,2000
INT 10H
RETN
INPUT:
MOV AH,00H
INT 16H
RETN
ERROR:
mov ah, 02h
mov dl, 08h
int 21h
int 21h
mov dl, 00h
int 21h
int 21h
dec si
dec si
mov dl, 08h
int 21h
int 21h
mov [si], 00h
JMP comienzo
retn
space:
mov ah, 2
mov dl, 0ah
int 21h
mov dl, 13
int 21h
retn
;NEW
CURSOR:
MOV AH,02H
MOV BH,00
MOV DH,05
MOV DL,12
INT 10H
RETN
MOSTRAR:
MOV AH,09H
LEA DX,PROM
INT 21H
RETN
Y casi no mofique codigo