Programación General > ASM (Ensamblador)
Suma De Dos Numeros
(1/1)
isis_g:
:ayuda: hola, tengo un problemita con el manejo de tasm, y no se como realizar la suma de dos numeros de tipo word...
por ejemplo
la suma de 321 + 123
si alguien me ayudara se lo agradecería muchísimo
gracias
Super_G:
--- Código: Text --- mov ax,123mov bx,321add ax,bx
isis_g:
:hola: gracias... pero al sumar me referia sumando numeros introducidos desde el teclado, numeros de cualquier valor que sean mas de tres digitos.
me informe recien q debo trabajar con macros o subprogramas para este tipo de problema. ¿como le hago...
RadicalEd:
Mira mi post de captura de valores y veras que estamos igual, yo ahi le voy dando un poquito, tal vez te sirva y me ayudes por ahi derecho a mi
RadicalEd:
Ahora si ya me funciono.
--- 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'.CODEinicio:;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 CADENAPrint 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 RETPrint Endp ;PROCEDIMIENTO DE CAPTURA Capt Proc Near MOV AH, 01h ;captura un valor del teclado INT 21h ;y se guarda en AL RET Capt EndpEND inicio
Navegación
Ir a la versión completa