• No se han encontrado resultados

AND (38h) CON (39h), DEPOSITANDO O RESULTADO NA (3Ah)

N/A
N/A
Protected

Academic year: 2019

Share "AND (38h) CON (39h), DEPOSITANDO O RESULTADO NA (3Ah)"

Copied!
80
0
0

Texto completo

(1)

CAPÍTULO

2

INSTRUCCIÓNS e

MODOS DE DIRECCIONAMENTO.

2.1.- INTRODUCCIÓN.

A computadora é unha máquina que se limita a executar as ordes que recibe. Ditas ordes chámanse instruccións e exprésanse mediante un conxunto de 1 e 0, para adaptarse á tecnoloxía Electrónica Dixital que utiliza a máquina. “Unha computadora sen instruccións é como un automóvil sen gasolina”.

Recibe o nome de Repertorio de instruccións o conxunto de ordes que póde interpretar e executar unha computadora. En xeral, as instruccións consisten en sinxelas operacións de tipo aritmético ou lóxico, que se realizan sobre dous operandos para obter un resultado. Tanto os operandos como o resultado son magnitudes binarias.

A Unidade de Control é o bloque encargado de recibir a instrucción, interpretala e xenerar as sinais de goberno necesarias para a súa execución na Unidade de Proceso, Unidade de Cálculo ou Camiño de Datos. Como se mostra na figura 2.1, as instruccións dunha tarefa da computadora están almacenadas na Memoria Principal. De aquí pasan a Unidade de Control, que as decodifica e goberna a súa execución, xenerando as sinais de control adecuadas. Ditas sinais determinan a obtención dos operandos da Memoria a selección, na Unidade de Proceso, da operación que implica a instrucción e o almacenamento do resultado.

(2)

A simplicidade das operacións que implican as instruccións dunha computadora é notable. Dous exemplos típicos son os que corresponden á instrucción aritmética de SUMAR e a lóxica AND, entre dúas magnitudes binarias.

EXEMPLO

Unha computadora tén almacenadas nas posicións 22 e 23 hexadecimais da Memoria Principal as seguintes magnitudes binarias:

(22h): 0010 0100 (23h): 0110 0011

Cando se referencia unha posición de memoria entre paréntesis, indica que o que figura a continuación é o contido da mesma.

Recibe o código da instrucción:

SUMAR (22h) e (23h), DEPOSITANDO O RESULTADO NA (24h)

Indicar o contido da posición (24h) despois de realizar a instrucción.

SOLUCION

(24h): 1000 0111

Nota: As posicións (22h) e (23h) manteñen o valor inicial.

EXEMPLO

Nas posicións 38h e 39h da Memoria dunha computadora están almacenados os seguintes contidos:

(38h): 1010 1010 (39h): 0101 0101

A Unidade de Control recibe o código correspondente a seguinte instrucción:

AND (38h) CON (39h), DEPOSITANDO O RESULTADO NA (3Ah)

Indicar o contido das posicións manipuladas na instrucción, despois de executala.

SOLUCION

(3Ah): 0000 0000

(3)

Un programa consiste nun conxunto ordenado de instruccións que resolve unha determinada tarefa. Como as accións que implican as instruccións son moi sinxelas, en ocasións hai que utilizar un elevado número para levar a cabo unha operación complexa.

EXEMPLO

Nunha fábrica de mobles recíbese un pedido para construir unha serie de banquetas dun modelo determinado, propio da marca. Dispoñemos do programa de ordes de traballo que se usan para este fin. A fábrica dispón dun almacén ou arquivo onde garda as ordes de traballo de tódolos seus productos, así como doutro almacén para as materias primas e outro para os productos terminados.

A factoría tén unha sección de Oficina Técnica que interpreta as ordes de traballo e controla a súa execución na maquinaria existente nas Liñas de Producción. Figura 2.2.

a) Establecer a analoxía entre as seccións da fábrica e os bloques dunha computadora.

b) Confeccionar un conxunto de ordes que lle permitan á Oficina Técnica gobernar a construcción das banquetas.

SOLUCION.

a) Os almacéns de ordes, materias primas e productos terminados da fábrica asemellanse á Memoria Principal da computadora, que contén os programas de instruccións, os datos de entrada e os resultados.

A Oficina Técnica realiza a misión da Unidade de Control. Interpreta as ordes de traballo e controla a súa correcta execución na maquinaria das Liñas de Producción, que son comparables ós operadores lóxicos e aritméticos da Unidade de Proceso.

O servicio de Comunicacións e Transportes da fábrica cumple cas mesmas funcións que os buses da computadora. Soportan a transferencia de elementos entre as diversas seccións.

b) De forma simplificada, as ordes para construir unha banqueta serían:

orden: Trasladar catro patas de 65 cm de lonxitude e 4 cm de diámetro do almacén de materias primas ás Liñas de Producción.

2ª orden: Trasladar un asiento cadrado de 40 cm de lado desde o almacén de materias primas ás Liñas de Producción.

3ª orden: Encaixar unha pata no asiento (x=2, e=0)

4ª orden: Encaixar unha pata no asiento (x=38, e=0)

5ª orden: Encaixar unha pata no asiento (x=2, e=40)

6ª orden: Encaixar unha pata no asiento (x=38, e=40) 7ª orden: Taladrar e atornillar pata-asiento (x=2, e=0)

8ª orden: Taladrar e atornillar pata-asiento (x=38, e=0)

9ª orden: Taladrar e atornillar pata-asiento (x=2, e=40)

10ª orden: Taladrar e atornillar pata-asiento (x=38, e=40)

(4)

2.2.- CARACTERISTICAS DAS INSTRUCCIÓNS.

As instruccións deben conter toda a información necesaria para que póda executa-las a máquina con total precisión. Deben expresar, directa ou indirectamente:

1. Tipo de operación a realizar.

2. O valor ou a posición onde se encontran os operandos. 3. O lugar onde se tén que depositar o resultado.

4. Tipo dos operandos.

5. Dirección de memoria da seguinte instrucción.

(5)

O primeiro campo do formato da instrucción da figura 2.3 consta de cinco bits que expresan a operación que hai que efectuar (SUMAR, RESTAR, AND, OR, etc). O segundo campo indica o valor ou o lugar onde se encontra o primeiro operando que participa na operación. O terceiro campo fai referencia ó valor ou o lugar onde se encontra o segundo operando e o cuarto campo, ó lugar ou posición de memoria onde hai que depositar o resultado.

EXEMPLO

Unha computadora manexa unha Memoria Principal de 16 posicións de 8 bits cada unha, cuios contidos se mostran na figura 2.4.

O formato dunha determinada instrucción para esta computadora é o da figura 2.5.

Sabendo que os operandos e o resultado que participan na instrucción exprésanse no formato ca dirección da Memoria onde se ubican e que o primeiro campo da figura 2.5 corresponde co do código asignado á instrucción lóxica AND, averiguar cómo se modifican os contidos da memoria despois de haber executado dita instrucción.

MEMORIA PRINCIPAL

DIRECCIÓN CONTIDO

0000 0000 0000

0001 1111 1111

0010 0000 0000

0011 1111 1111

0100 0000 0000

0101 1111 1111

0110 0000 0000

0111 1111 1111

1000 0000 0000

1001 1111 1111

1010 0000 0000

1011 1111 1111

1100 0000 0000

1101 1111 1111

1110 0000 0000

1111 1111 1111

Figura 2.4.- Contido das 16 posicións da Memoria Principal.

(6)

15 0

0011

0010

0011

1111

CÓDIGO OPERACIÓN (AND)

OPERANDO 1º OPERANDO 2º RESULTADO

Figura 2.5.- Formato dunha instrucción concreta.

SOLUCIÓN.

O primeiro operando que intervén na operación AND encóntrase na posición de Memoria 0010 e o seu contido é 0000 0000. O segundo operando ocupa a dirección 0011 e contén o valor 1111 1111. A operación será:

0000 0000 AND 1111 1111 = 0000 0000

O resultado desta instrucción deposítase na dirección 1111, que inicialmente contiña o valor 1111 1111, co que pasará a conter o novo valor 0000 0000 despois de executar a instrucción co formato da figura 2.5. O resto das posicións da Memoria non se modificarán.

