Buenas a todos!
Frente a la imposibilidad de sacarle foto al final ya que desde la cátedra no lo permiten, paso a comentarles las preguntas del final que recuerdo
.
Constó de 16 preguntas con la forma de evaluar de otros finales de contestar 10 preguntas mínimo para un 6 y de ahí para arriba, pero con una modalidad diferente, todo preguntas y un poco a desarrollar.
1) Se tienen los siguientes registros AH=38, BH=43 y se ejecuta la instrucción SUB AH, BH, que valor tiene BH luego de la ejecución?
2) Se tiene un programa en C++ el cual se especifica que se va a utilizar precios que van a ser de millones de pesos, la variable precio se declara de tipo short, ¿hay algún problema con eso? ¿Cómo lo solucionaría?
3) Se tiene CL=AF(esto es un numero hexa) y se ejecuta la instrucción ROR CL,1 que valor tiene CL luego de ejecutada la instrucción?
4) Se requiere un sistema pensado para usarse desde Argentina hasta China, que codificación utilizaría?
5) Dado el numero 0,125(10) represéntelo en forma punto flotante simple, luego expréselo en formato Hexadecimal y luego en formato Little Endian
6) La siguiente instrucción a ejecutarse es JZ 0100 y el ip actualmente apunta a 0500 la cual pesa 3 bytes, si el salto no se ejecuta indique el valor de IP
7) Se tiene la instrucción CMP AH,30 , al ejecutarse el flag Z=1 que valor tiene AH?
8) Se ejecuta la instrucción INT 32 y el IP apunta a 0500, sabiendo que posee un peso de 2 Bytes indique a donde apunta IP al ejecutarse IRET
9) Se ejecutan las siguientes instrucciones
MOV AX, DE
MOV BX, DE
XOR AX,BX
MOV [0200], AX
Indicar el valor de la dirección 0200
10) no recuerdo
11) Dado un formato de 4 bits y complemento autentico, represente el rango que abarca en formato decimal
12) Se tiene la siguiente dirección segmentada 1530:0200 MOV [BX + SI*4], AX, indique la dirección física
13) Explique el formato de la norma IEEE-754
14) Se tiene una memoria de 1024K*8, indique cual es su mayor representación e indique su rango en hexadecimal
15) Se sabe que después de una suma en binario con signo el resultado da overflow y los flag S=1 y C=0, represente el numero limite en decimal dado que el formato es 8 bits
16) Represente con una letra 2^30
Bueno esto fue mas o menos el parcial, la pregunta que no recuerdo no fue tan relevante, si no me acordaría jeje, quizá alguno que también estaba pueda completar o aportar, cualquier cosa edito.
Me saqué un 8, no me dijeron en cuales estaba mal lamentablemente, pero pongo mis respuestas, si alguno me corrige o después pasa facu el ayudante de pato vengo y lo edito
Respuestas:
1) BH no cambia, sigue siendo el mismo valor BH=43 ya que la instrucción SUB registro1, registro2 hace registro1= registro1-registro2 y BH era el registro 2 por ende no se modificó
2) Explicar en prosa que un short no te iba a alcanzar los bits para representar los precios en millones. La solución es cambiar el tipo de dato a Long por ejemplo.
3) Esta no la sabía mande fruta así que al pedo aportar acá, es probable que una de las que este mal era esta
4) Acá explique en prosa que utilizaría UNICODE y específicamente UTF-8 ya que como se expande hasta 32 bits si es necesario, con los 8 me sirve para argentina por ejemplo y si necesito para china se puede expandir hasta 32
5) Esta estoy en duda porque me acordaba que había varios puntos flotantes e hice el de IEEE754 pero son los pasos del libro luego esos bits son dividirlos de 4 en 4 para representarlos en hexa y el formato little endian es agarrar de a par de derecha a izquierda e ir escribiendo EJ: teniendo el hexa F450CD45 en little endian seria separarlo de a pares F4 50 CD 45 y de derecha a izquieda ir escribiendo el par leido así → entonces seria 45 CD 50 F4. Little endian solo se puede con números
6) Como JZ no se ejecuta IP solo se le suman los 3 bytes IP=0503.
7) Como CMP solo compara no agrega ni quita valor entonces si el Z=1 es porque son iguales ya que restó para hacer la comparación, por ende AH=30
8) 0502
9) AX=BX=DE
Al hacer XOR AX,BX el resultado es 0 ya que el contenido de los registros AX Y BX son iguales y la tabla de verdad del XOR cuando es 0 y 0 o 1 y 1 da 0 (Acá busque en inet y al parecer guarda el valor de hacer XOR en el primer registro por ende guardaría el 0 en AX) Yo pensé que no guardaba, si no que modificaba flags nomas, por ende puse que el valor de 0200 al hacer MOV [0200] AX era DE pero sería 0. O es una de las que está mal y me restó punto o al corregir me la perdonaron (?
10) Error 404 not found
11) Rango de los complementados a 2 o complemento autentico [-2^(n-1);2^(n-1) -1] Como n=4 entonces rango [-8;7]
12) Entiendo que el primer parámetro era para confundir (? por eso te ponían esa referencia a memoria y adentro desplazado etc pero para pasar a una dir física se hace cs.10(16)+ip por ende 1530*10(16)=15300 + 0200 = 15500
13) Acá explique que es un formato de 32 bits, que el primer bit representa el signo, luego los siguientes 8 bits son la característica, la cual esta compuesta por el exponente + 127 (01111111) y que los siguientes 23 bits son la mantisa que es el numero que va después de la coma
14) 1024K*8 el segundo parámetro representa los bits y 8bits=1byte entonces 1024K*8=1KB (esta es la forma de representar) y su rango hexa se calcula: 1KB = 2^10 entonces uso 10 bits en total. Hexa tiene 4 bits por numero entonces uso 3 ( 4*3=12 si uso 2 no llego 4*2=8) y de esos 12 bits uso solo los 10 que necesito, por ende en binario el máximo valor seria 0011 1111 1111 (los dos primeros ceros serian el bit 11
y 12 que como no los uso siempre van a ser 0) por ende su rango en hexa es [000; 3FF] (las memos siempre arrancan en 0 ya que básicamente son un array o un bloque y siempre empiezan del 0 hasta el máximo de memo que abarque)
15) Acá explique que la suma que se estaba haciendo era 127+1 ya que al hacer esa misma te da los flags requeridos
01111111
+ 1
--------------
10000000
Entonces la respuesta era 127 (valor limite)
16) 2^30=G (de Gigabyte)
Bueno este es mi humilde aporte, cualquier cosa chiflen.