Está en la página 1de 5

10.

Escribir un programa que cargue el registro R0 con la cadena que representa el


valor 15.

MOV R0, 0x000F

16. Escribir un programa que calcule el valor de la expresión 22 + 65. Nota: No


debe resolver la cuenta, sino hacer un programa que lo haga.

22 en hexa:
0x0016
0000 0000 0001 0110

65 en hexa:
0x0041
0000 0000 0100 0001

MOV R0, 0x0041


MOV R1, 0x0016
ADD R1, R0

MOV R0, 0x0016


ADD R0, 0x0041

17. Escribir un programa que sume los valores de los registros R1 y R0, y ponga el
resultado en R2 (sin modificar R1 y R0).

R0 = 0xXXXX
R1 = 0xYYYY
R2 = 0xRRRR (siendo 0xRRRR = 0xXXXX + 0xYYYY)

MOV R2, R0 <= R2 <- 0xXXXX


ADD R2, R1 <= R2 <- 0xRRRR

19. Escribir un programa que calcule el promedio entre los registros R2 y R3.

Promedio (R2,R3) = (R2+R3) / 2

ADD R2, R3
DIV R2, 0x0002

21. Tenemos una pequeña empresa de Software y contamos con la siguiente información
a cierre de balance, acumulada en los registros de la siguiente forma:

• Costos Fijos (CF) en R0,


• Costos Variables (CV) en R1
• Precio de venta por cada producto (P): R4

R0 = CF
R1 = CV
R4 = P

Con esta información resolver los siguientes planteos:

(a) Escribir un programa que calcule los costos totales de la compañía (CT=CF
+CV) y los almacene en el registro R2.

R0 = CF
R1 = CV
R2 = CT

R2 = R0 + R1

MOV R2, R0
ADD R2, R1

(b) Si se comercializaron 300 productos, Escribir un programa que calcule los


ingresos totales que representa almacenándolo en el registro R3 (Ingreso= P *
cantidad)

R3 = Ingreso
R4 = P

R3 = R4 * 0x012C
0000 0001 0010 1100

MOV R3, 0x012C


MUL R3, R4

(c) Queremos calcular la Ganancia del período (Ganancia= Ingreso – CT) para
lo cual escribiremos un programa que lo realice (los datos pedidos los calculamos y
guardamos en el inciso a y b).

Almacenar el valor resultante en el registro R5.

R2 = CT
R3 = Ingreso
R5 = Ganancia

R5 = R3 – R2

MOV R5, R3
SUB R5, R2

22. En cada uno de los programas que presenta el cuadro planteado a continuación,
realizaremos las tareas de ensamblado y ejecución mostrando el valor final que
tiene
cargado cada registro al finalizar dicha ejecución, para lo cual debemos tener en
cuenta la condición supuesta (estado inicial) en cada caso:

Instrucción
ADD R0,0xFAFF

Código máquina

ADD R0,0xFAFF

Cod Op (4) Modo Destino(6) Modo Origen(6) Destino(16)x Origen(16)


0010 100000 000000
1111 1010 1111 1111

ADD R0 0x????
0xFAFF
0010 1000 0000 0000
1111 1010 1111 1111

XXXX XXXX XXXX XXXX ADD R0, 0xFAFF


XXXX XXXX XXXX XXXX

Estado inicial
R0=0x0001

Estado final

ADD R0, 0xFAFF dest <- dest + origen


RO <- RO + 0xFAFF
R0 <- 0x0001 + 0xFAFF
R0 <- 0xFB00

1
1
+ 0x0001
0xFAFF 10
____________
0xFB00

R0=0xFB00

-----------------------
Instrucción
SUB R6,0x5678

Código máquina

SUB R6,0x5678

0011 1001 1000 0000


0101 0110 0111 1000

Estado inicial
R6=0x00FF

Estado final

SUB R6,0x5678 R6 <- 0xAA87

R6=0xAA87

10
10 -> 16
F F -> 15
10
0x00FF
- 0x5678
_______________
0xAA87
-----------------------
Instrucciòn
ADD R0,R0
MUL R0,R1

Código máquina

0010 100000 100000


0000 100000 100001

Estado inicial
R0=0x0001
R1=0x000F

Estado final

ADD R0,R0 R0 <- 0x0002


MUL R0,R1 R7, R0 <- 0x0000, 0x001E

0x0001
+ 0x0001
___________
0x0002

30 % 2 = 15 R = 0
15 % 2 = 7 R = 1
7 % 2 = 3 R = 1
3 % 2 = 1 R = 1
1 % 2 = 0 R = 1

30 => 11110

0 0 1 E
0000 0000 0001 1110

0x001E

R0=0x001E
R1=0x000F
R7=0x0000

Al agregar un bit en una cadena en la parte menos significativa altero el valor de


la cadena duplicando su valor original:

1111 = 15
11110 = 30
111100 = 60
1111000 = 120

16. b La intensidad de un terremoto se mide mediante sismógrafos, estos dibujan una


traza con una cierta
amplitud A, cuando dicha amplitud varía indica que se produce una variación en los
temblores de la superficie terrestre. La expresión es M(A)= Log A+3 donde el valor
del log de A lo tenemos almacenado en el registro R0. Realizar un programa que
pueda calcular la magnitud de un terremoto y la almacene en el registro R1.
M(A) = Log A + 3
R1 = R0 + 3

MOV R1, 0x0003


ADD R1, R0

MOV R1, R0
ADD R1, 0x0003

ADD R0, 0x0003


MOV R1, R0

MOV R2, 0x0003


ADD R0, R2
MOV R1, R0

También podría gustarte