Para reducir o formato das instruccións é frecuente utilizar a técnica de definir no formato das mesmas só dous operandos, denominados: fonte e destino. Neste caso, cando a instrucción precisa dous operandos, interveñen como tales o fonte e o destino, pero este último vólvese a empregar para conter o resultado. O valor inicial do operando destino pérdese porque, tra-a execución da instrucción, sobreescríbese nél o resultado.

EXEMPLO

Dispoñemos dunha computadora na que o formato das instruccións só especifica dous operandos: o fonte e o destino. Os campos para ditos operandos constan de 6 bits e expresan a dirección da Memoria Principal onde residen.

Indicar as posicións da Memoria que se modificarán despois de executar a instrucción cuio formato é o que se mostra na figura 2.6.

15 0

0101

000100

000010

CÓDIGO OPERACIÓN OPERANDO 1º FONTE

OPERANDO 2º DESTINO

Figura 2.6.- Formato da instrucción a executar.

Coñecense os seguintes datos:

(7)

SOLUCIÓN.

O resultado da operación lóxica OR é:

01010101 OR 10101010 = 1111 1111

Como o resultado da instrucción se deposita no operando destino, que corresponde á dirección 000010. ésta é a única que altera o contido na Memoria, que pasa de conter o valor 10101010 a conter o 1111 1111.

As diferentes formas de expresar nas instruccións o valor ou o lugar onde residen os operandos e o resultado, recibe o nome de Modos de Direccionamento. O modo de direccionamento máis habitual é o Directo, que indica a dirección da Memoria Principal onde reside o valor do operando ou o resultado. Tamén é moi frecuente o modo de direccionamento

por rexistro, tamén chamado directo a rexistro, no que se especifica o rexistro que contén o operando. Finalmente, o modo de direccionamento inmediato contén nos bits do campo correspondente o valor do operando, e dicir, figura o valor do operando no campo correspondente da instrucción.

Outros modos de direccionamento son o indirecto, relativo, implícito, indexado, etc.

EXEMPLO

Unha computadora dispón na súa Unidade de Proceso dun Banco de Rexistros con oito diferentes (R0, R1, ... , R7). No formato das instruccións especifícanse os operandos fonte e destino, que se supón están depositados nalgún dos rexistros. Os rexistros seleccionanse mediante 3 bits (000: R0, 001: R1, ... , 111: R7).

Sabendo que o código de operación asignado á instrucción de SUMAR é o 01 binario.

a) De cántos bits se compón o formato da instrucción: SUMAR O CONTIDO DE R2 E R3 DEPOSITANDO O RESULTADO EN R2.

b) Debuxar o formato da instrucción anterior.

SOLUCIÓN.

a) O formato da instrucción tén tres campos: Código de Operación, Operando Fonte e Operando Destino.

O Código de Operación tén 2 bits e os operandos exprésanse mediante 3 bits. O formato da instrucción consta de 8 bits.

(8)

EXEMPLO

Unha determinada computadora dispón de instruccións cuio formato consta de tres campos, cas seguintes especificacións:

1. O Código de Operación é de 4 bits.

2. O operando fonte é un valor inmediato de 8 bits.

3. O operando destino consta de 4 bits, que forman a dirección da Memoria Principal onde se encontra o segundo operando e onde se deposita o resultado.

Se se tén que executar a instrucción cuio formato se mostra na figura 2.8, indicar as modificacións que ocasionará nas posicións da Memoria. Sábese que o Código de Operación 0011 corresponde á operación de SUMAR e que na dirección de Memoria 0101 existe o dato 0000 0000 antes de executar a instrucción.

SOLUCION

A instrucción expresada na figura 2.8 suma o valor inmediato do operando fonte, que se indica no formato, co contido da dirección 0101, deixando o resultado nesta última.

0000 0101 + 0000 0000 0000 0101

O resultado deposítase no operando destino, que é a posición de Memoria cuia dirección é a 0101, que será a única que modifique o seu valor despois de executar a instrucción.

O campo destinado ó Código de Operación (CO) sirve para indicar á Unidade de Control a operación lóxica ou aritmética que tén que realizar a Unidade de Proceso. As operacións son moi simples e os seus principais tipos son os seguintes:

a) Instruccións aritméticas. b) Instruccións lóxicas.

c) Instruccións de transferencia ou movemento. d) Instruccións de salto.

(9)

As instruccións de transferencia están representadas pola instrucción MOVER, que transfire o contido da posición de memoria ou rexistro que lle indique o operando fonte ata o lugar que lle especifique o operando destino.

As instruccións de salto sirven para romper a secuencia ordenada das instruccións que compoñen un programa. Dispoñen dun formato especial. A instrucción de SALTO INCONDICIONAL só dispón de un operando, que é o destino e que define a nova dirección da Memoria, onde hai que ir a buscar a seguinte instrucción do programa a executar. Para producirse o salto non se tén que cumplir condición algunha.

A instrucción de SALTO CONDICIONAL é similar, pero, para que se produza o salto e non se continúe ca seguinte instrucción do programa, ténse que cumplir unha condición. Dita condición está relacionada co valor que tén algún sinalizador de estado ou "flag", que son úns bits que se poñen automáticamente a 1 cando, ó realizar unha instrucción, se produce algún acontecemento especial. Por exemplo, cando se suman dúas magnitudes binarias e se produce acarreo na suma dos bits de máis peso, pónse a 1 un bit que se chama sinalizador de acarreo ou carry.

EXEMPLO

Dispoñemos dunha computadora con un repertorio de catro instruccións:

SUMAR O CONTIDO DE DÚAS POSICIÓNS DE MEMORIA.

COMPARAR O CONTIDO DE DÚAS POSICIÓNS DE MEMORIA.

MOVER O CONTIDO DUNHA POSICION DE MEMORIA A OUTRA.

SALTAR Á DIRECCION QUE SE INDICA COMO OPERANDO DESTINO SE O RESULTADO DA OPERACION ANTERIOR FOI CERO.

Indicar a qué tipo de instrucción corresponde cada unha.

SOLUCION

SUMAR: Instrucción aritmética.

COMPARAR: Instrucción lóxica. Trátase de efectuar a operación XOR, bit a bit, entre os dous operandos.

MOVER: Instrucción de transferencia.

SALTAR SE CERO: Instrucción de salto condicional.

2.3.- LINGUAXES DE PROGRAMACION: DE BAIXO E DE ALTO NIVEL.

(10)

As primeiras computadoras utilizaron a linguaxe máquina para confeccionar e codificar os programas. Así, mediante interruptores de dúas posicións e diodos luminiscentes (LED), introducíanse ou líanse as instruccións e os datos.

A linguaxe máquina é inexpresiva para o ser humano posto que os conxuntos de 1 e 0 non teñen un significado fácilmente interpretable. Ademáis, propicia frecuentes erros pola facilidade de cambiar un 1 por un 0 e viceversa.

Nun primeiro intento de mellorar as características da linguaxe máquina usouse a

linguaxe hexadecimal, que é a máis cercana á binaria. As expresións facíanse máis cortas e as posibilidades de cambiar un díxito, máis improbables.

EXEMPLO

Se o Código de Operación da instrucción XOR nunha computadora é 0101 1010 e os dous operandos (fonte e destino) localízanse en posicións da Memoria, cuias direccións constan de 8 bits,

a) Interpretar o significado do formato da instrucción de 3 bytes que se indica:

0101 1010 0000 1000 0000 0010

b) Codificar dita instrucción na linguaxe hexadecimal.

SOLUCION

a) O formato da instrucción indica que hai que realizar unha operación lóxica XOR entre os contidos das posicións de memoria de direccións 8 (fonte) e 2 (destino), deixando o resultado da operación na posición de dirección 2.

b) 5A 08 02

Ó igual que un conxunto de bits, un conxunto de díxitos hexadecimais tampouco tén significado. O seguinte paso para mellorar a linguaxe de programación consistiu en intentar expresar as instruccións co nome abreviado, en inglés, da operación que realizaban. Así, a unha instrucción aritmética de SUMA chamábaselle ADD; á de RESTA, SUB; á de MOVER, MOV; á de SALTO, JUMP ou JMP, etc. A este reducido grupo de letras que expresan a instrucción denominouselle nemónico, porque recorda a función que realiza a instrucción. Xurdiu unha linguaxe que expresaba as instruccións mediante o nemónico correspondente, seguido dos operandos e do destino: Nacía a linguaxe ENSAMBLADORA ou

