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:&#59;CAPTURAR PRIMER VALOR    MOV AX, SEG VAL1    MOV DS, AX    MOV DX, OFFSET VAL1   &#59;Envia a DX el mensaje VAL1    CALL Print    CALL Capt    MOV CAPT1BIN, AL      &#59;Guarda en Binario    SUB CAPT1BIN, 48      &#59;Se restan 48 para dar valor ASCII &#59;CAPTURAR SEGUNDO VALOR    MOV AX, SEG VAL2    MOV DS, AX    MOV DX, OFFSET VAL2   &#59;Envia a DX el mensaje VAL1    CALL Print    CALL Capt    MOV CAPT2BIN, AL      &#59;Guarda en Binario    SUB CAPT2BIN, 48      &#59;Se restan 48 para dar valor ASCII &#59;SE EFECTUA LA SUMA    MOV BL, CAPT1BIN    ADD BL, CAPT2BIN    MOV RESU, BL &#59;SE IMPRIME MENSAJE DE RESULTADO    MOV AX, SEG MSG    MOV DS, AX    MOV DX, OFFSET MSG  &#59;Envia a DX el mensaje MSG    MOV AH, 09h         &#59;imprime mensaje con la    INT 21h             &#59;función 9h &#59;IMPRIMIR LOS RESULTADOS    MOV AH, 0  &#59;Se limpia el registro    MOV AL, RESU&#59;El dividendo en AX para impresion de digitos uno por uno    MOV BL, 10  &#59;Se le pone 10 al divisor BL    DIV BL  &#59;Se divide (al=numero/divisor=10 ) COCIENTE=AL RESIDUO=DX    MOV CL, AL  &#59;Guardamos el cociente en CL    MOV CH, AH  &#59;Guardamos el residuo en CH    ADD AL, 48  &#59;Sumamos 48d al numero para convertirlo en ascii    MOV AH, 2  &#59;Funcion del DOS para imprimir un caracter    MOV DL, AL  &#59;Imprimir el primer digito    INT 21h    ADD CH, 48  &#59;Sumamos 48d al numero para convertirlo en ascii    MOV DL, CH  &#59;Imprimimos el segundo caracter    INT 21h    MOV AH, 4Ch        &#59;Sale al DOS    INT 21h ;PROCEDIMIENTO PARA IMPRIMIR CADENAPrint Proc Near    MOV AH, 09h  &#59;imprime mensaje con la    INT 21h  &#59;función 9h    SUB AL, 48         &#59;restamos al caracter el ASCII de 0 para convertirlo en un numero    RETPrint Endp ;PROCEDIMIENTO DE CAPTURA Capt Proc Near    MOV AH, 01h  &#59;captura un valor del teclado    INT 21h  &#59;y se guarda en AL    RET    Capt EndpEND inicio   

Navegación

[0] Índice de Mensajes

Ir a la versión completa