0% encontró este documento útil (0 votos)
24 vistas4 páginas

Fac TP4

La práctica se centra en el aprendizaje del lenguaje assembly SX88 y los modos de direccionamiento, así como en la escritura de programas y el análisis de su funcionamiento en el simulador VonSim. Incluye ejercicios sobre instrucciones de transferencia de datos, operaciones aritméticas y lógicas, y el uso de subrutinas. Además, se plantean cuestionarios para evaluar la comprensión de los conceptos y el comportamiento de los programas escritos.

Cargado por

Juan Ramos
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
24 vistas4 páginas

Fac TP4

La práctica se centra en el aprendizaje del lenguaje assembly SX88 y los modos de direccionamiento, así como en la escritura de programas y el análisis de su funcionamiento en el simulador VonSim. Incluye ejercicios sobre instrucciones de transferencia de datos, operaciones aritméticas y lógicas, y el uso de subrutinas. Además, se plantean cuestionarios para evaluar la comprensión de los conceptos y el comportamiento de los programas escritos.

Cargado por

Juan Ramos
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Fundamentos de Arquitectura de Computadoras 2025

Práctica 4

Instrucciones y programación para SX88


Objetivos de la práctica:
●​ Comprender los diferentes modos de direccionamiento, sus ventajas y desventajas.
●​ Dominar las instrucciones básicas del lenguaje assembly SX88 y del simulador VonSim.
●​ Escribir programas utilizando instrucciones de la arquitectura SX88.
●​ Comprender la utilidad y el funcionamiento de las subrutinas y del ciclo de instrucción.
Bibliografía:
●​ Apunte 4 de la cátedra, “Lenguaje Assembly”.
●​ Set de Instrucciones de SX88.

ORG​ 1000h​ 1) Este programa utiliza una instrucción de


NUM0 DB​ 0CAh​ transferencia de datos (mnemónico MOV) con
NUM1 DB​ 0​ diferentes modos de direccionamiento para referenciar
NUM2 DW​ ?​ sus operandos. Ejecutar y analizar el funcionamiento de
NUM3 DW​ 0ABCDh​ cada instrucción en el Simulador VonSim observando el
NUM4​ DW​ ? flujo de información a través del bus de datos, el bus de
direcciones, el bus de control, el contenido de
ORG​ 2000H registros, de posiciones de memoria, operaciones en la
MOV​ BL, NUM0​
ALU.
a.​ Explicar detalladamente qué hace cada
MOV​ BH, 0FFh​
instrucción con el mnemínico MOV del
MOV​ CH, BL​
programa anterior, en función de sus operandos y
MOV​ AX, BX​ su modo de direccionamiento.
MOV​ NUM1, AL​ b.​ Confeccionar una tabla que contenga todas las
MOV​ NUM2, 1234h​ instrucciones del programa, el modo de
MOV​ BX, OFFSET NUM3​ direccionamiento, la dirección origen y la
MOV​ DL, [BX]​ dirección destino y el contenido final del
MOV​ AX, [BX]​ operando destino de cada una de ellas.
MOV​ BX, 1006h​
MOV​ WORD PTR [BX], 0CDEFh​
HLT​
END

ORG 1000H​ ​ ORG​ 2000H​ 2) Este programa utiliza


NUM0​ DB 80h​ ​ MOV ​ AL, NUM0​ diferentes instrucciones de
NUM1​ DB 200​ ​ ADD ​ AL, AL​ procesamiento de datos
NUM2 ​ DB -1​ ​ INC ​ NUM1​ (instrucciones aritméticas y
BYTE0 DB 01111111B​ ​ MOV ​ BH, NUM1​ lógicas). Analice el
BYTE1 DB 10101010B​ ​ MOV ​ BL, BH​ comportamiento de ellas y
​ ​ DEC ​ BL​ ejecute el programa en
​ SUB ​ BL, BH​ VonSim. Conteste el
​ MOV ​ CH, BYTE1​
cuestionario a continuación.
​ AND ​ CH, BYTE0​
​ NOT ​ BYTE0​
​ OR ​ CH, BYTE0​
​ XOR ​ CH, 11111111B​
​ HLT
​ END

Práctica 4 1
Versión 2.0
Fundamentos de Arquitectura de Computadoras 2025
Práctica 4

