Vistas de página en total

domingo, 2 de junio de 2013

SUMA

De forma idéntica a la resta tenemos la suma.

SUMA.ASM
; Copyright (C) 2013  José Ángel Moneo Fernández

;    This program is free software: you can redistribute it and/or modify
;    it under the terms of the GNU General Public License as published by
;    the Free Software Foundation, either version 3 of the License, or
;   (at your option) any later version.

;    This program is distributed in the hope that it will be useful,
;    but WITHOUT ANY WARRANTY; without even the implied warranty of
;    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;    GNU General Public License for more details.

;    You should have received a copy of the GNU General Public License
;    along with this program.  If not, see <http://www.gnu.org/licenses/>.

; codigo
include main.mac
_modelo exe
_code
rutina _suma sum1,sum2,res
         push bx
        push si
        push di
        mov si,[bp].sum1
        mov bx,[bp].sum2
        mov di,[bp].res
        mov ax,[si]
        add ax,[bx]
        mov [di],ax
        mov ax,[si+2]
        adc ax,[bx+2]
        mov [di+2],ax
        pop di
        pop si
        pop bx
        pop bp
        ret
_suma endp
_data
_end

2 comentarios:

  1. perdon por la pregunta que podria sonar muy ignorante pero al correr el programa donde me pide los valores para sumar, corro el progrma pero no me aparece nada, osea no se en que parte del programa me pide los valores para la suma...gracias por su tiempo saludos

    ResponderEliminar
    Respuestas
    1. Buenos dias:
      Espero haber entendido tu pregunta. Supongo que al decir que lo has probado, te refieres a ejecutarlo en un debuger.
      Esta es una funcion y como tal co comunicacon el sistema operativo. Por lo que no pedira los parametros al siatema.
      Si a lo que te refieres es como se le pasan los parametros desde la funcion principal, entonces es mas rapido de contestar.
      Los parametros se pasan a traves de pila siguiendo el estandar de "C". Por lo tanto los datos a sumar hay que guardarlos en la pila antes de llamar a la funcion. Luego esta funcion los recoge a traves del puntero de pila BP mediante indexacion.
      Para mayor comodidad en el uso de las funciones, se suelen definir macros o ficheros cabecera ".h", donde se realiza el paso de parametros a pila.
      Estas macros son las encargadas de crear una instruccion como normalmente la conocemos
      ... comando+parametros. En este blog antes de ir definiendo las funciones encontraras una entrada con las cabeceras de macros para las llamadas. En algun caso, si la funcion es.muy corta, puede que se implemente directamente como macro.
      La cabecera para las funciones matematicas esta en http://myassembler.blogspot.com.es/2013/05/declaracion-funciones-matematicas.html?m=0
      Ahí tienes una macro llamada SUMA. Esta es la que hay que incluir en el programa principal y usar como un comando para pasarle los datos.
      Un saludo

      Eliminar

Si tienes algún comentario, duda o sugerencia, o si quieres aportar algún código creado a partir de las librerías expuestas aquí, por favor, indícamelo.