Ensamblador - programa en ensamblador

 
Vista:

programa en ensamblador

Publicado por javi (2 intervenciones) el 04/01/2007 19:53:48
Hola a todos. Tengo que hacer un programa en ensamblador pero nunca he hecho uno y no se ni por donde empezar. El programa ha de hacer lo siguiente:

Se han de inicializar 2 variables a 0, UNIDADES y DECENAS. el programa consiste en un bucle que vaya incrementando el valor de UNIDADES. Cuando este valor llegue a diez, dara un valor a UNIDADES igual a cero e incrementara DECENAS. El bucle continuara asi, incrementando UNIDADES y DECENAS en BCD, finalizando cuando DECENAS sea igual a 10. es decir, el bucle se ejecutara cien veces.

La verdad es que parece bastante sencillo pero como nunca he programado en enamblador no se ni como inicializar las variables :S. bueno si alguno de vosotros me pudiese ayudar lo agradeceria mucho. gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:programa en ensamblador

Publicado por Leandro (14 intervenciones) el 05/01/2007 12:54:16
Para assembler hacete la idea de usar Registros, no variables.
Para inicializar un registro (Ponerlo en 0) se utiliza el XOR con si mismo. Ej. XOR ax, ax.
Para hacer tu programa podrías usar la instrucción LOOP (Ya que conoces el número de ciclos, que serían 100. El LOOP se ejecuta cuantas veces indica el registro CX y lo autodecrementa). Entonces, moves a cx el valor decimal 100.
Para la operación podrías utilizar AX así...AL - Unidades, AH - Decenas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:programa en ensamblador

Publicado por javi (2 intervenciones) el 06/01/2007 16:30:35
Hola de nuevo. unos compañeros me dieron unas cuantas pistas para hacer el programa. ha quedado asi:

******************************************************************
UNIDADES EQU 0x20;
DECENAS EQU 0x21;

**********************************************************************************

Clearf UNIDADES; inicializo a 0 los registros unidades y decenas
clearf DECENAS;

start

INC UNIDADES; //incremento a 1 unidades
XOR UNIDADES, 10; //comparo valor de unidades con 10
GOTO Start //si es diferente de 10 vuelve a start
GOTO Incrementar decenas //si es diferente de 10 incrementa decenas

Incrementar decenas

INC DECENAS; //incremento decenas a 1
XOR DECENAS,10; //comparo decenas con 10
GOTO start; // si es diferente de 10 vuelve a start

end // si decenas es igual a 10 se acaba el prgrama.

no tengo ni idea de si esta bien o si falta algo. la intruccion de comparar con 10 no se si se hace asi...casi que me lo he inventado xd. a ver si alguien me puede echar otra manita. gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:programa en ensamblador

Publicado por Leandro (14 intervenciones) el 08/01/2007 12:57:02
Pareciera que usamos lenguajes distintos jaja. Para comparar yo uso el CMP de esta manera. CMP UNIDADES, 10.
Para los Saltos condicionales uso la instrucción JMP. Por ejemplo:

CMP UNIDADES, 10 ; Compara con 10.
JNE Start ; Si es Distinto, Salta a Start.
; Si no es Distinto (Igual), Por caída ejecutaría el código que hay debajo, que correspondería a Incrementar decenas.

Ojala te sirva esta ayudita. Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar