MICROPROCESADORES
DOCENTE: MARCO AURELIO PORRO CHULLI
SALTO CONDICIONAL
TEMA
SALTO CONDICIONAL
ES UN PUNTO DE UN PROGRAMA INFORMÁTICO DONDE EL FLUJO DEL PROGRAMA SE VE
ALTERADO. LOS TÉRMINOS DE SALTO SUELEN UTILIZARSE PARA REFERIRSE A PROGRAMAS
ESCRITOS EN LENGUAJE ENSAMBLADOR; EN LOS LENGUAJES DE ALTO NIVEL, LOS SALTOS
NORMALMENTE TOMAN LA FORMA DE SENTENCIAS CONDICIONALES, LLAMADAS A
SUBRUTINAS O SENTENCIAS GOTO. UNA INSTRUCCIÓN QUE CAUSA UN SALTO (LLAMADA
EVIDENTEMENTE INSTRUCCIÓN DE SALTO), PUEDE SER EFECTIVA O NO EFECTIVA: SI EL
SALTO NO ES EFECTIVO, EL FLUJO DE PROGRAMA NO CAMBIA Y LA SIGUIENTE INSTRUCCIÓN
EN SER EJECUTADA ES LA INMEDIATAMENTE POSTERIOR EN EL CÓDIGO; SI RESULTA
EFECTIVO, LA SIGUIENTE INSTRUCCIÓN EJECUTADA SERÁ AQUELLA MARCADA COMO
DESTINO DEL SALTO. PRINCIPALMENTE HAY DOS FORMAS DE INSTRUCCIÓN DE SALTO: EL
SALTO CONDICIONAL QUE PUEDE SER EFECTIVO O NO SEGÚN UNA DETERMINADA
CONDICIÓN, COMO POR EJEMPLO EL CONTENIDO DE ALGÚN REGISTRO DE LA CPU; Y EL
SALTO INCONDICIONAL QUE SIEMPRE SE REALIZA.
INSTRUCCIONES DE SALTO:
HAY MÁS DE 30 INSTRUCCIONES DE SALTO, VAMOS A NOMBRAR LAS MÁS USADAS:
INSTRUCCIÓN DESCRIPCIÓN
jmp etiqueta Salto incondicional directo
je etiqueta Salto por igual
jne etiqueta Salto por no igual
jg etiqueta Salto por mayor
jng etiqueta Salto por no mayor
jge etiqueta Salto por mayor igual
jnge etiqueta Salto por no mayor igual
jl etiqueta Salto por menor
jnl etiqueta Salto por no menor
jle etiqueta Salto por menor igual
jnle etiqueta Salto por no menor igual
js etiqueta Salto negativo
EJEMPLO:
PERMITE DETERMINAR SI UN NUMERO INGRESADO POR TECLADO ES CERO, POSITIVO O NEGATIVO:
; INICIO:
.MODEL SMALL
.STACK 64
.DATA
; DECLARACIÓN DE VARIABLES:
NUM DB 0
; DEFINIR MENSAJES:
MSG1 DB 10,13, “INGRESE UN NUMERO ::”, ‘S’
MSG2 DB 10,13, “<<EL NUMERO ES CERO>>”, ‘S’
MSG3 DB 10,13, “<<EL NUMERO ES POSITIVO>>”, ‘S’
MSG4 DB 10,13, “<<EL NUMERO ES NEGATIVO>>”, ‘S’
.CODE
BEGIN PROD FAR
MOV AX,@DATA
MOV DS,AX
; INGRESO DE DATOS:
MOV AH,09
LEA DX,MSG1
INT 21H
MOV AH,01
INT 21H
SUB AL.30H
MOV NUM,AL
; CALCULOS:
CMP AL,0
JE CERO
JP POSITIVO
JL NEGATIVO
; CONDICIONES:
CERO:
MOV AH,09
LEA DX,MSG2
INT 21H
JMP SALIR
POSITIVO:
MOV AH,09
LEA DX,MSG3
INT 21H
JMP SALIR
NEGATIVO:
MOV AH,09
LEA DX,MSG4
INT 21H
JMP SALIR
;SALIR:
MOV AH,07
INT 21H
MOV AX,4CH
INT 21H
BEGIN ENDP
END
SALTO CONDICIONAL