ENSAMBLADOR.

EXEMPLO

(11)

A computadora dispón dun Banco de Rexistros de oito elementos: R0, Rl, ... , R7, de 8 bits de lonxitude cada ún. Se inicialmente tódolos rexistros están cargados co valor 0000 0010, calcular o contido dos mesmos despois de executar o seguinte programa, no cal o código de operación exprésase con nemónicos e os operandos polo nome dos rexistros, pois só se dispón do modo de direccionamento por rexistro.

Formato: Nemónico operando_Fonte, opererando_Destino

ADD R2, R3 ADD R0, R1 SUB R4, R5 NOT R6 XOR R5, R7

SOLUCION

R3 = 0000 0100 R1 = 0000 0100 R5 = 0000 0000 R6= 1111 1101 R7 = 0000 0010

R0 = R2 = R4 = 0000 0010

EXEMPLO

Confeccionar un programa para que a computadora do exemplo anterior, partindo do mesmo estado inicial dos seus oito rexistros, e dicir, contendo o valor 0000 0010, pasen a conter o valor 0000 0000, despois de executar o programa pedido.

A solución figura na seguinte páxina

SOLUCION

Nemónico Operandos (F,D) ; Comentarios

SUB R1,R0 ; R0 = 0000 0000

AND R0,R1 ; R1 = 0000 0000

AND R1,R2 ; R2 = 0000 0000

AND R2,R3 ; R3 = 0000 0000

AND R3,R4 ; R4 = 0000 0000

AND R4,R5 ; R5 = 0000 0000

AND R5,R6 ; R6 = 0000 0000

AND R6,R7 ; R7 = 0000 0000

(12)

executar a computadora. A linguaxe máis pura de baixo nivel é a binaria pero, debido ós seus inconvintes, non se usa. Tampouco resulta práctico nin comprensible a linguaxe hexadecimal, así que, na práctica, a única linguaxe de baixo nivel que se emprega é o Ensamblador, que utiliza os nemónicos con algúns comandos de apoio, para expresar as instruccións.

A linguaxe Ensambladora dispón do mesmo repertorio de instruccións que o da máquina e as súas expresións hai que traducilas á linguaxe binaria para que poidan ser interpretadas pola Unidade de Control. Para levar a cabo a traducción de conxuntos de letras e números (caracteres ASCII) a códigos binarios, utilízase a propia computadora con un sinxelo programa de traducción, que recibe o nome de Programa Ensamblador. Desta forma, un programa fonte confeccionado ca linguaxe Ensambladora convírtese nun programa obxecto en linguaxe máquina (binaria), mediante a execución dun programa de traducción, chamado

Programa Ensamblador. Figura 2.9.

EXEMPLO

O formato das instruccións dunha computadora consta de tres campos: Código de Operación, Operando Fonte e Operando Destino. O campo do Código de Operación consta de 8 bits e os outros dous, de 3 bits, cos que se especifica o rexistro que contén o operando.

O Banco de Rexistros é de oito elementos, chamados R0, R1, ... , R7.

Sabendo que o Código de Operación da instrucción para sumar, con nemónico ADD, é 0000 0011, e o de restar, SUB, é 1111 1100, traducir o seguinte programa en linguaxe Ensambladora a un programa obxecto executable, na linguaxe máquina ou binaria.

ADD R2, R3 SUB R3, R4 ADD R4, R5

SOLUCION

(13)

EXEMPLO

Se na computadora do exemplo anterior se lle proporciona o seguinte programa en linguaxe máquina:

0000 0011 111 110 0000 0011 000 001 1111 1100 110 001

a) Convertilo nun programa en linguaxe Ensambladora.

b) Se, inicialmente, tódolos rexistros conteñen o valor 0000 1110, calcular o valor de R0, R1 e R6 despois de executar o programa.

SOLUCION

a) ADD R7, R6

ADD R0, R1 SUB R6, R1

b)

R0 = 0000 1110, R1 = 0000 0000 e R6 = 0001 1100

Linguaxes de alto nivel son aquelas que son máis cercanas á linguaxe natural ca que nos expresamos os humanos. Ademáis, as súas instruccións non coinciden coas que póde executar directamente a computadora. Son máis potentes e intelixibles, pero non as acepta a máquina debido ó seu formato e á operación que implican. Nas linguaxes de alto nivel son instruccións habituais a exponenciación e a extracción de raíces. Para que a máquina poida realizar ditas operacións complexas, debe facelo a base de repetir, seguindo un algoritmo, moitas instruccións máquina simples (SUMAR, RESTAR, AND, XOR, etc).

Como sucedía ca linguaxe Ensambladora, tamén as linguaxes de alto nivel precisan de programas traductores que codifiquen en linguaxe binaria as instruccións. Existen dous tipos de programas traductores para as linguaxes de alto nivel: Intérpretes e Compiladores.

(14)

2.4.- MODOS DE DIRECCIONAMENTO.

É habitual que en determinados traballos se teña que utilizar unha aplicación de gran volume de datos que esté previsto procesala moi frecuentemente con un sistema informático cuia arquitectura se coñece. Está claro que se esa aplicación, despois de realizar un minucioso estudio, se chega a procesar no mínimo tempo posible, será moito máis rentable, e estaremos utilizando con mellor rendemento os recursos do sistema.

Os datos que manexa calquer instrucción póden estar almacenados:

Na propia instrucción. O valor do operando está contido nun campo da propia instrucción máquina.

Nun rexistro da CPU. Os rexistros da CPU pódense utilizar para almacenar temporalmente os datos ou resultados.

Na memoria da computadora. Neste caso será necesario especificar dalgunha maneira ou modo a dirección ou posición da mesma onde se encontra o operando, dirección que vamos a denominar dirección final ou efectiva (DF ou AE, “Effective Address”) do

operando.

Son moitos factores os que interveñen para alcanzar este obxectivo. Neste capítulo veremos cómo acceder a os datos polos camiños máis adecuados.

Denomínanse técnicas de acceso á Memoria Principal ás utilizadas para seleccionar, nun determinado instante dun proceso, a dirección na que se quere extraer ou almacenar unha información.

A os modos utilizados para seleccionar a dirección da información, extraída ou almacenada, se lles denomina tamén Modos de Direccionamento (MD).

Máis concretamente, entendemos por modos de direccionamentoas distintas formas de indicar nunha instrucción o valor de un operando ou ben o da súa situación, así como a forma de acceder ó mesmo.

Estas técnicas están relacionadas tanto coa arquitectura do hardware do ordenador coma co software utilizado. En canto ó hardware, a facilidade con que hoxe en día se deseñan e modifican prototipos de microprocesadores posibilita a incorporación do soporte requerido polos diferentes MD.

O decodifícador que interpreta, en calquer ordenador, o valor que circula polo conxunto de liñas que compoñen o bus de direccións, determina e selecciona a posición da mesma no mapa da Memoria.

(15)

Neste apartado vamos a describir os diferentes tipos de direccionamento desenvolvidos no hardware dun ordenador, así como as ventaxas asociadas a cada ruta específica de datos que xenera cada un deles, e que lle serán de gran utilidade ó programador que traballe en linguaxe de baixo nivel.

Antes de entrar no estudio detallado de cada un dos modos de direccionamento, debemos de ter presente que:

 Hai tarefas de proceso e programas que utilizan varios modos de direccionamento.

 Cada modo póde combinarse con outro ou outros dos xa coñecidos.

 Un modo de direccionamento póde utilizar diferentes rexistros como soporte de información, así como campos distintos do formato da instrucción.

 Algunhas arquitecturas non permiten a utilización de determinados modos de direccionamento.

Hai que ter en conta que non só un ordenador realizará o proceso de forma máis rápida por dispoñer de máis posibilidades de direccionamento, senón que hai outras características de deseño que tamén o fán máis potente; entre outras podemos destacar:

 Un incremento da velocidade de conmutación das compoñentes, sincronizados co reloxo de alta frecuencia.

 Un aumento da capacidade da memoria.

 Un incremento da lonxitude de palabra.

 Un aumento do número de Rexistros de Propósito Xeral (RPX).