Cuestionario:
a.​ ¿Cuál es el estado de los FLAGS después de la ejecución de las instrucciones ADD AL, AL y SUB BL, BH del
programa anterior? Justificar el estado (1 ó 0) de cada uno de ellos. ¿Dan alguna indicación acerca de la
correctitud de los resultados?
b.​ ¿Qué cadenas binarias representan a NUM1 y NUM2 en la memoria del simulador? ¿En qué sistemas de
representación están expresados estos valores?
c.​ Confeccionar una tabla que indique para cada operación aritmética o lógica del programa, el valor de sus
operandos, en qué registro o dirección de memoria se almacenan y el resultado de cada operación.

ORG 1000H​ 3) Este programa implementa un contador utilizando una


INI ​ DB 0​ instrucción de transferencia de control. Analice el
FIN ​ DB 15​ funcionamiento de cada instrucción y en particular las del lazo
repetitivo que provoca la cuenta.

Cuestionario:
ORG​ 2000H​ a.​ ¿Cuántas veces se ejecuta el lazo? ¿Cuántas veces se
MOV​ AL, INI​ ejecuta la instrucción de salto?
MOV​ AH, FIN​ b.​ Analice y ejecute el programa reemplazando la instrucción
SUMA: INC​ AL​ de salto condicional JNZ SUM por cada una de las
CMP​ AL, AH​ siguientes, indicando en cada caso el contenido final del
registro AL:
JNZ ​ SUM​
JS SUM
HLT​ JZ SUM
END JMP SUM

4) El siguiente programa suma todos los elementos de una tabla almacenada a partir de la dirección 1000H de la memoria
del simulador. Analice el funcionamiento y determine el resultado de la suma. Comprobar resultado en VonSim.
¿Qué modificaciones deberá hacer en el programa para que el mismo almacene el resultado de la suma en la celda
etiquetada TOTAL?

ORG 1000H​ ORG 2000H​


TABLA DB 2,4,6,8,10,12,14,16,18,20​ MOV AL, 0​
FIN​ DB ?​ MOV CL, OFFSET FIN - OFFSET TABLA​
TOTAL​ DB ?​ MOV BX, OFFSET TABLA​
MAX​ DB 13​ SUMA:​ ADD AL, [BX]​
INC BX​
DEC CL​
JNZ SUMA​
HLT​
END

5) Escribir un programa que, utilizando las mismas etiquetas de memoria y datos que el programa del punto anterior,
determine cuántos de los elementos de TABLA son menores o iguales que MAX. Dicha cantidad debe almacenarse en
la celda de memoria etiquetada como TOTAL.

6) Realice las sumas (ADD) y restas (SUB) del ejercicio 6 de la práctica 2 utilizando un programa SX88. Verifique
resultados, flags y la representación en memoria de cada dato. ¿Cuál es la relación entre esta representación, la
interpretación y los flags?

Práctica 4 2
Versión 2.0
Fundamentos de Arquitectura de Computadoras 2025
Práctica 4

ORG 2000H​ 7) Analice este programa y, considerando la tabla (arreglo) que


MOV AX, 1​ genera, responda:
MOV BX, 1000h​ a.​ ¿Cómo están relacionados sus elementos entre sí?
CARGA: MOV [BX], AX​ b.​ ¿A partir de qué dirección de memoria se crea la tabla?
ADD BX, 2​
¿Cuál es la longitud de cada uno de sus elementos
ADD AX, AX​
(medida en bits)?
CMP AX, 200​
c.​ ¿Cuántos elementos tiene la tabla una vez finalizada la
JS CARGA​
HLT​ ejecución del programa? ¿De qué depende esta cantidad?
END

8) Escribir un programa que genere una tabla a partir de la dirección de memoria almacenada en la celda DIR con los
múltiplos de 5 desde cero hasta MAX.

9) Escribir un programa que, dado un número X, genere un arreglo con todos los resultados que se obtienen hasta llegar a
0, aplicando la siguiente fórmula: si X es par, se le resta 7; si es impar, se le suma 5, y al resultado se le aplica
nuevamente la misma fórmula. Ej: si X = 3 entonces el arreglo tendrá: 8, 1, 6, -1, 4, -3, 2, -5, 0.

