2023 10 19 Practica 4
Daniel Bautista Juan Diego Pablo Coti
- Valores de AX, BX, CX
AX = 0001
BX = 0002
CX = 0005
- Presione F8 y anote las banderas C y Z
C = 1
Z = 0
- Ejecutar jbe notri
El salto ocurre porque la instrucciones jbe salta si se cumple una de las siguientes instrucciones: la bandera C esta levantada (significa que hubo un acarreo) o si la bandera de cero esta levantada (una operación anterior generó un 0 o menor)
- ejecutar hasta el final y ver el valor de la variable tipo
tipo = byte 'N' 78 (4Eh)
N significa que no es un triangulo, esto es verdadero, porque para que un conjunto de 3 segmentos forme un triangulo, la suma de las longitude de dos de los lados siempre debe ser mayor que la longitud del tercer lado.
- Reiniciar el programa poner valor 5h para todo
tipo = byte 'E' 69 E significa que es un triangulo equilátero, esto es correcto.
- ejecutar hasta jbe notri
C = 0
Z = 0
cuando ejecutamos el salto, no realiza el salto porque no cumple las condiciones, ni z ni c son 1 así que el salto no se realiza.
- ¿por qué solo es necesario realizar la comparación de lado1 con lado2 para determinar si es equilátero?
Asumiendo que en el diseño del programa se prevee que la forma en que se arma el triangulo es de acuerdo a las manecillas del reloj, entonces podríamos decir que el lado1, lado2, lado3 corresponden a lado lado base. Como no estamos comparando ángulos, no podemos saber si tiene 2 lados iguales y 2 ángulos iguales, así que no compararemos un triángulo isosceles.
- Observe los valores de las banderas de C y Z
C = 0
Z = 1
Salta hacia equil
- Primer punto de quiebre
AL = 00
CL = AA
C  = 0
- Segundo punto de quiebre
CL = 54
C  = 1
El nuevo valor se genera porque primero multiplicamos CL por 2 y este resultado se vuelve a guardar en CL, posteriormente, esta operación realiza unos cambios en nuestras banderas. luego, al hacer el adc agregamos el valor del carry generado por el desplazamiento. Esta nueva operación, vuelve a generar un carry que será usado al repetir el bucle.
- Vuelva a presionar la tecla F9para ejecutar el programa hasta el siguiente punto de ruptura. Note que el programa regresa a evaluar la condición de salida del ciclo. Note el valor del registro AL ``` AL = 01 AX = 4001 ````
Al pasa de 0 a 1 porque en el while, ya se había generado un carry, y este carry era 1, posteriormente, la primer instrucción es un adc, así que por eso se suma 1.
- Repita los pasos 27 y 28 hasta que el registro CL valga cero. Esto lo debe notar después de una repetición del paso 27. Ejecute de nuevo el paso 28 y el programa debe estar en la etiqueta while.
En este momento esto valen los registros

- Presione de nuevo la tecla F9. En esta ocasión como CL (o CX) vale cero la instrucción: 
while: jcxz endwhi ; while(CL > 0)romperá del ciclo y el programa continúa hasta el siguiente punto de ruptura. Observe el valor de la variable cuenta
Cuenta = 4
Si, el valor es correcto, es el numero de veces que se pasó por el ciclo while.
- Presione Ctrl F2 para reiniciar el programa. Inicialice la variables dato al valor de 3Bh. Repita los pasos 24 a 30 para obtener el resultado
Cuenta = 5 Si, es correcto, 5 fue el numero de iteraciones que se hicieron para terminar el programa.