As Unidades Centrais de Proceso das arquitecturas dos ordenadores que se utilizan hoxe en día permiten empregar varios modos de direccionamento. Vexamos primeiramente cada ún por separado para posteriormente, no apartado 2.4.6, realizar un estudio dos modos combinados máis utilizados.

2.4.1.- Direccionamento inmediato.

Nél a instrucción contén xa o operando e non a dirección en que se encontra. Dependendo do tipo de formato de instrucción, este direccionamento utilízase de dúas formas diferentes:

a) O formato de instrucción ocupa unha posición de memoria.

Nestes casos a lonxitude da instrucción coincide ca lonxitude da palabra de memoria; é dicir, a instrucción completa, con operando incluido, ocupa unha posición de memoria. O

(16)

Este MD é o máis rápido de procesar, xa que para acceder ó operando non necesitamos ningún acceso adicional a memoria, unha vez que xa localizamos a instrucción e a decodificamos na CPU. O número de bits do operando queda limitado pola lonxitude do campo CD. É moi empregado en todo tipo de computadoras.

Utilizando este MD, hai arquitecturas que, para a execución dalgunhas das súas instruccións, necesitan dunha inicialización previa dos rexistros que se vaian a utilizar, para modificar os bits anteriores máis significativos, por ser a lonxitude do operando inferior á lonxitude do rexistro.

Unha aplicación habitual que utiliza este MD é a inicialización de variables ou incremento de contadores.

Vexamos, como exemplo, a execución da instrucción LOAD RA, Inm; Cargar o

rexistro acumulador co valor inmediato Inm, con MD inmediato para o segundo operando.

A Táboa 2.4.1 representa o secuenciamento da transferencia de información e a Figura 2.4.1 representa a ruta de transferencia de información, ó utilizar este direccionamento, excluíndo a preparación da seguinte instrucción.

Micro Instruccións Fase (RI) ← [(PC)]

(PC) ← (PC) + 1 1

Decodificación 2 Táboa 2.4.1.- Táboa de microinstruccións do proceso da instrucción LOAD RA, Inm; con modo de direccionamento inmediato para o segundo operando.

(RA) ← (CD) 3

b) O formato de instrucción ocupa máis dunha posición de memoria.

(17)

casos a instrucción está composta por dúas ou máis palabras ubicadas en posicións contiguas da memoria.

No caso particular dunha instrucción de dúas palabras de lonxitude, o formato tipo de instrucción con este MD contén os seguintes campos:

O campo de operación CO divídese en dous subcampos: o do código de operación

propiamente dito e un segundo campo de un número reducido de bits, cuia interpretación lle indica, ó circuito de control, a lonxitude da instrucción (LI).

O campo de dirección, neste caso, formao a segunda palabra da instrucción, que contén o operando.

As características principais deste MD son as seguintes:

 Requírese un ciclo adicional de lectura de memoria para leer o dato contido na 2ª palabra da instrucción.

 Unha aplicación habitual que utiliza este MD é a de realizar operacións aritméticas con valores de operando suficientemente grandes.

 Utilízase en todo tipo de computadoras.

Vexamos como exemplo a execución da instrucción LOAD RA, InmXL; (Cargar o acumulador con un valor inmediato; MD inmediato para o segundo operando).

Na Táboa 2.4.2 represéntase o secuenciamento de microinstruccións na transferencia de información. Na Figura 2.4.2 póde verse a ruta de transferencia de información, con este MD.

Micro Instruccións Fase (RI) ← [(PC)]

(PC) ← (PC) + 1 1

Decodificación 2 Táboa 2.4.2.- Táboa de microinstruccións do proceso da instrucción LOAD RA, InmXL; con modo de direccionamento inmediato para o 2º operando, e que ocupa 2 posicións de memoria.

(RA) ← (CD)

(18)

2.4.2.- DIRECCIONAMENTO DIRECTO. DIRECTO A MEMORIA ou DIRECTO

ABSOLUTO.

Diferenciase do anterior en que o campo CD da instrucción no contén o valor do operando, senón á dirección final ou efectiva de memoria onde se encontra o mesmo.

Enténdese por dirección final (DF) a dirección en que se encontra a información á que se quere acceder na memoria, nun proceso de lectura o escritura.

O formato tipo de instrucción con este direccionamento contén os seguintes campos:

CO MD CD

As características principais deste direccionamento son as seguintes:

 No son necesarios cálculos previos para determinar a dirección final. Necesita un ciclo de memoria exclusivamente para acceder ó operando, que agora póde estar almacenado en calquer posición da memoria principal.

 Se se utilizara este direccionamento con carácter exclusivo, o CD deberia ter unha lonxitude suficientemente grande como para poder acceder a todo o mapa da memoria.

(19)

A ruta de transferencia de información na fase de búsqueda do operando está representada na Figura 2.4.3. Non se representa a fase de búsqueda da instrucción, fase que é similar a dos casos anteriores.

Vexamos, como exemplo, a execución da instrucción LOAD RA,[dir]; cargar o acumulador co contido da dirección de memoria Vdir, empregando MD directo a memoria para o segundo operando. A Táboa 2.4.3 representa o secuenciamento de microinstruccións na transferencia de información.

Micro Instruccións Fase (RI) ← [(PC)]

(PC) ← (PC) + 1 1

Decodificación 2 Táboa 2.4.3.- Táboa de microinstruccións do proceso da instrucción LOAD RA, [dir]; modo de direccionamento directo no 2ºop.

(RA) ← [dir] 3

2.4.2.1.- DIRECCIONAMENTO DIRECTO A REXISTRO.

Neste direccionamento o operando está contido nun dos rexistros xerais, designado como Rexistro de Traballo (RT), de acceso moi rápido. O formato de instruccióncontén os seguintes campos:

CO MD Ri

(20)

As características principais deste direccionamento son as seguintes:

 Require un só ciclo con referencia a memoria, ou de búsqueda da instrucción, para acceder ó operando.

 Unha aplicación habitual que utiliza este direccionamento é a de realizar operacións aritméticas con valores de operando suficientemente grandes, pero que non desbordan a capacidade dun rexistro.

 Este direccionamento impleméntase en ordenadores con formato de instrucción de lonxitude variable.

 Emprégase en micros, minis e grandes ordenadores.

Vexamos como exemplo a execución da instrucción LOAD RA,Ri; Cargar o acumulador co contido do rexistro Ri.

A Táboa 2.4.4 representa o secuenciamento de microinstruccións na transferencia de información.

Micro Instruccións Fase (RI) ← [(PC)]

(PC) ← (PC) + 1 1

Decodificación 2 Táboa 2.4.4.- Táboa de microinstruccións do proceso da instrucción LOAD RA, Ri; con modo de direccionamento directo a rexistro.

(RA) ← (Ri) 3

(21)

2.4.3.- DIRECCIONAMENTO INDIRECTO.

2.4.3.1.- INDIRECTO CON MEMORIA.

Neste direccionamento, coñecido tamén por indirección, o contido do campo CD da instrucción transfírese a través do bus de direccións, BA, ó decodificador de entrada da memoria, ó igual que se facía no modo directo. A diferencia radica en que o contido de CD no

modo directo é a dirección na que se encontra o operando (DF); en cambio neste caso o valor que contén o campo CD dános a dirección dunha palabra de memoria, dirección intermedia, cuio contido será interpretado como a dirección final (DF) onde está o operando, o que implica outro ciclo máis de lectura na memoria para acceder ó operando.

No son necesarios cálculos previos para determinar a dirección na que se encontra o operando.

O formato tipo de instrucción con este direccionamento contén os seguintes campos:

CO MD CD

As transferencias de información na fase de búsqueda do operando están representadas na Figura 2.4.5.

As características principais deste direccionamento son as seguintes:

 Non son necesarios cálculos previos para determinar a dirección final. Necesita dous ciclos de memoria para acceder ó operando; durante o primeiro accédese á dirección intermedia e no segundo accédese ó operando.

(22)

Vexamos como exemplo a execución da instrucción LOAD RA, [[dir]]; Cargar o acumulador co contido da posición de memoria cuia dirección está almacenada na posición,

dir, de memoria. Utiliza o MD indirecto para o segundo operando.

