Skip to content

Instantly share code, notes, and snippets.

@Reflej0
Last active November 16, 2022 03:34
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Reflej0/d15f87d7080c43e9461db202624182fe to your computer and use it in GitHub Desktop.
Save Reflej0/d15f87d7080c43e9461db202624182fe to your computer and use it in GitHub Desktop.
Ejercicio completo en Assembler, en Motorola 68HC11
* Dado un vector de numeros signados del que se conoce direccion inicial (dirIni)
* y la cantidad de elementos (cant) obtener la suma de los positivos (sumap)
* la cantidad de impares (cimpar), y la posición del primer cero (ppc)
ORG $0000
dirIni RMB 2
cant RMB 1 * cantidad de elementos del vector
sumap RMB 2 * suma de los positivos
cimpar RMB 1 * cantidad de impares
ppc RMB 1 * posicion dentro del vector (subindice) del primer cero
* si en lugar de la posicion (subindice) estuviera pidiendo direccion
* entonces la reservar de ppc seria de 2 bytes
aux RMB 1 * para llevar la cuenta de los elementos del vector
ORG $c000
CLR aux
CLR sumap * limpio la sumatoria de positivos
CLR sumap+1
CLR cimpar * limpiar la cantidad de impar
CLR ppc
LDX dirIni
bucle INC aux
ROR 0,x
BCC esPar
INC cimpar * tengo un impar mas!
esPar ROL 0,x
LDAB 0,x * en la parte baja de D cargo el num de 8 bits
BLE esNeg * si es negativo o cero, no lo sumo
CLRA * la parte alta la dejo en cero
ADDD sumap * acumulo en sumap este numero
STD sumap
esNeg LDAA 0,x * vuelvo a cargar porque lo pise con ADDD
BNE sigo
LDAA ppc
BNE sigo * habia otro cero
LDAA aux
STAA ppc * guardo la posicion del cero que encontre
* si en lugar de la posicion pidiera la direccion del primer cero
* reemplazaria las dos instrucciones anteriores por STX ppc
sigo INX
DEC cant * uno menos!
BNE bucle
FIN BRA FIN
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment