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