A Táboa 2.4.5 representa o secuenciamento de microinstruccións na transferencia de información. Se a instrucción fora de salto, o valor DF sería transferido simultáneamente a os rexistros PC e novamente a memoria, para desta forma ganar tempo e realizar a búsqueda da seguinte instrucción.

Micro Instruccións Fase (RI) ← [(PC)]

(PC) ← (PC) + 1 1

Decodificación 2 Táboa 2.4.5.- Táboa de microinstruccións do proceso da instrucción: LOAD RA,[[dir]]; con modo de direccionamento indirecto para o 2º operando.

DF ← [dir]

(RA) ← [DF] 3

O direccionamento indirecto utilízase en moitas aplicacións que fan uso de datos almacenados en posicións distantes na memoria. Vexamos algunhas das máis relevantes:

a) A indirección é un método eficaz para transferir os parámetros dun programa principal a subrutinas.

b) A montaxe de enlaces en bancos de datos realízase mediante este direccionamento dunha forma sinxela.

c) Utilizando a técnica de punteiros, a indirección permite montar o enlace entre diferentes zonas de datos.

d) Este direccionamento permite con unha soa instrucción dun programa, acceder a distintas zonas da memoria.

e) Tódolos ordenadores que utilizan memoria paxinada necesitan de un direccionamento indirecto.

2.4.3.2.- Indirecto con rexistro.

Neste modo de direccionamento figura codificado no campo CD o rexistro Ri da batería de rexistros xerais, pero o valor que contén o rexistro non é o dato senón a dirección de memoria onde está o dato.

(23)

2.4.4.- Direccionamento relativo.

Este direccionamento caracterízase porque o valor numérico da dirección final da palabra a acceder consíguese tratando conxuntamente a información contida no campo CD e a contida nalgún rexistro determinado da UCP.

A caracteristica fundamental do direccionamento relativo é que posibilita o acceso a un conxunto de direccións determinadas e próximas, a partir dunha considerada como dirección de referencia.

Existen varios modos de direccionamento relativo, según onde se encontre almacenada a dirección de referencia ou cál sexa o proceso para determinar a dirección final do dato.

Os ordenadores que teñen algunhas instruccións, cuia lonxitude do CD é insuficiente para direccionar a totalidade do mapa da memoria, van provistos no seu deseño dalgún direccionamento relativo a algún rexistro da UCP.

A relatividade consíguese normalmente mediante cálculos aritméticos simples, habitualmente sumas ou restas, do valor que figura no campo CD, valor que se denomina habitualmente desprazamento, co contido dalgún rexistro da UCP, obténdose a dirección final ou efectiva. Dito resultado transfírese a través do bus de direccións (BA) para determinar a posición de acceso á memoria.

(24)

Este direccionamento posibilita un rango de memoria direccionable, a partir da dirección de referencia ou dirección base, que é o valor contido no rexistro base. Se o valor contido nun determinado momento do procesamento do programa no RB é DB, o rango de memoria direccionable estará comprendido entre DB - (2r–1) e a dirección DB+(2r–1), tal

(25)

2.4.4.1.- DIRECCIONAMENTO RELATIVO Ó CONTADOR DE PROGRAMA.

O programador que faga uso en exclusiva deste direccionamento debe ter en conta a

proximidadeentre instruccións e datos.

A dirección final determínase sumando ou restando ó contido do rexistro PC,

dirección base ou relativa,un valor de desprazamento contido no campo CD da instrucción en curso, almacenada no rexistro RI, tal como se representa no esquema da Figura 2.4.7.

É dicir, no direccionamento relativo ó contador programa, o campo dos r bits do CD

da instrucción en curso, determina o desprazamento en palabras ou posicións de memoria respecto da dirección contida no rexistro PC. Tendo en conta que mentras unha instrucción se está executando, no ciclo de búsqueda do operando, o rexistro PC contén a dirección da

seguinte en secuencia á instrucción en curso, contido que se incrementou automáticamente na fase de búsqueda da actual instrucción.

Este direccionamento posibilita un rango de memoria direccionable, a partir da dirección de referencia. Se a dirección da instrucción en curso nun determinado momento do procesamento do programa é D,o contido por defecto do rexistro PC é D+1, e neste caso o rango de memoria direccionable estará comprendido entre DB–(2r–1) e a dirección DB+(2r–1), tal como se representa no esquema da Figura 2.4.8, tendo en conta que DB=D+1, sendo D o valor contido no rexistro PC no momento en que se iniciou a execución da presente instrucción, o rango de posicións direccionables será [ D+2 – 2r, D+2r ].

2.4.4.2.- DIRECCIONAMENTO RELATIVO DA MEMORIA CON REXISTROS ADICIONAIS.

Enténdese que os direccionamentos anteriormente descritos son suficientes para arquitecturas de ordenadores sinxelos; pero existen outros máis potentes que, utilizando unidades operadoras complementarias, contribúen a mellorar notablemente o rendemento do ordenador, transferindo a información que procesan non exclusivamente a un único rexistro, senón hacia algún dos que compoñen unha bateria de Rexistros de Propósito Xeral(RPX),

ou Rexistros de Traballo, que póden utilizarse indistintamente, xa sexa como rexistro

destino ou rexistro fonte.

Os ordenadores en cuia arquitectura se dispón deste tipo de rexistros posibilitan modernas técnicas de direccionamento que ofrecen notables ventaxas ó programador, ademáis de mellorar a eficiencia da Unidade Central de Proceso, ó reducir os tempos de espera nos accesos a memoria.

A inserción na arquitectura dunha batería de rexistros require unha pequena circuitería adicional e, por tanto, un pequeno incremento do coste do hardware do equipo.

(26)

2.4.4.2.1.- DIRECCIONAMENTO RELATIVO A REXISTRO BASE.

Por medio deste direccionamento a dirección final obtense sumando, ó contido do Rexistro Base de direccionamento (RB), o contido do campo CD da instrucción, que se interpreta como un desprazamento.

O RB adoita ter a mesma lonxitude que o rexistro PC e pódese utilizar para almacenar valores que póden representar direccións de memoria, ó igual que outro reducido número de rexistros.

Cando un programador deseña un programa en linguaxe de alto nivel, descoñece as posicións en que o compilador vai a situar ás instruccións e operandos na memoria, sendo o sistema operativo o encargado de reservar zonas de memoria para os programas de usuario.

Este direccionamento permítelle a os Sistemas Operativos multiusuario reubicar fácilmente os programas de usuario sen solaparse nas mesmas posicións de memoria, ó tomar como referencia unha dirección que denominamos dirección base (DB).

Ó utilizar este método, tódalas direccións son consideradas relativas a base e sumadas, como se dixo, co valor contido no seu RB asociado ó programa. Desta forma o programador descoñece as zonas reais nas que se ubica o seu programa no mapa de memoria, xa que decoñece o valor de DB, anque sepa o seguinte

Dirección real da memoria = Dirección base + Desprazamento

Este direccionamento élle moi útil ao programador para direccionar táboas exclusivamente de instruccións e potenciase cando se combina coa indirección, como veremos noutro apartado.

Neste método o programador tén que escribir unha instrucción por cada elemento do vector de datos, xa que é o contido do campo CD o que co seu desprazamento sinala a un determinado elemento a partir dunha dirección base, contida no Rexistro Base, que permanece constante. Esta característica reduce a velocidade de procesamento, pero evita coexistencias de zonas da memoria por diferentes usuarios.

2.4.5.- DIRECCIONAMENTO INDEXADO.

(27)

unha soa instrucción, poder direccionar calquer elemento de dito vector. En realidade é similar ó MD relativo, só que a cada acceso a memoria, increméntase ou decrementase automáticamente o contido do Rexistro Índice, RIN.

Se este direccionamento non se combina con outras técnicas de acceso á memoria, o procesamento dunha instrucción implica as seguintes fases:

1. Tómase como dirección do primeiro elemento do vector de datos o valor contido no campo CD da instrucción.

2. A orde en que se encontra o elemento, dentro do vector de datos, vén determinado polo contido actualizado do rexistro RIN.

3. A dirección final determínase pola suma dos contidos do campo CD da instrucción e do valor contido no rexistro RIN, transfirindo o resultado ó bus de direccións, BA.

A actualización da información do rexistro RIN póde levarse a cabo de diversas formas:

1. Inicializándoo con todo ceros.

2. Incrementándo de forma automática, de un en un, ata alcanzar o valor tope que especifique o barrido do vector de datos. Debe quedar claro que o valor tope non tén que coincidir obrigatoriamente co último elemento do vector; esto dependerá da aplicación que desenvolva o programador.

Hai arquitecturas que complementan a indexación e a indirección, tal e como veremos noutro apartado.

2.4.6.- DIRECCIONAMENTO POR COMBINACIÓN DE VARIOS MODOS.

No exposto ata o de agora considerouse que se traballaba con calquer direccionamento en exclusiva. En realidade, esto non ocurre habitualmente nos ordenadores. Normalmente a dirección final determínase combinando varios modos de direccionamento.

As posibles combinacións de dous o máis direccionamentos conlevan sempre unha

orde,xeneralmente preestablecida en función da arquitectura do ordenador, para o tratamento dos diferentes direccionamentos especificados na instrucción.

(28)

a) Combinación do modo INDIRECTO e o INDEXADO.

a.1.- Modo INDIRECTO POST-INDEXADO.

Cando na execución dunha instrucción primeiro se interpreta a indirección e despois a indexación, o novo direccionamento coñécese por post-indexación. Primeiro accedemos á posición de memoria cuia dirección é a do valor contido no campo CD da instrucción. Ó valor contido na dirección anterior aplicámoslle a indexación con respecto ó rexistro RIN para obter a dirección final de memoria, dirección onde estará a información buscada.

A forma resumida de determinar a dirección final é a seguinte:

DF = [ [CD] + RIN ]

Na Figura 2.4.9 póde verse un esquema do secuenciamento da ruta de transferencia de información na execución da instrucción LOAD RA, [ [CD]+RIN ]; con este modo de direccionamento.

Unha aplicación habitual que utiliza este modo é a de realizar exploracións nunha táboa de datos, con chamada a unha soa instrucción.

a.2.- Modo INDIRECTO PRE-INDEXADO.

A outra combinación, menos utilizada, é a de interpretar primeiro a indexación e

despois a indirección, e coñécese por pre-indexación.

(29)

Na Figura 2.4.10 póde verse un esquema do secuenciamento da ruta de transferencia de información na execución da instrucción LOAD RA,[ [ CD + RIN ] ]; con este direccionamento.

Os ordenadores cuias arquitecturas posibilitan calquera dos dous modos referenciados anteriormente, teñen un bit no campo de MD, cuio contido lle indica á unidade de control a orde n seguir na execución.

b) Combinación do modo RELATIVO A BASE e INDIRECTO.

Este outro modo combina os dous modos referenciados. A dirección final

determínase da seguinte forma: en primeiro lugar, realízase a suma dos contidos do rexistro base, RB, co do campo CD, e posteriormente resólvese a indirección. É dicir, a suma dos valores de RB e CD darannos a dirección intermedia, DI, cuio contido nos dá a dirección final onde está a información buscada ou onde queremos almacenar un resultado.

Este caso queda resumido na forma de determinar a dirección final:

DF = [ RB + CD ] ; Destino ← [ DF ]

Este direccionamento resulta moi útil cando se desexa acceder a múltiples direccións de comezode varias zonas de datos. En certo modo é moi similar ó anterior.

(30)

2.5.- A MÁQUINA SIMPLE (MS). Iniciacion á programacion da mesma.

A MS é unha computadora elemental, concebida para fins exclusivamente didácticos. A súa simplicidade proporcionalle ós educadores unha ferramenta eficaz para introducir, dunha forma clara e práctica, os conceptos básicos sobre a estructura e a programación das computadoras. Contamos con un programa emulador da MS, escrito na linguaxe C.

A pretensión co manexo deste programa é demostrar prácticamente ó lector o sinxelo e atractivo que é comprender o funcionamento da estructura dunha computadora e a súa programación.

A MS só dispón de dous bloques: Unidade Central de Proceso e Memoria Principal. Carece do módulo dedicado a Entradas e Saídas, nun intento de facilitar o primeiro contacto coa informática. A UCP contén á Unidade de Control e Unidade de Proceso, tamén denominada Unidade de Cálculo ou tamén Camiño de Datos. A Memoria Principal consta de 128 posicións de 16 bits cada unha (128x16), que sirven para almacenar as instruccións e os datos. Figura 2.11.

2.5.1.- REPERTORIO DE INSTRUCCIÓNS E MODOS DE DIRECCIONAMENTO.

A simplicidade da MS chega a tal extremo que a súa Unidade de Control só é capaz de interpretar e executar catro instruccións máquina.

1. SUMAR o contido de dúas posicións de memoria. 2. COMPARAR os contidos de dúas posicións de memoria. 3. MOVER o contido dunha posición de memoria a outra.

(31)

Ademáis, a MS só dispón dun modo de direccionamento, que é o DIRECTO. As instruccións, os operandos e os resultados que manipula a MS almacénanse exclusivamente na Memoria Principal e, a única forma de referencialos, é proporcionando a dirección onde se atopan.

Como a Memoria tén 128 posicións, a dirección de cada unha delas exprésase con 7 bits, xa que 27 = 128.

O formato xeral de todas elas, na linguaxe ensambladora, é o seguinte:

[ Etiqueta: ] Nemónico Fonte, Destino

Onde tanto o operando Fonte coma o Destino se poden expresar como un valor hexadecimal de dous díxitos ou unha etiqueta, representando en ámbolos casos unha dirección de memoria, xa que só posúe o modo de direccionamento directo.

O campo Etiqueta é opcional, pero en caso de figurar debe ir acompañado dos dous puntos, non podendo existir ningún espacio en branco entre o último caracter da etiqueta e os citados dous puntos.

Descríbense as características fundamentais das catro instruccións da MS.

2.5.1.1.- SUMA (ADD).

Esta instrucción, cuio nemónico é ADD, suma o contido de dúas posicións de Memoria, unha denominada operando Fonte (F), e outra operando Destino (D), depositando o resultado no operando destino.

A forma de expresar esta instrucción na linguaxe Ensambladora é:

ADD F, D

Gráficamente pódese representar o cometido desta instrucción:

[D] ← [D] + [F]

D e F son direccións da Memoria, e cando se representan entre paréntesis faise referencia ó “contido” de ditas posicións direccionadas. (D) representa o contido da dirección D da Memoria.

A MS posúe un sinalizador ou “flag”, chamado FZ, que é un bit contido nun flip-flop, que se pón automáticamente a 1 cando o resultado da anterior operación aritmética ou lóxica que se executou foi cero. En caso contrario, FZ = 0. No caso de executar a instrucción ADD, o comportamento de FZ é o seguinte:

(32)

EXEMPLO

Sabendo que o contido da dirección 25 decimal da Memoria é 0000 0000 1111 1111 binario e a 35 contén o mesmo valor, averiguar os cambios que se producen en ditas posicións ó executar a instrucción ADD 35,25. ¿Qué valor tomará FZ?

SOLUCION

A instrucción ADD 35,25 suma o contido das dúas direccións de Memoria que acompañan ó nemónico e deposita o resultado na dirección 25, que é o destino.

[25]: 00000001 11111110 [35]: 00000000 11111111 FZ = 0

2.5.1.2.- MOVER (MOV).

Transfire o contido da posición da Memoria, direccionada polo operando fonte F, á posición D, direccionada polo destino. O efecto é copiar na dirección destino, D, o contido da dirección fonte, F. O nemónico desta instrucción é MOV.

MOV F, D ; [D] ← [F]

A execución desta instrucción non afecta o sinalizador FZ, de forma que permanecerá co valor que tiña anteriormente.

EXEMPLO

(33)

Despois de executar o seguinte programa:

MOV 18, 19 MOV 19, 1A ADD 1B, 19

a) ¿Cál é o contido das posicións da figura 2.12? b) ¿Cál é o valor de FZ?

SOLUCION

a) (18) = 00000000 11111111 00FFh (19) = 01010110 01010100 5654h (1A) = 00000000 11111111 00FFh (1B) = 01010101 01010101 5555h

b) FZ = 0

2.5.1.3.- COMPARACION (CMP).

Compara o contido das posicións de memoria (D) e (F) sen producir outro resultado que a actuación sobre o sinalizador FZ, que pasa a conter un 1 se ambos contidos son iguais e un 0, no caso contrario. O nemónico é CMP.

CMP F, D ; [F] - [D] (NON ALMACENA O RESULTADO)

FZ = 1 se [F] - [D] = 0 FZ = 0 se [F] - [D] <> 0

Obsérvese que o resultado da resta [F] - [D]pérdese e non se almacena na posición D.

EXEMPLO

Na figura 2.13 móstranse os contidos dunhas posicións da Memoria da MS.

Sabendo que os contidos mostrados na figura 2.13 obtéñense despois de executar na

MS o seguinte programa, onde os valores numéricos están expresados en notación hexadecimal:

MOV 36, 37 ADD 37, 38 MOV 38, 39 CMP 39, 3A

(34)

SOLUCION a)

(38) ← (38)Final – (37)

(38) = 11111111 00000000

b) FZ = 0

2.5.1.4.- SALTO ou BIFURCACIÓN (BEQ).

Nesta instrucción comézase comprobando o valor de FZ. Se vale 1, pásase a executar a instrucción que está almacenada na dirección de memoria dada polo operando destino D. En caso contrario, execútase a seguinte instrucción despois da de SALTO. Con esta instrucción inténtase romper a secuencia ordenada das instruccións do programa. Para que así suceda requírese que se cumpla unha condición: que FZ =1.

A MS dispón dun rexistro chamado Contador de Programa, PC, encargado de conter a dirección da seguinte instrucción que vai a executar a máquina. Cas restantes instruccións o PC incrementábase unha unidade cada vez que se executaba esa instrucción, pasando a direccionar a instrucción situada na seguinte posición do espacio de Memoria. Esta instrucción de SALTO CONDICIONAL, cuio nemónico é BEQ (Bifurcación se é igual), actúa sobre o PC da seguinte forma:

BEQ D ; Se FZ = 1, entonces (PC) ← D

; Se FZ = 0, entonces (PC) ← (PC) + 1.

(35)

EXEMPLO

Pídese confeccionar un programa na linguaxe Ensambladora da MS para realizar unha multiplicación, sabendo que o multiplicando (N1) está depositado na dirección de Memoria 100 e o multiplicador (N2) na 101. O producto (PROD) debe quedar depositado na dirección 102. O valor das direccións está dado en decimal.

O programa vai a requerir un contador (CON) que leve a conta do número de veces que se vai sumando o multiplicando. Para este fin destínase a posición da Memoria con dirección 103, que inicialmente terá un 0.

O programa necesitará a participación de dúas constantes, que tamén se depositan en dúas direccións de Memoria. Así, na dirección 104 hai almacenado o valor 1 e na 105, o valor 0. Figura 2.14.

SOLUCIÓN.

Se escribisemos o pseudocódigo da multiplicación, tendo en conta que para multiplicar dous valores podemos sumar un deles consigo mesmo tantas veces como indique o outro valor, éste quedaría da seguinte forma:

inicio

PROD ← 0 CON ← 0

repetir mentras( CON < N2 ) PROD ← PROD + N1 CON ← CON + 1 fin_repetir

fin

(36)

DIRECCIÓN ETIQUETA NEMÓNICO FONTE DESTINO COMENTARIOS

0 INICIO: MOV 105 102 ; PROD  0

1 MOV 105 103 ; CON  0

2 BUCLE: CMP 103 101 ; mentras CON < N2

3 BEQ 8 8 ; se FZ=1, PC= 8

4 ADD 100 102 ; PROD  PROD + N1

5 ADD 104 103 ; CON  CON + 1

6 CMP 50 50 ; sempre FZ=1

7 BEQ 2 2 ; salto a PC= 2

8 FIN: BEQ 8 8

O programa tén oito instruccións que ocupan as oito primeiras direccións da Memoria, desde a 0 ata a 7.

As “etiquetas” son unha axuda para a confección de programas na linguaxe Ensambladora. Colócanse diante dunha instrucción e sirven para referencia-a sen ter que expresar a dirección da Memoria que ocupan. Desta maneira, a instrucción BEQ 8, pódese poñer en Ensamblador como “BEQ FIN” e a BEQ 2 podíase sustituir por “BEQ BUCLE”. Tamén se poden utilizar as etiquetas para referenciar a dirección de memoria onde está un dato, podendo, entonces empregar a mesma no correspondente campo de operando, no lugar do valor concreta da dirección onde se atopa o mesmo.

Unha etiqueta é, en realidade, un nome simbólico que lle dá o programador a unha dirección de memoria.

As dúas últimas instruccións do programa de multiplicación para a MS implementan un SALTO INCONDICIONAL, que se produce sempre debido a que a instrucción CMP 50,50 é unha comparación do contido dunha posición de memoria consigo mesma, o que orixina que FZ sempre sexa 1 (FZ = 1).

2.5.2.- O FORMATO DAS INSTRUCCIÓNS DA MS.

Todas as instruccións da MS dispoñen de dous operandos, o fonte e o destino, con excepción da instrucción BEQ, que só precisa o operando destino. Para unificar o formato, todas elas se expresan con dous operandos, anque con BEQ o campo destinado ó operando fonte carece de significado.

No formato das instruccións existen os seguintes campos:

(37)

O campo para o CO consta de 2 bits (CO1-CO0), cos que se selecciona unha das catro instruccións, dacordo ca seguinte asignación:

15 14 13 . . . . . 0

CO1 CO0 INSTRUCCIÓN

0 0 ADD

0 1 CMP

1 0 MOV

1 1 BEQ

Como o único modo de direccionamento da MS é o directo, no que se expresan os operandos mediante a dirección da posición de Memoria que os contén, o campo do formato que os referencia consta de 7 bits, que se corresponden co ancho do bus de direccións da Memoria, sabendo que ésta posúe 128 posicións de 16 bits cada unha. Na figura 2.15 móstraseo formato das instruccións da MS.

Na instrucción BEQ, os 7 bits que ocupan o campo do operando fonte son indiferentes, anque a efectos de codificación vámolos a poñer sempre a ceros.

EXEMPLO

Obter os formatos binarios que corresponden ás instruccións do seguinte programa para a MS. Os operandos están expresados en notación decimal.

MOV 105, 106 CMP 106, 107 BEQ 100

SOLUCIÓN.

ENSAMBLADOR CO FONTE DESTINO

MOV 105, 106 10 1101001 1101010 CMP 106, 107 01 1101010 1101011

BEQ 100 11 XXXXXXX 1100100

(38)

2.6.-

A Máquina baseada no 8085

(M8085). Unha mellora da MS.

A MS é un recurso didáctico orientado a introducir a estructura e a programación das computadoras dunha forma fácil e práctica. Sen embargo, tanto a nivel hardware como software, carece de recursos importantes que potencian ambas áreas nos procesadores modernos.

En canto á arquitectura da MS, botase en falta a existencia dun Banco de Rexistros na Unidade de Proceso ou Camiño de Datos, para poder almacenar neles a información que se manexa frecuentemente. Na MS toda a información reside na Memoria Principal, o que fai imprescindibel ter que sair da UCP, a buscar cualquer operando á Memoria a través dos buses. Estas saídas ó exterior da UCP consumen bastante tempo, que podería reducirse se existise un conxunto de rexistros onde se almacenasen os datos máis usados no programa. O aforro de tempo en localizar estes datos incrementaría notablemente o rendemento da máquina. O tempo necesario para acceder á información contida nos rexistros internos da UCP é notablemente inferior ó de acceso á Memoria externa.

EXEMPLO

Unha computadora que traballa a 100 MHz está executando un programa de 1.000 instruccións, que require ler/escribir 100 datos.

a) Se só se dispón da Memoria Principal para conter os datos obténse un CPI= 10. Tendo en conta que o tempo de acceso á Memoria é de 100 ns, averiguar o tempo total que se tarda en executar dito programa.

b) Cánto tempo se tarda en executar dito programa se se dota ó procesador dun banco de rexistros para conter os datos máis frecuentes e se reduce o CPI a 6. O tempo de acceso ós rexistros é de 10 ns.

SOLUCION a)

tCPU = Nº de instruccións x CPI x T(Tempo de ciclo ou período)

tCPU = 1.000 instr x 10 ciclos/instr x 10 ns/ciclo = 100.000 ns b)

tCPU= 1.000 instr x 6 ciclos/instr x 10 ns/ciclo = 60.000 ns

Tampouco é moi potente o soporte lóxico da MS. O escaso número de instruccións, unido á existencia dun único modo de direccionamento, limita a flexibilidade da programación e fai que os programas sexan moi laboriosos e pouco optimizados en canto a tamaño e tempo de execución.

Para dar unha idea práctica das ventaxas que se obteñen dispoñendo de varios modos de direccionamento, propónse o seguinte exemplo.

EXEMPLO

(39)

a) Se a computadora só dispón do modo de direccionamento directo absoluto e tódalas instruccións fan referencia a dous operandos, que hai que ir a buscar na Memoria, o CPI=10. Calcular o tempo de execución do programa.

b) Se se engade o modo de direccionamento inmediato, co que se proporciona directamente o valor dun operando sen ter que ir á Memoria, redúcese o número de ciclos que se tarda en executar cada instrucción en un 40%, obténdose un CPI = 6. Calcular o tempo que tarda en executarse o programa.

SOLUCION

a) t = Nºde instruccións x CPI x T(Tempo de ciclo ou período) tCPU = 100 instr x 10 ciclos/instr x 50 = 50.000 ns.

b) tCPU = 100 instr x 6 ciclos/instr x 50 ns/ciclo = 30.000 ns.

Para ampliar os conceptos informáticos que procura a MS proponse unha nova computadora, tipo CISC, con un repertorio de instruccións reducido, pero máis completo que o da Máquina Simple (MS). Dispón de novos modos de direccionamento dos operandos e, na Unidade de Proceso, implementouse un Banco de Rexistros. Mellorouse a ALU para que sexa capaz de realizar novas operacións lóxicas e aritméticas e aumentouse a capacidade da Memoria Principal, que pasa a ter 65.536 posicións (64 K) de 8 bits cada unha. A esta computadora chamámoslle Máquina 8085, abreviadamente M8085. Un esquema xeral ofrécese na figura 2.16.

Figura 2.16.- Esquema xeral da Máquina baseada no 8085, xunto co esquema interno do mesmo.

(40)

A Memoria Principal posúe 64 K posicións de 8 bits e para direccionala precísanse 16 bits, que é o tamaño do bus de direccións da computadora, anque debido á limitación provocada polo número de patiñas do chip, están multiplexadas no tempo as oito liñas do Bus de Datos, D0-D7, coas oito liñas de menos peso do Bus de Direccións, A0-A7. Significa que polas mesmas liñas físicas circula, en certos momentos, un dato e noutros o valor das oito liñas de menor peso dunha dirección de memoria.

Os rexistros.

A Máquina baseada no procesador 8085 posúe oito rexistros de 8 bits e dous de 16, accesibles polo programador. Ademáis, seis dos rexistros de 8 bits, póden traballar emparellados, comportándose como tres de 16 bits. Ver figura 2.17.

Figura 2.17.- Rexistros internos do 8085.

Rexistros xerais de traballo.

Forman un conxunto de seis rexistros de 8 bits: B, C, D, E, H e L. Póden funcionar independentemente ou formando parella, neste caso compórtanse como rexistros de 16 bits. O B póde emparellarse co C e a parella recibe o nome de B. O rexistro D emparellase co E e chámaselle D á parella de rexistros. O rexistro H póde funcionar emparellado co L e a esta parella se lle denomina M porque adoita empregarse para apuntar a unha dirección da Memoria que contén un dato (actúa como Rexistro de Direccións de Datos).

(41)

Acumulador.

É un rexistro de 8 bits cuio contido participa na maioría das operacións lóxicas e aritméticas que desenrola a ALU. A súa misión nelas é a de conter un operando antes da operación e o resultado, despois.

Contador de Programa.

Trátase de un rexistro-contador de 16 bits cuio contido sempre é a dirección de Memoria onde se encontra o código da próxima instrucción que se vai a executar. Alimenta ao bus de direccións na fase de búsqueda de tódalas instruccións e, normalmente, incrementase cada vez que sae o seu contido. Abreviadamente recoñéceselle por PC.

Apuntador ou Punteiro de Pila SP (en inglés Stack Pointer).

É un rexistro de 16 bits, representado abreviadamente por SP, cuio contido é a dirección da Memoria corrrespondente á posición superior, ou sexa, á cima ou cabeceira da zona reservada para a Pila. A Pila úsase automáticamente naquelas instruccións e interrupcións nas que hai que gardar a dirección de retorno temporalmente.

Cada vez que se salva ou se carga un byte na Pila, o SP decrementase nunha unidade para seguir apuntando á nova cima. Se se saca da Pila un byte, o SP incrementase nunha unidade. Se o valor que se introduce ou se saca da Pila tén unha lonxitude maior que un byte, o SP decrementase ou incrementase tantas unidades como bytes se manexaran. Figura 2.18.

(42)

EXEMPLO.

Sabendo que inicialmente o valor do punteiro da Pila SP= 0100h; se se carga nela o Acumulador, o rexistro B, o C e, finalmente, o Contador de Programa,

a) ¿Cál é o novo valor do SP?

b) ¿Cál será o valor que tome o SP, se posteriormente se recupera ou se saca da Pila o valor do rexistro PC?

SOLUCIÓN

a) SP = 00FB h b) SP = 00FD h

Rexistro de Estado.

É un rexistro de 8 bits, dos cales cinco actúan como sinalizadores dalgunha condición especial do resultado da última operación que desarrollou na ALU. Figura 2.19.

Figura 2.19.- Situación de cada un dos sinalizadores do Rexistro de Estado do 8085.

A misión de cada sinalizador é a seguinte:

CY: Acarreo.

CY = 1 cando, ao realizar unha suma aritmética, se produce acarreo ao sumar os dous bits de máis peso dos operandos.

AC: Acarreo Auxiliar.

AC funciona exactamente igual que CY, pero cos cuartos bits dos operandos. Emprégase nas operacións con números expresados en BCD, no que cada díxito vén expresado por 4 bits.

S: Signo.

(43)

Z: Cero.

Z = 1 cando o resultado da operación que implicaba a instrucción en curso foi 0. En caso contrario, Z = 0.

P: Paridade.

P= 1 cando o número de úns do resultado da operación é par. Se o número de úns do resultado é impar, P= 0.

EXEMPLO

Encargámoslle ao 8085 realizar a suma binaria de dous operandos: 1010 1101 e 1000 0100.

a) ¿Qué valor quedará depositado no Acumulador, trala operación? b) ¿Qué valor tomarán os sinalizadores CY, AC, Z, P e S?

SOL UCIÓN

a) 0011 0001

b) CY= 1; AC= 1; Z= 0; S= 0 e P= 0.

A Unidade Aritmético-Lóxica.

A ALU encárgase de conter os operadores precisos para desenvolver as operacións lóxicas, aritméticas, de desprazamento e rotación que necesiten as instrucións.

Ún dos operandos da ALU procede do Acumulador, sendo tamén neste rexistro onde se deposita o resultado. O outro operando sitúase noutro rexistro auxiliar, á entrada dos circuitos operadores da ALU, rexistro que non é accesible ao programador.

O feito de que o Acumulador participe dobremente nas instruccións do 8085 simplifica notablemente o formato das instruccións, nas que só hai que especificar o segundo operando.

2.6.1.- AS INSTRUCCIÓNS DA MÁQUINA 8085 (M8085).

Vamos a ver o repertorio de instruccións da M8085, xogo bastante reducido, anque algunhas delas dan lugar a diversas variantes según os rexistros que se utilizan como operandos. O número de instruccións que posúe fai que poidamos falar dunha computadora tipo CISC.

Figure

Figura 2.4.- Contido das 16 posicións da  Memoria Principal.
Figura 2.16.-   Esquema  xeral  da  Máquina  baseada  no  8085,  xunto  co  esquema  interno  do
Figura 2.17.- Rexistros internos do 8085.
Figura 2.18.-  Cando se almacena na pila un valor de 16 bits, o punteiro SP decreméntase en
+7

Referencias

Documento similar