SALTO CONDICIONAL

  • 1.
    MICROPROCESADORES DOCENTE: MARCO AURELIOPORRO CHULLI SALTO CONDICIONAL TEMA
  • 2.
    SALTO CONDICIONAL ES UNPUNTO DE UN PROGRAMA INFORMÁTICO DONDE EL FLUJO DEL PROGRAMA SE VE ALTERADO. LOS TÉRMINOS DE SALTO SUELEN UTILIZARSE PARA REFERIRSE A PROGRAMAS ESCRITOS EN LENGUAJE ENSAMBLADOR; EN LOS LENGUAJES DE ALTO NIVEL, LOS SALTOS NORMALMENTE TOMAN LA FORMA DE SENTENCIAS CONDICIONALES, LLAMADAS A SUBRUTINAS O SENTENCIAS GOTO. UNA INSTRUCCIÓN QUE CAUSA UN SALTO (LLAMADA EVIDENTEMENTE INSTRUCCIÓN DE SALTO), PUEDE SER EFECTIVA O NO EFECTIVA: SI EL SALTO NO ES EFECTIVO, EL FLUJO DE PROGRAMA NO CAMBIA Y LA SIGUIENTE INSTRUCCIÓN EN SER EJECUTADA ES LA INMEDIATAMENTE POSTERIOR EN EL CÓDIGO; SI RESULTA EFECTIVO, LA SIGUIENTE INSTRUCCIÓN EJECUTADA SERÁ AQUELLA MARCADA COMO DESTINO DEL SALTO. PRINCIPALMENTE HAY DOS FORMAS DE INSTRUCCIÓN DE SALTO: EL SALTO CONDICIONAL QUE PUEDE SER EFECTIVO O NO SEGÚN UNA DETERMINADA CONDICIÓN, COMO POR EJEMPLO EL CONTENIDO DE ALGÚN REGISTRO DE LA CPU; Y EL SALTO INCONDICIONAL QUE SIEMPRE SE REALIZA.
  • 3.
    INSTRUCCIONES DE SALTO: HAYMÁS DE 30 INSTRUCCIONES DE SALTO, VAMOS A NOMBRAR LAS MÁS USADAS: INSTRUCCIÓN DESCRIPCIÓN jmp etiqueta Salto incondicional directo je etiqueta Salto por igual jne etiqueta Salto por no igual jg etiqueta Salto por mayor jng etiqueta Salto por no mayor jge etiqueta Salto por mayor igual jnge etiqueta Salto por no mayor igual jl etiqueta Salto por menor jnl etiqueta Salto por no menor jle etiqueta Salto por menor igual jnle etiqueta Salto por no menor igual js etiqueta Salto negativo
  • 4.
    EJEMPLO: PERMITE DETERMINAR SIUN NUMERO INGRESADO POR TECLADO ES CERO, POSITIVO O NEGATIVO: ; INICIO: .MODEL SMALL .STACK 64 .DATA ; DECLARACIÓN DE VARIABLES: NUM DB 0 ; DEFINIR MENSAJES: MSG1 DB 10,13, “INGRESE UN NUMERO ::”, ‘S’ MSG2 DB 10,13, “<<EL NUMERO ES CERO>>”, ‘S’ MSG3 DB 10,13, “<<EL NUMERO ES POSITIVO>>”, ‘S’ MSG4 DB 10,13, “<<EL NUMERO ES NEGATIVO>>”, ‘S’
  • 5.
    .CODE BEGIN PROD FAR MOVAX,@DATA MOV DS,AX ; INGRESO DE DATOS: MOV AH,09 LEA DX,MSG1 INT 21H MOV AH,01 INT 21H SUB AL.30H MOV NUM,AL
  • 6.
    ; CALCULOS: CMP AL,0 JECERO JP POSITIVO JL NEGATIVO ; CONDICIONES: CERO: MOV AH,09 LEA DX,MSG2 INT 21H JMP SALIR
  • 7.
    POSITIVO: MOV AH,09 LEA DX,MSG3 INT21H JMP SALIR NEGATIVO: MOV AH,09 LEA DX,MSG4 INT 21H JMP SALIR ;SALIR: MOV AH,07 INT 21H MOV AX,4CH INT 21H BEGIN ENDP END