Академический Документы
Профессиональный Документы
Культура Документы
/**** Aqu dejo esta parte de cdigo, espero poder subir todo lo que haga de ensambla
dor de freescale, me parecen buenas aportaciones porque no he encontrado mucho d
e esta arquitectura, espero les sirva******/
/*****************************************************************************/
.extern ___SP_INIT
.global _main
.global _asm_startup
.include "derivative.inc"
/*****************************************************************************/
/* Declaracion de variables */
/*****************************************************************************/
.bss
Dato: .space 2
dm: .space 1
m: .space 1
c: .space 1
d: .space 1
u: .space 1
/*****************************************************************************/
/* Declaracion de constantes */
/*****************************************************************************/
.text
.align 4
/*****************************************************************************/
/*****************************************************************************/
/* Start Up Code */
_asm_startup:
/* disable interrupts */
move.w #$2700,SR
/* setup the stack pointer */
lea
___SP_INIT,A7
/* WDT Disable */
move.b #$23,d1
move.b d1,SOPT1
/*****************************************************************************/
/*****************************************************************************/
/* Main Function */
/*****************************************************************************/
/*****************************************************************************/
_main:
move.l
#65535,d0
// movemos el numero al registro d0
move.w
d0,Dato
//movemos lo que hay en d0 a la variable Dato
BSR
BinToBCD
BRA
_main
BinToBCD:
move.l
move.b
a limpiarlas
move.b
move.b
move.b
move.b
#0,d0
d0,dm
d0,m
d0,c
d0,d
d0,u
move.w
Dato,d0
// movemos lo que hay en Dato a d0 que es el 65535
move.b
dm,d1
//movemos lo que hay en dm a d1 en este caso 0 para
limpiar
DecMilLoop:
//creamos la etiqueta DecMilLoop
cmpi.l
#10000,d0
//comparamos si lo que hay en d0 es menor a 10000
blo
Millar
// brincamos a millar si d0 ya es menor que 10000, s
i no, va a la siguiente linea
subi.l
#10000,d0
// si no es menor le restamos 10000 a d0 es decir 65
535-1000
addi.l
#1,d1
// le sumamos 1 a d1, d1 se va a estar incrementando
como un contador
bra
DecMilLoop //regresamos a la etiqueta DecMilLoop siempre que ll
eguemos hasta aqui.
Millar:
move.b
caso 6
move.b
impiar
MilLoop:
cmpi.l
blo
subi.l
addi.l
bra
Centena:
move.b
move.b
CenLoop:
cmpi.l
blo
subi.l
addi.l
bra
Decena:
move.b
so 5
move.b
DecLoop:
cmpi.l
blo
subi.l
addi.l
bra
Unidad:
move.b
3
move.b
e a u
RTS
#100,d0
Decena
#100,d0
#1,d1
CenLoop
//
//
//
//
//
//
//
//
//
d1,c
#1000,d0
Centena
#1000,d0
#1,d1
MilLoop
d1,m
c,d1
d,d1
#10,d0
Unidad
#10,d0
#1,d1
DecLoop
//
//
//
//
//
//
//
d1,d
d0,u