2012-02-05 21 views
6

Tengo el siguiente fragmento de código de ensamblado que estoy tratando de comprender. Es ensamblado para un microcontrolador MC68332.¿Qué hace exactamente la instrucción BEQ?

LOOP 
    some instructions 
    some more instructions 
BEQ LOOP 

Googled EQB y he encontrado que significa rama de resultado cero, pero todavía no entienden realmente lo que hace. ¿Compara el resultado de la última instrucción a 0, y si es 0, vuelve a la línea LOOP?

+0

¿Puedes decir a qué microcontrolador te refieres? –

+0

el microcontrolador es MC68332, gracias – jazzybazz

+0

agregó una respuesta, espero que ayude. –

Respuesta

4

En la familia Motorola 68k, significa "rama si es igual" lo que significa "saltar a la dirección dada si se establece el indicador de cero" (como cuando la comparación anterior fue exitosa).

Sin embargo, 68332 parece diferir de eso y, en función de la "sintaxis en mayúsculas", podría tratarse de un macrocontenedor alrededor de otra instrucción que esencialmente hace lo mismo.

Los programadores ensambladores que codifican el puerto desde otros sistemas pueden hacer uso de macros similares para facilitar el proceso de portabilidad.

+0

gracias, eso es exactamente lo que creo, creo. la última instrucción antes del BEQ es SUB D2, D2 que siempre establece el indicador de cero. por lo tanto, es un ciclo infinito. ¿derecho? – jazzybazz

+0

sí, eso es correcto a menos que nuestras suposiciones sean incorrectas :) –

1

La respuesta exacta dependerá del microcontrolador que esté utilizando. En general, si no hay operandos, se esperaría que BEQ se bifurcara si el Acumulador es 0. Esto es más probable en micros simples donde el Acumulador es el registro primario para los cálculos.

¿Qué microcontrolador estás usando? Debería poder encontrar una definición para la instrucción BEQ en el manual para ese micro.

+0

el MC68332. no hay nada sobre el comando BEQ en el manual de usuario – jazzybazz

+0

¿qué significa el verbo "ramificar"? – jazzybazz

+0

El sitio web de Freescale tiene una hoja de datos, puede encontrar un enlace aquí: http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MC68332. La ramificación significa saltar a un punto específico en el programa, en este caso a la etiqueta "LOOP". La función de este código es hacer un ciclo hasta que el acumulador tenga el valor "0". – Stefan

Cuestiones relacionadas