Vous êtes sur la page 1sur 2

; XREF

; Nombres simblicos de datos definidos en otro archivo pero


; usados en este archivo. retirar el comentario de XREF y
; agregar las variables externas (opcional).
; XDEF
; se ubican los nombres de todas los programas definidos en
; este archivo pero que se usan en otros (siempre se usa).
XDEF MAC ;El primero corre por la casa

DataSec: SECTION
; Aqui la data que solo se usa en el archivo asm
miData: DS.B 1 ; Solo es un ejemplo.

CodeSec: SECTION

MAC: ;Multiplica y acumula.


; res = MAC(B1,B2,AC) ; Como se usa la funcin.
; res = AC + B1*B2 ; Operacin que realiza la funcin.
; B1 y B2 son char (8bits).
; AC es entero
pshd ;AC Revise el marco de la pila.
ldab 5,sp ;se carga __________
ldaa 6,sp ;se carga __________
mul ;Multiplica y acumula.

addd 0,sp ;se suma AC


pulx ;Balancea la pila.
rtc ;El resultado se devuelve en D.

/* asmlib.h */
#ifndef _ASMLIB_H_
#define _ASMLIB_H_
int MAC(unsigned char B1, unsigned char B2, unsigned int AC);
/*
Funcin que multiplica B1 por B2 y suma el producto a AC
B1 y B2 son de 8 bits y producen un resultado de 16bits
AC es de 16bits
*/
// A partir de aqu se agregan sus encabezados.

#endif /* _ASMLIB_H_ */

#include <hidef.h> /* common defines and macros */


#include "derivative.h" /* derivative-specific definitions */
///////////////////////////////////////////////////////////////////
#include "asmlib.h"

void main(void) {
/* put your own code here */
unsigned char b = 45;
unsigned char a = 65;
unsigned int y = 0;

y = MAC(b,a,y);
EnableInterrupts;

for(;;) {
_FEED_COP(); /* feeds the dog */
} /* loop forever */
/* please make sure that you never leave main */
}

Vous aimerez peut-être aussi