Programación avanzada en Ensamblador. Tareas que realiza el programa ensamblador

Programación avanzada en Ensamblador Cesáreo Fernández Martínez Álvaro Sánchez Miralles Tareas que realiza el programa ensamblador • Traduce el fuen

1 downloads 113 Views 4MB Size

Recommend Stories


Ensamblador
Operaciones. Lenguaje. Hexadecimal. Punteros y arrays

Ensamblador
Arquitectura de Computadores. Rutinas de Servicio. Interrupciones. Macros. EQU's. Funciones y Procedimientos

APUNTES DE LENGUAJE ENSAMBLADOR. Lenguaje ensamblador
APUNTES DE LENGUAJE ENSAMBLADOR ________________________________________________________________________________________ Lenguaje ensamblador Compil

Ensamblador para el 80x86
Ensamblador para el 80x86 1 DESDE ARCHIVOS FUENTES HASTA EJECUTABLES____________________________4 DECLARACION DE SEGMENTOS ________________________

Story Transcript

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

Etiquetas (op)

bucle:

MOV MOV MOV MOV 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 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

3

Instrucción MOV. • Directo a registro – MOV

r0,r1

; R0

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.