10) Dada la frase "Organización y la Computación", almacenada en la memoria, escriba un programa que determine
cuántas letras ‘a’ seguidas de ‘c’ hay en ella.​

11) Los siguientes programas realizan la misma tarea, en uno de ellos se utiliza una instrucción de transferencia de
control con retorno. Analícelos y compruebe la equivalencia funcional. Conteste el cuestionario a continuación.

ORG 1000H​ ORG 1000H​


NUM1 DB 5H​ NUM1 DB 5H​
NUM2 DB 3H​ NUM2 DB 3H​
​ ​
ORG 2000H​ ORG 3000H​
MOV AL, NUM1​ SUB1: CMP AL, 0​
CMP AL, 0​ JZ FIN​
JZ FIN​ CMP CL, 0​
MOV AH, 0​ JZ FIN​
MOV DX, 0​ MOV AH, 0​
MOV CL, NUM2​ MOV DH, 0​
LOOP: CMP CL, 0​ LAZO: ADD DX, AX​
JZ FIN​ DEC CL​
ADD DX, AX​ JNZ LAZO​
DEC CL​ FIN: RET​
JMP LOOP​ ​
FIN: HLT​ ORG 2000H​
END MOV AL, NUM1​
MOV CL, NUM2​
CALL SUB1​
HLT​
END

Práctica 4 3
Versión 2.0
Fundamentos de Arquitectura de Computadoras 2025
Práctica 4

Cuestionario:
a.​ ¿Cuál es la tarea realizada por ambos programas?
b.​ ¿Dónde queda almacenado el resultado?
c.​ ¿Cuál programa realiza la tarea más rápido? ¿El tiempo de ejecución de la tarea depende de los valores
almacenados en NUM1, en NUM2, en ambos lugares o en ninguno?
d.​ Explique detalladamente todas las acciones que tienen lugar al ejecutarse la instrucción CALL SUB1.
e.​ ¿Qué operación se realiza con la instrucción RET?, ¿cómo sabe la CPU a qué dirección de memoria debe retornar
desde la subrutina al programa principal?

ORG 1000H​ 12) Este programa es otra forma de implementación de la tarea


NUM1 DB 5H​ del punto anterior. Analizar y establecer las diferencias con las
NUM2 DB 3H​ anteriores, en particular las relacionadas a la forma de ‘proveer’
​ los operandos a las subrutinas.
ORG 3000H​
SUB2: MOV DX, 0​ Explicar detalladamente:
LAZO: MOV BX, AX​ a.​ Todas las acciones que tienen lugar al ejecutarse las
ADD DH, [BX]​ instrucciones PUSH DX y POP DX.
PUSH DX​
b.​ Cuáles son los dos usos que tiene el registro DX en la
subrutina SUB2.
MOV BX, CX​
MOV DL, [BX]​
DEC DL​
MOV [BX], DL​
POP DX​
JNZ LAZO
MOV BX, AX​
MOV [BX], DH​
RET​

ORG 2000H​
MOV AX, OFFSET NUM1​
MOV CX, OFFSET NUM2​
CALL SUB2​
HLT​
END

13) Escribir un programa que sume 2 vectores de 6 elementos de 32 bits cada uno, de modo tal que utilice una subrutina
que sume números de 32 bits. Las subrutinas deben utilizar argumentos con pasaje de parámetros por registros (no
accediendo a la memoria principal de forma directa).

14) Escriba una subrutina que reciba la mantisa entera en BSS y el exponente en BSS de un número representado en
punto flotante en los registros AH y AL respectivamente y devuelva, en ellos, una representación equivalente del mismo
pero con el exponente disminuido en 1 y la mantisa ajustada. De no ser posible el ajuste, BL debe contener 0FFH en vez
de 00H en el retorno.

15) Escriba una subrutina que reciba como parámetro un número en el formato IEEE 754 de simple precisión y
analice/verifique las características del mismo devolviendo en el registro CL un valor igual a 0 si el número está sin
normalizar, 1 en caso de ser +/- infinito, 2 si es algún NaN, 3 si es un +/- cero y 4 si es un número normalizado. La
subrutina recibe en AX la parte alta del número y en BX la parte baja.

Práctica 4 4
Versión 2.0

También podría gustarte