4

Páginas: 10 (2346 palabras) Publicado: 26 de abril de 2015
Programación avanzada en Ensamblador

Cesáreo Fernández Martínez
Álvaro Sánchez Miralles

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ódigomá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

Etiquetas (op)

bucle:

MOV
MOV
MOVMOV
CMP
JMPR
ADD
ADD
JMPS

R0,#0
0xfa00,R0
R0,#1
R1,#1
R0,#5
cc_sgt,fin
0xfa00,R1
R0,#1
bucle

;
;
;
;
;
;
;

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 elresultado 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 delnú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 useel que le da
una interpretación u otra.
Título Presentación - 6

3

Instrucción MOV.
• Directo a registro
– MOV

r0,r1

; R0 <- R1

r0,#3

; R0 <- 3 (no olvidar # !)

• Inmediato
– MOV

• directo a memoria
– MOV

; R0 <- Mem[fa00 H]

r0,0fa00H

• Indirecto (“normal”, post-incremento, pre-decremento)
– MOV

r0,[r1]

; R0 <- Mem[R1] (R1 Puntero)

– MOV
– MOV

r0,[r1+]
r0,[-r1]

; R0 <- Mem[R1], R1<- R1 + 2
; R1 <- R1 - 2, R0 <- Mem[R1]

– MOV

r0,[r1+#4]

; R0 <- Mem[R1+#4]

• A nivel de byte
– MOVB

rl0,#3

; R0 <- 3

– MOVB

rh0,[r1+]

; R0 <- Mem[R1], R1 <- R1 + 1

Título Presentación - 7

Mov con extensión de signo.
• Extensión de signo
– MOVBZ
• Carga el byte en parte baja, extiende (a los 16 bits) con ceros
MOVBZ
MOVBZ

R0,#0xFF ; r0 <- 0x00FF
R0,#-1
; r0 <- 255 no respeta el signo– MOVBS
• Carga el byte en parte baja, extiende (a los 16 bits) con bit de
signo
MOVBS
MOVBS

R0,#0xFF ; r0 <- 0xFFFF
R0,#-1
; r0 <- -1 respeta el signo

8 bits con
signo

8 bits sin
signo

16 sin
extender signo

16 bits extendiendo signo

0xFF

-1

255

255 (0x00FF)

-1 (0xFFFF)

0x80

-128

128

128 (0x0080)

-128 (0xFF80)
Título Presentación - 8

4

Programando con etiquetas (para datos)...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • 4
  • 4
  • 4
  • 4
  • 4
  • 4
  • 4
  • 4

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS