Está en la página 1de 26

ORG. Y ARQ.

DE COMPUTADORAS - CAP 3
ITZEL DE JUÁREZ
Cada instrucción debe contener la información que necesita El CPU
para su ejecución:

• Código de operación. Especifica la operación a realizar (suma,


resta, E/S, etc.). La operación se indica mediante un código binario.
• Referencia a operandos fuente (dirección). La operación puede
involucrar uno o más operandos fuentes, es decir, operandos que
son entradas para la instrucción.
• Referencia al operando resultado (dirección). La operación puede
producir un resultado.
• Referencia a la siguiente instrucción. Le indica al CPU de donde va
a captar la siguiente instrucción tras completarse la ejecución de
la instrucción actual. La siguiente instrucción a captar está en
memoria principal.
o En la mayoría de los casos, la siguiente instrucción sigue
inmediatamente a la instrucción en ejecución.
o En tales casos no hay referencia explícita a la siguiente
instrucción.
o Cuando sea necesaria una referencia explícita, debe
suministrarse la dirección de memoria

ORG. Y ARQ. DE COMPUTADORA - CAP 3 ITZEL S. DE JUÁREZ 2


Operandos de una instrucción
• Los operandos fuente y resultado pueden estar en alguna de las siguientes áreas:

• Memoria principal. En este caso debe indicarse la dirección de la celda que contiene el
operando

• Registro del CPU. Dependiendo de la arquitectura, el CPU contiene uno o más registros
que pueden ser referenciados por las instrucciones de máquina. Si sólo existe un registro,
la referencia al mismo puede ser implícita. Si existe más de uno, cada registro tendrá
asignado un número único, y la instrucción debe contener el número del registro deseado.

• Dispositivo de E/S. La instrucción debe especificar el módulo y dispositivo de E/S para la


operación. En el caso de E/S asignadas en memoria, se dará una dirección de memoria.

• Dentro de la Instrucción misma: Como es el caso de un operando inmediato.

ORG. Y ARQ. DE COMPUTADORA - CAP 3 ITZEL S. DE JUÁREZ 3


Direccionamiento de Operandos
• Hay dos aspectos importantes que debemos
tomar en cuenta.
• El primero es como se especifica la
dirección de un operando o referencia.
• El segundo como se organizan los bits de
una instrucción para definir las direcciones
de los operandos y la operación que realiza
dicha instrucción.

ORG. Y ARQ. DE COMPUTADORA - CAP 3 ITZEL S. DE JUÁREZ 4


• Es un conjunto de especificaciones que indican
como debe ser interpretado el patrón de bits de una
instrucción de máquina para logra su ejecución
dentro del computador.
• Define la descripción en bits de una instrucción en
términos de las distintas partes que la componen.
• Incluyen un código de operación (codop).
o Incluyen (de forma implícita o explícita) ninguno o
algunos operandos.
o Normalmente, en los repertorios de instrucciones
se emplea más de un formato de instrucción.

5
Criterios para el diseño de los formatos de las instrucciones

• En algunas máquinas todas las instrucciones tienen la


misma longitud; en otras hay instrucciones con distintas
longitudes.

• La longitud de las instrucciones puede ser menor, igual o


mayor que el tamaño de la palabra.

• Exigir que todas las instrucciones posean la misma


longitud hace más sencillo su decodificación pero puede
desperdiciarse espacio.

• En el momento que se diseña una nueva computadora se


deben escoger los formatos de las instrucciones y para ello
se deben tomar en cuenta varios factores.
6
Criterios para el diseño de los formatos de las
instrucciones

•Por un lado, si la nueva computadora llega a tener un


éxito comercial, el conjunto de instrucciones podría
sobrevivir 20 años o más.

o En este caso, la capacidad para añadir nuevas


instrucciones y aprovechar otras oportunidades
que surjan durante el tiempo de vida del diseño
de ese computador tiene gran importancia.

7
• Esta decisión afecta, y se ve afectada por:
o El tamaño de la memoria.
o La organización de la memoria.
o La estructura del bus.
o La complejidad de la CPU.
o La velocidad de la CPU.

• Se debe encontrar un equilibrio entre el deseo de


disponer de un repertorio de instrucciones potente
y la necesidad de ahorrar espacio.

8
Todas las
instrucciones
poseen la misma
longitud

9
Un aspecto difícil es cómo
asignar los bits en un formato.
Un mayor números de códigos
de operación reduce el número
de bits disponibles para el
direccionamiento.

10
• Número de modos de direccionamiento.
• Número de operandos.
• Registros frente a memoria.
• Número de conjuntos de registros.
• Rango de direcciones.
• Granularidad de las direcciones.

11
Las instrucciones que hacen
referencia a un registro pueden
contener tres bits que indican el
registro particular y el bit-w que
señala si el ancho es de un byte (0) o
de una palabra (1). Además, solo
ciertas instrucciones pueden accesar
los registros de segmentos.

12
Es un tipo de lenguaje de bajo nivel
utilizado para escribir programas
informáticos, y constituye la
representación más directa del código
máquina específico para cada arquitectura
de computadoras legible por un
programador. Fue usado principalmente en
los inicios del desarrollo de software,
cuando aún no se contaba con los
potentes lenguajes de alto nivel.

13
El uso de comentarios a lo largo de
un programa puede mejorar su
claridad en especial en este lenguaje,
donde el propósito de un conjunto de
instrucciones con frecuencia no es
claro.

14
FORMATO GENERAL DE DE
CODIFICACIÓN
Las directivas de impresión del
listado de un programa, incluyendo la
inicialización y la terminación de su
ejecución. Los dos programas
básicos de programas ejecutables
son EXE. Y COM.

15
REQUISITOS PARA DEFINIR
ELEMENTOS DE DATOS:
El ensamblador permite la definición
de elemento de varias longitudes de
acuerdo con el conjunto de directivas
que defina datos.

16
Primero se debe diseñar los algoritmos que
utilizará el programa, luego se realiza su
codificación en algún lenguaje de programación,
luego se traduce a código de máquina (Cuando se
trabaja en asembler, éste proceso se llama
ensamblar, cuando es otro lenguaje se llama
compilar) y al formato que entiende el programa
que cargará el programa a crear, se prueba el
programa y si hay errores se depura (Consiste en
eliminarle los errores al programa), cuando hay
un error generalmente se vuelve a repetir el paso
1 o el 2.
17
Consiste en la traducción del código fuente en
código objeto y la generación de un archivo
objeto .OBJ (objeto) o modulo. Una de las tareas
del ensamblador es calcular el desplazamiento de
cada elemento en el segundo de datos y de cada
instrucción en el segmento de código. El
ensamblador también crea un encabezado al
frente del modulo .OBJ generado; parte del
encabezado tiene información acerca de
direcciones incompletas. El modulo objeto aún no
está en forma ejecutable.

18
Implica convertir el modulo .OBJ en un modulo de
código de máquina .EXE (ejecutable). Una de las
tareas del enlazador es combinar los programas
ensamblados en forma separada en un modulo
ejecutable.

El enlazado es después del ensamblaje y tiene


que ejecutarse antes de ejecutar el programa, este
sirve para buscar las dependencias hacia otros
programas. La función del enlazador es reunir
procedimientos traducidos por separado y
enlazados para que se ejecuten como una unidad
llamada programa ejecutable.

19
El enlazador fusiona los espacios de
direcciones de los módulos objeto en un
solo espacio de direcciones lineal
siguiendo estos pasos:

• Construcción de una tabla con todos los


módulos objeto y sus longitudes.

• Con base a esa tabla, se asigna una


dirección de inicio a cada módulo objeto.

20
El cargador conoce donde está el
programa a punto de ser cargado,
puede completar las direcciones
indicadas en el encabezado que
estaban incompletas. El cargador
desecha el encabezado y crea PSP
inmediatamente antes del programa
cargado en memoria.

21
La ejecución, una vez enlazado y
ensamblado un programa, ahora puede al
fin ejecutarlo. Si el archivo .EXE está en la
unidad por omisión, podría usar el dos para
cargarlo para su ejecución introduciendo:

PO5ASM1.EXE o PO5ASM1

22
Si se omite la extensión del archivo, es dos
supone que es .EXE, sin embargo, ya que
este programa no produce resultados
visibles, se sugiere que lo ejecute con
DEBUG y avance paso por paso en su
ejecución con comandos de rastreo(T). se
teclean lo siguiente incluyendo la extensión
.EXE:

DEBUG D: P05ASM1 .EXE

23
DEBUG carga el modulo del programa .EXE y muestra su
indicación. Para ver el segmento de pila teclee:
D SS: O
 
La pila solo contiene cero ya que fue la forma de inicializarla.
Para ver el segmento de datos, teclee:
D DS: O
 
La operación muestra tres elementos de datos FA 00 7D 00 00
00, con los bits de cada palabra en orden inverso. Para ver el
segmento de código teclee:
D CS: O

24
Compare el código de maquina mostrado con el de
segmento de código en el listado del ensamblado:
B8 - - - - 8ED8A10000
 
En este caso el listado de ensamblado no muestra
de manera precisa el código de máquina, ya que el
ensamblador no conoce la dirección del operando
de la primera instrucción.

25
• https://silvamondragon.wordpress.com/2010/
11/29/4-2-2-conjunto-de-instrucciones/

También podría gustarte