ImagenImagenImagenImagen
Hazte Socio (El Foro siempre Gratis)
Paga con Tarjetas+ Info www.arde.cc/socios

Rutinas más exportables en ASM

Foro para postear los temas de ensamblador

Moderador: Junta Directiva

Responder
Avatar de Usuario
Mosvack
Forero Habitual
Forero Habitual
Mensajes: 126
Registrado: Sab Mar 11, 2006 2:44 pm
Ubicación: Algeciras

Rutinas más exportables en ASM

Mensaje por Mosvack » Sab May 20, 2006 7:28 pm

Hola a todos.

Hace unos días que he terminado unas rutinas en ASM. Al parecer van bien, y he pensado que puede que a alguno le interese. La idea al hacer estas rutinas es favorecer la exportabilidad a otros programas, de tal forma que resulte sencillo su uso. Para lograr esto, se me ocurrió emplear "direccionamiento indirecto". Con esto consigo:

* No es necesario adaptar los nombres de las variables, pues no aparece ningún nombre.

* Se puede emplear la memoria de datos de una forma más "dinámica", ya que con el mismo código, los operandos y resultados de la rutina pueden cambiar de posición en sucesivas llamadas dentro del mismo programa.

Por supuesto, no todo son ventajas. El inconveniente es que las rutinas ocupan más espacio en la memoria de programa. Os pego a continuación las rutinas para operaciones básicas en 8 bits.

;********************************************************
;* *
;* SUMA_8: Suma dos operandos de 1 byte dejando el resultado en *
;* la misma posición de los operandos. *
;* *
;* Operando. Dir. de memoria. *
;* #1 [W] *
;* #2 [W+1] *
;* Result. [W:W+1] *
;* *
;********************************************************


SUMA_8: MOVWF FSR ; Mueve al registro FSR la dirección
MOVF INDF,0
INCF FSR,1
ADDWF INDF,0
MOVWF INDF
DECF FSR,1
CLRF INDF
BTFSC ESTADO,0
INCF INDF
RETURN





;*********************************************************
;* *
;* RESTA_8: Resta dos operandos de 1 byte dejando el resultado en *
;* la misma posición de los operandos. *
;* *
;* Operando. Dir. de memoria. *
;* #1 (sustr.) [W] *
;* #2 (minue.) [W+1] *
;* Result. [W:W+1] *
;* *
;*********************************************************


RESTA_8: MOVWF FSR
MOVF INDF,0
INCF FSR,1
SUBWF INDF,0
MOVWF INDF
DECF FSR,1
CLRF INDF
BTFSS ESTADO,0
COMF INDF
RETURN










;*********************************************************
;* *
;* MULTI_8: Multiplica dos operandos de 1 byte *
;* *
;* Operando. Dir. de memoria. *
;* #1 [W] *
;* #2 [W+1] *
;* Result. [W+2:W+3] *
;* *
;* Emplea la variable [W+4] como contador en el lazo *
;*********************************************************


MULTI_8: ADDLW 0x02
MOVWF FSR
CLRF INDF
INCF FSR,1
CLRF INDF
INCF FSR,1
MOVLW 0x08
MOVWF INDF

MULT_81: MOVLW 0x03
SUBWF FSR,1
RRF INDF,1
DECF FSR,1
MOVF INDF,0
INCF FSR,1
INCF FSR,1
BTFSC ESTADO,0
ADDWF INDF,1
RRF INDF,1
INCF FSR,1
RRF INDF,1
INCF FSR,1
DECF INDF,1
BTFSS ESTADO,2
GOTO MULT_81
RETURN







;*********************************************************
;* *
;* DIVI_8: Divide dos operandos de 1 byte *
;* *
;* Operando. Dir. de memoria. *
;* #1 (dividendo) [W] *
;* #2 (divisor) [W+1] *
;* Cociente. [W+2] *
;* *
;*********************************************************


DIVI_8: MOVWF FSR
INCF FSR,1
INCF FSR,1
CLRF INDF

DIVI_81: DECF FSR,1
MOVF INDF,0
DECF FSR,1
SUBWF INDF,1
BTFSS ESTADO,0
RETURN
INCF FSR,1
INCF FSR,1
INCF INDF,1
GOTO DIVI_81





Yo las he probado mucho (tanto estas como las de 16 bits) y no me han fallado.Si alguien encuentra algún fallo, agradecería que me lo comunicase.

Un saludo a tod@s

P.D: Si alguien quiere las de 16 bits que no dude en pedírmelas :)
Última edición por Mosvack el Dom May 21, 2006 12:10 pm, editado 1 vez en total.



Avatar de Usuario
Mosvack
Forero Habitual
Forero Habitual
Mensajes: 126
Registrado: Sab Mar 11, 2006 2:44 pm
Ubicación: Algeciras

Re: Rutinas más exportables en ASM

Mensaje por Mosvack » Sab May 20, 2006 7:29 pm

dios!! qué descolocado se ve! Con lo colocadito que lo había yo dejado! :_/

Avatar de Usuario
rashii
Administrador
Administrador
Mensajes: 533
Registrado: Lun Ago 22, 2005 10:55 am
Nombre: rashii
Ubicación: Madrid
Contactar:

Re: Rutinas más exportables en ASM

Mensaje por rashii » Sab May 20, 2006 10:47 pm

el problema es que si se sale de la pantalla te lo pone en la siguiente linea, y como son frases largas, ocurre eso; de todos modos puedes editarlo tu mismo, todos los usuarios tienen permisos de edicion de sus post. Un saludo.

Avatar de Usuario
Mosvack
Forero Habitual
Forero Habitual
Mensajes: 126
Registrado: Sab Mar 11, 2006 2:44 pm
Ubicación: Algeciras

Re: Rutinas más exportables en ASM

Mensaje por Mosvack » Dom May 21, 2006 12:12 pm

Cuando le doy a editar aparece bien... parece que me acorta las tabulaciones y se come los espacios en blanco... sólo puede quedar uno (como los Inmortales) :/

Garrocha
Usuario Desarrollador
Usuario Desarrollador
Mensajes: 1108
Registrado: Mar Ago 23, 2005 10:50 pm
Ubicación: Sevilla[Es] - Montpellier[Fr]

Re: Rutinas más exportables en ASM

Mensaje por Garrocha » Dom May 21, 2006 12:35 pm

Yo los veo bien, por cierto...
Muchas gracias :)

Avatar de Usuario
superprp
Usuario Avanzado
Usuario Avanzado
Mensajes: 203
Registrado: Mar Mar 20, 2007 4:06 pm

Re: Rutinas más exportables en ASM

Mensaje por superprp » Mié Oct 10, 2007 1:22 pm

y esas mismas operaciones pero para numeros no enteros, es decir, en coma flotante?

por ejemplo, dividir 50.38/21.3, cuantos mas decimales se puedan coger mejor

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado