1. Explicar mediante un gráfico en que consiste las instrucciones tipo salto (Direcciones corta, cercana y lejana, etiquetas, saltos incondicionales, saltos condicionales, instrucciones de testeo, decisiones y bucles) La instrucción de salto condicional transfiere el control dependiendo de las configuraciones en el registro de banderas: Una Operación de salto alcanza una dirección cercana por medio de un desplazamiento de una palabra, limitado a una distancia de -32768 a 32767 bytes. Etiqueta: Jnnn (dirección corta) Compara los valores de 2 banderas y luego salta dependiendo de estos Corta y cercana posterior a 80386 Corta Cercana Lejana Una Operación de salto alcanza una dirección corta por medio de un desplazamiento de un Byte, limitado a una distancia de 128 a 127 bytes. Una dirección lejana puede estar en otro segmento y es alcanzada por medio de una dirección de segmento y un desplazamiento Direcciones JMP A90 … A90: MOV AH, 00 …. Realiza el programa en un bucle infinito. Los dos (:) Es para darle el atributo de cercana, dentro de un procedimiento en el mismo segmento de código Corta, cercana y lejana JMP (salto incondicional) Ejemplo La instrucción CALL es un salto condicional que va acompañado de RET el cual regresa al procedimiento de donde fue llamado, es una instrucción cercana y lejana, de esto dependerá al código objeto que se genere. Corta Etiquetas de instrucciones LOOP (Bucle) Ejemplo Ejemplo: NEAR y FAR: BEGIN PROC FAR CALL B10 … MOV AX, 4C00H INT 21H BEGIN ENDP ;******** B10 PROC NEAR CALL C10 … RET B10 ENDP ;******* C10 PROC NEAR … RET MOV AX, 01 MOV BX, 01 MOV DX, 01 MOV CX, 10 A90: INC AX ADD BX, AX SHL DX, 01 LOOP A20 Realiza el programa en solo 10 vueltas ya que el loop utiliza a CX decrementando y para cuando este es cero (0) Ejemplo de salto condicional: MOV AX, 1111h MOV BX, 1112h CMP AX, BX; AX es menor que BX JB tirapalante; Saltar a tirapalante HLT; Esta orden bloquea el ordenador, halt tirapalante: DEC BX; Ahora BX valdr 1111h CMP AX, BX; Ahora valen igual JNE Acaba; No saltará, ya que son iguales JE Continua; Esta vez si Continua: DEC BX; Ahora BX vale 1110h CMP AX, BX JE Acaba; No son iguales, por tanto no saltará JB Acaba; No es menor, tampoco salta JG Acaba; Es mayor, ahora SI saltará Acaba: XOR AX, AX XOR BX, BX; AX y BX valen ahora cero. Reglas de etiquetas: Cadena de caracteres donde los 15 primeros son significativos. Puede ser cualquier código ASCII mayor de 32 (espacio), salvo caracteres especiales. El primer carácter no puede ser número o símbolo. Mayúscula y minúscula se consideran diferentes. Tiene que estar en la primer columna de texto, salvo que termine “: “ Ejemplo: etiquetas validas: Salto, inicio, regresa….Bucle_1, LAZO3 Ejemplo: etiquetas no validas: 1salto, inicio/, 1const_&3…. La etiqueta es un nombre dado por el programador, la cual define posiciones de memoria específicas o valores constantes Saltos con base en datos y sin signo: JE/JZ salta si es igual o salta si es igual a cero JNE/JNZ salta si no es igual o salta si no es igual a cero JA/JNBE bifurca si es mayor o salta si no es menor o igual JAE/JNB salta si es mayor o igual o salta si no es menor JB/JNAE salta si es menor o salta si no es mayor o igual JBE/JNA salta si es menor o igual o salta si no es mayor Saltos con base en datos con signo: JE/JZ salta si es igual o salta si es igual a cero JNE/JNZ salta si no es igual o salta si no es igual a cero JG/JNLE salta si es mayor o salta si no es menor o igual JGE/JNL salta si es mayor o igual o salta si no es menor JL/JNGE salta si es menor o salta si no es mayor o igual JLE/JNG salta si es menor o igual o salta si no es mayor Saltos con base en condiciones especiales: JS salta si el signo es negativo JNS salta si el signo es positivo JC salta si hay acarreo (igual que JB) JNC salta si no hay acarreo JO salta si hay desbordamiento JNO salta si no hay desbordamiento JP/JPE salta si hay paridad o salta si la paridad es par JNP/JPO salta si no hay paridad o salta si la paridad es impar CMP compara si dos valores son iguales o diferentes contenidos en un registro. Su funcionamiento es similar al de la instrucción SUB (restar), sólo que no modifica el operando de destino, solamente modifica las banderas de signo (AF), (OF), (PF), (SF), (ZF) y (CF). Ejemplo: CMP BX, 00, compara a BX con cero JZ B50; si es cero salta a B50 … B50: ……destino del salto si BX es cero TEST realiza la operación AND de los operandos especificados sin que el resultado se almacene en algún registro, modificando únicamente ciertas banderas. Su aplicación más común es la de probar si algún bit es cero. Ejemplo: Test AL, 1 Esta instrucción prueba si el bit menos significativo de AL es 1 y Test AL, 128 Prueba si el bit más significativo de AL es 1. Registro de Banderas: 16 bits, barias instrucciones ponen a 1 para indicar el estado de una operación 0C 1 2P 3 4A 5 6Z 7S 8T 9I 10 D 11 O 12 13 14 15 Acarreo Paridad Acarreo auxiliar Cero Signo Trampa Interrupción Dirección Desbordamiento