Universidad Nacional de Ingeniería
UNI
Facultad de Electrotecnia y Computación
Carrera: Ingeniería en Computación
Departamento de Arquitectura de Sistemas y Aplicaciones
Asignatura: Arquitectura de Maquinas Computadoras II
LABORATORIO #4
SALTOS CONDICIONALES EN TAS
OBJETIVO
Realiza programación en lenguaje ensamblador implementando las instrucciones de
saltos condicionales en TAS.
INTRODUCCION
Saltos Condicionales
Si se cumple alguna condición específica en el salto condicional, el flujo de control se
transfiere a una instrucción de destino. Existen numerosas instrucciones de salto
condicional, según la condición y los datos.
Las siguientes son las instrucciones de salto condicional utilizadas en datos sin firma
implementadas en operaciones aritméticas:
Instrucción Descripción Bandera involucrada
JE/JZ Salto Igual o Salto Cero ZF
JNE/JNZ Salto no igual o salto no cero ZF
JA/JNBE Salto por encima o no por debajo/igual CF, ZF
JAE/JNB Salto arriba/igual o no saltar debajo CF
JB/JNAE Salto por debajo o no saltar por encima/igual CF
JBE/JNA Salto por debajo/igual o no saltar por encima AF, CF
ACTIVIDADES
1. Identifica los problemas a resolver en la lista que se provee en la sección
[PROGRAMA].
2. Selecciona el entorno de desarrollo a emplear para codificar tu programa en
ensamblador. La opción propuesta es: GUI Turbo Assembler. No aplica el
EMU8086.
3. Planifica (algoritmiza) la solución a tu problema, codifica, prueba y valida tu
programa.
1
PROGRAMA:
Dados 2 enteros introducidos por el usuario, indicar cual es mayor, cual es menor o si
son iguales.
Solución:
.MODEL SMALL
.STACK
.DATA
n1 DB 0 ;VARIABLE PARA ENTRADA 1
n2 DB 0 ;VARIABLE PARA ENTRADA 2
msg1 DB 10,13,'Primer Entero: $' ;VARIABLE DE MENSAJE 1
msg2 DB 10,13,'Segundo Entero: $' ;VARIABLE DE MENSAJE 2
M1 DB 10,13,'PRIMER ENTERO MAYOR QUE EL SEGUNDO !!!$' ;VARIABLE DE
MENSAJE 3
M2 DB 10,13,'PRIMER ENTERO MENOR QUE EL SEGUNDO !!!$' ;VARIABLE DE
MENSAJE 4
M3 DB 10,13,'ENTEROS IGUALES !!!$' ;VARIABLE DE MENSAJE 5
.CODE
MAIN:
MOV AX, @data ;ACUMULAR DIRECCION DE DATA
MOV DS, AX ;MOVER LA DIRECCION A DS
MOV AH, 9 ;SERVICIO DE IMPRESION
LEA DX, msg1 ;OBTIENE LA DIRECCION DE msg1
INT 21H ;INTERRUPCION 21H
MOV AH, 1 ;SERVICIO DE ENTRADA
INT 21H ;INTERRUPCION 21H
SUB AL, 30H ;RESTAR 30H/48D
MOV n1, AL ;MOVER ENTRADA A LA VARIABLE N1
MOV AH, 9 ;BIS
LEA DX, msg2
INT 21H
MOV AH, 1
INT 21H
SUB AL, 30H
MOV n2, AL
mov al,n1
cmp al,n2
JA MAYOR ;Salta si CF o ZF estan en OFF
JB MENOR ;Salta si CF esta activada
JE IGUALES ;Salta Si los valores que evalua CMP son iguales
2
MAYOR: ;Cuando n1 es mayor que n2
mov ah,09h
lea dx,M1
int 21h
.exit
MENOR: ;Cuando n1 es menor que n2
mov ah,09h
lea dx,M2
int 21h
.exit
IGUALES: ;Cuando son iguales
mov ah,09h
lea dx,M3
int 21h
.exit
END MAIN