Ciclos de máquina. Otro ejemplo: decremento de un registro par (donde rp = HL, DE, BC, SP) DCX rp

Ciclos de máquina • Otro ejemplo: decremento de un registro par (donde rp = HL, DE, BC, SP) DCX rp Acceso a periféricos: función del pin IO/M • Este
Author:  Sara Mora Paz

0 downloads 45 Views 1MB Size

Recommend Stories


RP Sistema de Control de Actitud
ACS R/RP Sistema de Control de Actitud Manual del usuario Mente Marine Vaasa, Finlandia [email protected] www.mente-marine.com 2 Contenido I

Brittain RP: Brittain RP: The sadistic murderer. Med Sci Law. A970; :
Brittain RP: The sadistic murderer . Med Sci Law. A970; :198-207. : EL ASESINO SÁDICO Robert P. Brittain Algunas veces la policía le pide al psiquiat

Manual de instrucciones HL-R5078W HL-R5678W HL-R6178W HL-R7178W
BP68-00513C-00Spa(cover) 6/16/05 1:40 PM Page 3 Manual de instrucciones HL-R5078W HL-R5678W HL-R6178W HL-R7178W Este dispositivo es un aparato di

Un ejemplo de servicio,
Boletín Informativo para los Profesionales de la Salud de Coomeva Medicina Prepagada ISSN 2011-3579 Vol. 6 No. 2 Octubre - diciembre de 2013 COnt

Story Transcript

Ciclos de máquina • Otro ejemplo: decremento de un registro par (donde rp = HL, DE, BC, SP) DCX rp

Acceso a periféricos: función del pin IO/M • Este μP cuenta con dos instrucciones específicas para I/O, llamadas IN y OUT. • Cuando se ejecuta un IN en lugar de un LDA, la línea IO/M se pone en alto (lo mismo ocurre con OUT frente a STA). • Además, en estos casos, solo se utilizan direcciones de 8 bits:

IN dir_puerto Lenguaje de máquina:

En assembler:

11011011 00110011

= DBh = 33h

(opcode) (dir. puerto entrada, de 8 bits)

A Å (puerto 33h)

IN 33h

OUT dir_puerto Lenguaje de máquina:

En assembler:

11010011 01000101

OUT 45h

= D3h = 45h

(opcode) (dir. puerto salida, de 8 bits)

(puerto 45h) Å A

Ciclos de máquina: instrucción OUT

Ciclos de máquina: instrucción STA

Terminales del μP 8085 (vistos hasta ahora)

Buses de direcciones y datos Bus de control Alimentación, clock, reset

Acceso a memorias lentas: función del pin READY • Diferencias en ciclos de lectura con y sin estados de espera (TW):

Cálculo de tiempos de ejecución Ejemplo: parpadeo de un bit en el puerto 33h (puerto 33h) Å 00000000b B Å 100 B Å B-1

delay

activó Z? delay (puerto 33h) Å 00000001b B Å 100 B Å B-1

activó Z?

2000h: 2002h: 2004h: 2006h: 2007h: 200Ah: 200Ch: 200Eh: 2010h: 2011h: 2014h: 2015h:

MVI OUT MVI DCR JNZ MVI OUT MVI DCR JNZ JMP

A,00000000b 33h B,100 B 2006h A,00000001b 33h B,100 B 2010h 2000h

Cálculo de tiempos de ejecución Solución usando una subrutina:

programa principal

subrutina

zona de RAM dedicada al stack

1000h: . . . 2000h: 2002h: 2004h: 2007h: 2009h: 200Bh: 200Eh: 2011h: . . . 3000h: 3002h: 3003h: 3006h: . . . 4000h: . . . 4100h:

LXI

SP,4100h

MVI OUT CALL MVI OUT CALL JMP

A,00000000b 33h 3000h A,00000001b 33h 3000h 2000h

MVI B,100 DCR B JNZ 3002h RET

Ejercicio 1: decodificación y acceso a puertos Dado el siguiente circuito, escribir un programa en assembler y hexadecimal para el 8085 a partir de la dirección que se ejecuta después de un reset, de modo que: a) Encienda los leds de salida que correspondan a los contactos que permanezcan cerrados. b) Encienda los leds de salida que correspondan a los contactos que permanezcan abiertos.

Ejercicio: decodificación y acceso a puertos A15 .

Dirección

. .

A8

A7 A6 A5 A4 A3 A2 A1 A0

Puerto entrada

. . .

0

0

1

X

1

1

1

1

(2F)

Puerto salida

. . .

1

0

0

X

1

1

1

1

(8F)

Parte a): COM ASSEMBLER:

Leer puerto de entrada

Enviar valor a puerto de salida

DIR:

HEXA:

2000 2001

DB 8F

2002 2003

D3 2F

OUT

h’2F

2004 2005 2006

C3 00 20

JMP

h’2000

2000h: IN

h’8F

Ejercicio: decodificación y acceso a puertos Parte b): COM ASSEMBLER: DIR: Leer puerto de entrada

Invertir

Enviar valor a puerto de salida

HEXA:

2100 2101

DB 2F

2100h: IN

h’2F

2102

2F

CMA

2103 2104

D3 8F

OUT

h’8F

2105 2106 2107

C3 00 21

JMP

h’2100

¿Se podría leer o escribir esos puertos con instrucciones LDA o STA? ¿Que le cambiaría al circuito para lograrlo?

Lenguaje Assembler • Es más fácil de manejar que el lenguaje de máquina. • Consiste esencialmente de las mismas instrucciones que el μP (los mnemónicos). • Se agregan otras instrucciones propias del lenguaje, llamadas pseudo-instrucciones o directivas del ensamblador (empiezan con un punto). • Se hace uso de las llamadas etiquetas (o labels) para efectuar saltos o señalar una dirección.

Algunas pseudo-instrucciones son: .ORG dir (Indica que el código que sigue a continuación ha de ubicarse a partir de la dirección dir) .END (Indica el fin del programa) label .EQU data (le asigna a la etiqueta label el valor data)

Cálculo de tiempos de ejecución (puerto 33h) Å 00000000b B Å 100 B Å B-1

programa principal

activó Z?

(puerto 33h) Å 00000001b subrutina B Å 100 B Å B-1

activó Z?

zona de RAM dedicada al stack

1000h: . . . 2000h: 2002h: 2004h: 2007h: 2009h: 200Bh: 200Eh: 2011h: . . . 3000h: 3002h: 3003h: 3006h: . . . 4000h: . . . 4100h:

LXI

SP,4100h

MVI OUT CALL MVI OUT CALL JMP

A,00000000b 33h 3000h A,00000001b 33h 3000h 2000h

MVI B,100 DCR B JNZ 3002h RET

Mismo ejemplo pero en lenguaje assembler: pilaini: tiempo: puerto:

.EQU .EQU .EQU

4100h 100 33h

;------------------------------------; Programa principal

parpadear:

.ORG

1000h

LXI

SP,pilaini

MVI OUT CALL MVI OUT CALL JMP

A,00000000b puerto demora A,00000001b puerto demora parpadear

; inicializo el stack ; para poder usar CALL ; apaga el LED

; enciende el LED

;-------------------------------------; Subrutina de delay, T=tiempo*14*Tclock (aprox.) demora: repetir:

MVI DCR JNZ RET .END

B,tiempo B repetir

Ejercicio 2: decodificación y algo mas… Dado el siguiente circuito, escribir un programa en assembler y hexadecimal para el 8085 a partir de la dirección que se ejecuta después de un reset que: a) Reproduzca en los 8 leds superiores el contenido del registro B del μP y en los 8 inferiores el contenido del registro C. b) Indicar el valor de la suma del contenido de los registros A, B y C ( A+B+C ) y colocarlo en binario en los 16 bits formados por los dos puertos (superior mas significativo).

Ejercicio 2: decodificación y algo mas… Dirección

A15 .

Salida de arriba

X

Salida de abajo

X

COM

Leer registro B Invertir Escribir puerto de arriba Leer registro C Invertir Escribir puerto de abajo

. .

A8

A7 A6 A5 A4 A3 A2 A1 A0

. . .

X

1

1

1

1

0

1

0

1

(F5)

. . .

X

1

1

1

1

0

1

0

0

(F4)

ASSEMBLER:

Parte a): DIR: 0000 0001 0002 . . . 0100 0101 0102 0103 0104 0105 0106 0107 0108 0109 010A

HEXA: C3 00 01 . . . 78 2F D3 F5 79 2F D3 F4 C3 00 01

.ORG JMP . . .

h’0000 START

.ORG START: MOV CMA OUT

h’0100 A,B h’F5

MOV CMA OUT

A,C

JMP

START

h’F4

Ejercicio 2: decodificación y algo mas… ASSEMBLER:

Parte b):

COM

Inicializar variables Sumar A+B+C Escribir puerto de arriba Escribir puerto de abajo

DIR: 0000 0001 0002 . . . 1F00 1F01 1F02 1F03 1F04 1F05 1F06 1F07 1F08 1F09 1F0A 1F0B 1F0C 1F0D 1F0E 1F0F 1F10 1F11 1F12 1F13

HEXA: C3 00 1F . . . 26 00 80 D2 07 1F 24 81 D2 0C 1F 24 D3 F4 7C D3 F5 C3 00 1F

START:

SALTO:

.ORG JMP . . .

h’0000 START

.ORG MVI

h’1F00 H,0

ADD JNC

B SALTO

INR ADD JNC

H C SALTO1

INR SALTO1: OUT

H h’F4

MOV OUT

A,H h’F5

JMP

START

Get in touch

Social

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