2012-07-26 12 views
5

Acabo de empezar a aprender el lenguaje ensamblador. Se me ocurrió el concepto de EQU. Al principio, ha tenido perfecto sentido hasta que llegué a DC.B. ¿Cuál es la diferencia entre DC.B y EQU? ¿No puedes usar EQU para cada constante? Gracias por la ayuda.EQU vs DC.B. ¿Cuál es la diferencia?

+0

¿Con qué ensamblador está trabajando, en qué sistema operativo? Para que procesador? –

+0

HC12? EQU solo define un símbolo constante, DC reserva espacio para una variable (.B lo convierte en un byte). – harold

Respuesta

12

No estoy familiarizado con su sintaxis específica de ensamblador, por lo que esta es una suposición educada.

La directiva EQU se usa para decirle al ensamblador que usted desea tener una constante simbólica llamado (a menudo calculada a partir de otros valores ensamblador incluyendo otras definiciones EQU) que se puede hacer referencia a otros lugares en el texto original montaje. Siempre se debe escribir

symbolname EQU constantexpression 

Esto le permite escribir symbolName en lugar de la ConstantExpression en otros lugares en su texto original. Pero este nombre por sí mismo no tiene un efecto directo en los datos binarios del programa ensamblado final.

"DB.B" (supongo que 'definir constante (byte)' se usa para decirle al ensamblador que con el programa ensamblado final tiene un byte de datos incrustado en la posición relativa en el archivo fuente " . usted escribe

optionalname DB.B constantexpression 

que tienen el valor calculado de la expresión constante colocado en un byte de datos en los datos binarios del programa montado.

por lo tanto, es posible escribir

AnEvenNumber EQU 2 
MyEvenNumber DB.B AnEvenNumber 

La primera línea produce solo una constante con nombre, y sin la segunda, no tiene efecto en su binario. La segunda línea produce un byte en su binario, que contiene el valor designado por la constante de símbolo nombrada.

Observe que la directiva DB.B también permite un nombre opcional; este símbolo también se puede usar en otros lugares en su código. Dependiendo de la sofisticación de su ensamblador, es posible que pueda definir

LocationOfEvenNumber EQU MyEvenNumber 

y

 DW.W LocationOfEvenNumber 

ahora la producción de una palabra en su archivo binario que "puntos" a su byte de datos binarios.

+0

Esa es una muy buena conjetura, de hecho llegaría a decir: Eso es +1 – Durandal

+0

Estoy trabajando con el microcontrolador HCS12 usando Codewarrior. Gracias por la explicación. Fue muy útil – eemamedo

Cuestiones relacionadas