Hola, estoy empezando con ensamblador (MASM) e hice este prog. para sumar dos numeros que ingresados desde el teclado se sumen, pero no me arroja el resultado, alguien pudiera ayudarme? gracias
PILA SEGMENT PARA STACK "STACK"
DB 200 DUP (0)
PILA ENDS
;---------------------------------------------------
DATOS SEGMENT PARA "DATA"
uno DB "Ingresa el primer numero ","$"
dos DB 13,10, "ingresa el segundo numero: ","$"
PRIMER DB 15 DUP (0)
SEGUN DB 15 DUP (0)
resp DB 15 DUP (0)
DATOS ENDS ; cierre del segmento
;---------------------------------------------------
CODIGO SEGMENT PARA "CODE"
EMPIEZA PROC FAR
ASSUME CS: CODIGO, DS: DATOS, SS: PILA
MOV AX, DATOS
MOV DS, AX
MOV AH, 0FH
INT 10H
MOV AH, 00H
INT 10H
;CALL PREGUNTA
EMPIEZA ENDP
PREGUNTA PROC NEAR
MOV DX,OFFSET uno
MOV AH,9
INT 21H
MOV AH,0AH
MOV DX,OFFSET primer
MOV primer[0],15
INT 21H
MOV DX,OFFSET dos
MOV AH,9
INT 21H
MOV AH,0AH
MOV DX,OFFSET segun
MOV segun[0],15
INT 21H
MOV AL, primer
ADD AL, segun
MOV AH,09H
MOV DX, OFFSET resp
MOV resp[0], AL
INT 21H
PREGUNTA ENDP
CODIGO ENDS ; cierra programa
END EMPIEZA
bien yo no se mucho de interrupciones, pero el mismo masm32 tiene una carpeta example donde hace uso de consola y usa la macro input, en realidad no se si seria el caso usar pero con input puedes obtener lo que escribe el teclado, y en el IDE del RadAsm hay un ejemplo de un code en 16bits... seria cuestion de hecharle un vistaso, pero algo que noto en tu code es que nunca sumas =/, el mnemónico add es el indicado aparentemente.
Seguro ya vendra alguien que sepa sobre interrupciones :P
Salu2
http://www.ctyme.com/intr/int-21.htm
Investiga como funcionan todos los servicios que usas y depura tu programa con debug.com, cuando leas una cadena recorda que no es un numero DECIMAL sino una secuencia de CARACTERES, si escribis 25 vas a tener '2' y '5' (49 y 53 en decimal).