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
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
ResponderEliminarBuenos dias:
EliminarEspero 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