1. Explicar mediante un gráfico en que consiste las instrucciones

Anuncio
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
Descargar