Tareas que realiza el programa ensamblador • Traduce el fuente .a66 a código máquina .obj – mov Rx, Ry F0 Código de instrucción
Escribir programa en el editor
x y Número de GPR
Fichero *.a66
– mov reg, #dato E6
reg
dato Ensamblador
Código de instrucción
Número de SFR
Número de 16 bits
Código máquina Librerías .obj Fichero *.obj
• Resuelve los valores de las etiquetas – Lleva un contador direcciones en memoria de las instrucciones. La etiqueta toma el valor de la dirección de memoria de la instrucción asociada
Enlazar Código máquina Fichero *.
Ejecutar
Título Presentación - 2
1
Ejemplo de ensamblador • Las etiquetas facilitan la programación en ASS
r0 (i) auxiliar if i>N then goto ´fin’ j += 1 i += 1 = jmpr cc_uc,
fin:
Instrucción
Operandos
Comentarios (opcional)
Título Presentación - 3
Números con y sin signo • Un número negativo es el que sumado a el mismo positivo da como resultado 0. ¿Cómo hacerlo? – Ejemplo en 16 bits: 0xFFFF + 0x0001 = 0x0000 (ya que el resultado no cabe en 16 bits) Número +
Número -
0x0001 (1)
0xFFFF (-1)
0x0002 (2)
0xFFFE (-2)
0x0003 (3)
0xFFFD (-3)
– Ejemplo en 8 bits: 0xFF + 0x01 = 0x00 (ya que el resultado no cabe en 8 bits)
Título Presentación - 4
2
Números con y sin signo • Aritmética en “Coma fija complemento a 2” – Números positivos: bit más significativo (bit 15) a 0. – Números negativos: bit más significativo (bit 15) a 1.
número _ negativo = 2 número _ de _ bits − número _ positivo 0 xFFFE = 216 − 0 x0002 • Overflow (Flag V del registro PSW) – Cuando operando dos números positivos se obtiene un número negativo 0x7FFF + 0x0001 = 0x8000 (“Overflow”; V = 1) 0x7FFE + 0x0001 = 0x7FFF (V = 0)
• Carry (Flag C del registro PSW) – Cuando operando dos números no cabe el resultado en 16 bits 0x8000 + 0x8000 = 0x0000 (“Carry”; C = 1) 0x8000 + 0x7FFF = 0xFFFF (C = 0) Título Presentación - 5
Números con y sin signo • ¿Cómo se calcula un número negativo? – En decimal se aplica la formula ¿cual es el negativo de 2 en 8 bits?
número _ negativo = 2 número _ de _ bits − número _ positivo 254 = 28 − 2 – En binario o hexadecimal (0000 0010 B) • Se hace el complemento a 1 del número (1111 1101 B) • Se le suma uno (1111 1110 B) – El número negativo de 2 en 8 bits es el 254 ó 0xFE ó 11111110B.
• Como el micro sólo entiende de 0's y 1's cuando hay un número en la memoria (por ejemplo 1111 1110) ¿Qué significa? – Si se interpreta con signo es el número negativo de 2 ó -2 – Si se interpreta sin signo es el número 254 – Depende del programador y de las instrucciones que use el que le da una interpretación u otra. Título Presentación - 6