Domingo 22 de Diciembre de 2024, 13:53
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
ASM (Ensamblador)
(Moderador:
Eternal Idol
) »
Capturar Valores
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Capturar Valores (Leído 2088 veces)
RadicalEd
Moderador
Mensajes: 2430
Nacionalidad:
Capturar Valores
«
en:
Sábado 4 de Junio de 2005, 17:33 »
0
Hola chicos de SoloCodigo, quiero hacer un programita que me capture 2 valores y los sume o lo que sea, la cosa es que capture los valores, como el scanf de C (Como me dijo Jonathan
), osea:
printf("Digite un valor: ");
scanf("%d",valor);
Pero haciendolo en ASM.
Gracias Chao.
Tweet
El pasado son solo recuerdos, el futuro son solo sueños
RadicalEd
Moderador
Mensajes: 2430
Nacionalidad:
Re: Capturar Valores
«
Respuesta #1 en:
Sábado 11 de Junio de 2005, 19:22 »
0
Bueno esto es lo que llevo, pero no se si me captura o no los valores, ademas los quiero sumar, y he visto que el primer mensaje me sale delante del segundo, ademas no se como mostrar el resultado.
Código: Text
.MODEL SMALL
.STACK
.DATA
VAL1 DB 'DIGITE VALOR 1: $'
VAL2 DB 'DIGITE VALOR 2: $'
.CODE
inicio:
MOV AX, SEG VAL1
MOV DS, AX
MOV DX, OFFSET VAL1 ;Envia a DX el mensaje VAL1
MOV AH, 09h ;imprime mensaje VAL1 con la
INT 21h ;función 9h
MOV AH, 01h ;captura un valor del teclado
INT 21h ;y se guarda en AL
PUSH AX ;meto el valor AX a la pila, que la que guarda el AL capturado
MOV AX, SEG VAL2
MOV DS, AX
MOV DX, OFFSET VAL2 ;Envia a DX el mensaje VAL2
MOV AH, 09h ;imprime mensaje VAL2 con la
INT 21h ;función 9h
MOV AH, 01h ;captura un valor del teclado
INT 21h ;y se guarda en AL
MOV BL, AL ;muevo el ultimo valor capturado en BL
POP AX ;saco el valor que meti a la pila
ADD BX, AX ;sumo BX con AX y lo guardo en BX
MOV AH, 4Ch ;Salir al DOS
INT 21h
END inicio
El pasado son solo recuerdos, el futuro son solo sueños
RadicalEd
Moderador
Mensajes: 2430
Nacionalidad:
Re: Capturar Valores
«
Respuesta #2 en:
Domingo 12 de Junio de 2005, 01:18 »
0
Voy aca y me deberia rular, pero ahora me saca este error.
***Fatal*** capt.asm(43) Unexpected end of file encountered
Código: Text
.MODEL SMALL
.STACK
.DATA
VAL1 DB 'DIGITE VALOR 1: $'
VAL2 DB 13,10,'DIGITE VALOR 2: $'
MSG DB 13,10,'LA SUMA ES: $'
RESU DB 0
.CODE
inicio:
MOV AX, SEG VAL1
MOV DS, AX
MOV DX, OFFSET VAL1;Envia a DX el mensaje VAL1
CALL Print
CALL Capt
MOV RESU, AL
MOV AX, SEG VAL2
MOV DS, AX
MOV DX, OFFSET VAL2;Envia a DX el mensaje VAL1
CALL Print
CALL Capt
ADD RESU, AL
MOV AX, SEG MSG
MOV DS, AX
MOV DX, OFFSET MSG;Envia a DX el mensaje MSG
MOV AH, 09h ;imprime mensaje con la
INT 21h ;función 9h
MOV AH, 02h
MOV DX ,AX
INT 21h
MOV AH, 4Ch
INT 21h
Print Proc Near
MOV AH, 09h ;imprime mensaje con la
INT 21h ;función 9h
SUB AL, 48 ;restamos al caracter el ASCII de 0 para convertirlo en un numero
RET
Print Endp
Capt Proc Near
MOV AH, 01h ;captura un valor del teclado
INT 21h ;y se guarda en AL
RET
Capt Endp
END inicio
El pasado son solo recuerdos, el futuro son solo sueños
RadicalEd
Moderador
Mensajes: 2430
Nacionalidad:
Re: Capturar Valores
«
Respuesta #3 en:
Lunes 13 de Junio de 2005, 19:41 »
0
El error era que habia guardado en formato Unicode, ahora esto es lo que sale.
El pasado son solo recuerdos, el futuro son solo sueños
RadicalEd
Moderador
Mensajes: 2430
Nacionalidad:
Re: Capturar Valores
«
Respuesta #4 en:
Jueves 16 de Junio de 2005, 22:48 »
0
Por fin.
Código: Text
.MODEL SMALL
.STACK
.DATA
VAL1 DB 'DIGITE VALOR 1: $'
VAL2 DB 13,10,'DIGITE VALOR 2: $'
MSG DB 13,10,'LA SUMA ES: $'
RESU DB '0'
CAPT1BIN DB '0'
CAPT2BIN DB '0'
.CODE
inicio:
;CAPTURAR PRIMER VALOR
MOV AX, SEG VAL1
MOV DS, AX
MOV DX, OFFSET VAL1 ;Envia a DX el mensaje VAL1
CALL Print
CALL Capt
MOV CAPT1BIN, AL ;Guarda en Binario
SUB CAPT1BIN, 48 ;Se restan 48 para dar valor ASCII
;CAPTURAR SEGUNDO VALOR
MOV AX, SEG VAL2
MOV DS, AX
MOV DX, OFFSET VAL2 ;Envia a DX el mensaje VAL1
CALL Print
CALL Capt
MOV CAPT2BIN, AL ;Guarda en Binario
SUB CAPT2BIN, 48 ;Se restan 48 para dar valor ASCII
;SE EFECTUA LA SUMA
MOV BL, CAPT1BIN
ADD BL, CAPT2BIN
MOV RESU, BL
;SE IMPRIME MENSAJE DE RESULTADO
MOV AX, SEG MSG
MOV DS, AX
MOV DX, OFFSET MSG ;Envia a DX el mensaje MSG
MOV AH, 09h ;imprime mensaje con la
INT 21h ;función 9h
;IMPRIMIR LOS RESULTADOS
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
;PROCEDIMIENTO PARA IMPRIMIR CADENA
Print Proc Near
MOV AH, 09h ;imprime mensaje con la
INT 21h ;función 9h
SUB AL, 48 ;restamos al caracter el ASCII de 0 para convertirlo en un numero
RET
Print Endp
;PROCEDIMIENTO DE CAPTURA
Capt Proc Near
MOV AH, 01h ;captura un valor del teclado
INT 21h ;y se guarda en AL
RET
Capt Endp
END inicio
El pasado son solo recuerdos, el futuro son solo sueños
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
ASM (Ensamblador)
(Moderador:
Eternal Idol
) »
Capturar Valores