Logo Studenta

Actividad_7_SernaSerna - Jose SernaS

¡Este material tiene más páginas!

Vista previa del material en texto

Centro universitario de ciencias exactas e ingenierías 
Ingeniería en computación 
Traductores de lenguajes 1 
Sección D05 
José Luis Serna Serna 
Código: 218292327 
Actividad 7, 2020A, LOOP Y REP 
09/Mar/2020 
 
 
Objetivo. 
Implementar un programa donde muestre todas las funciones de repetición de LOOP con todas 
sus formas. Además, las instrucciones REP. 
Código fuente. 
org 100h 
 jmp start 
 
 tabla: db 1,0,0,0,0,0,5,9 
 tabla1: db 1,1,2,0,1,4,7 
 tabla2: db 1,1,3,0,3,9 
 
 msg1: db "TRADUCTORES, 1!", 0Dh,0Ah, 24h 
 msg2: db "TRADUCTORES, 1!", 0Dh,0Ah, 24h 
 msg3: db "TRADUCTORES, L!", 0Dh,0Ah, 24h 
 msg4: db "HOLAMUNDOES, L!", 0Dh,0Ah, 24h 
 
start: mov cx,03h 
 xor ax,ax 
 
 ;INSTRUCCIONES LOOP 
prueba1:inc ax 
 loop prueba1 ;todas mientras CX no sea 0 
 xor ax,ax 
 
 xor bx,bx 
 mov cx,10h 
 nextstep: inc bx 
 cmp tabla[bx],0 
 loope nextstep;"" y mientras Z=1 
 xor bx,bx 
 
 xor bx,bx 
 mov cx,10h 
 nextstep1: inc bx 
 cmp tabla1[bx],0 
 LOOPNZ nextstep1 ;"" y mientras Z=0 
 xor bx,bx 
 
 xor bx,bx 
 mov cx,10h 
 nextstep2: inc bx 
 cmp tabla2[bx],0 
 loopne nextstep2;"" y mientras Z=0 
 xor bx,bx 
 
 
 xor bx,bx 
 mov cx,04h 
 nextstep3: inc bx 
 cmp tabla[bx],0 
 LOOPZ nextstep3 ;"" y mientras Z=1 
 xor bx,bx 
 
 ;INSTRUCCIONES REP 
 mov CX, 100 
 xor ax,ax 
 lea di,msg1 ;destino 
 lea si,msg2 ;fuente 
 repe CMPSB ;SE REPITE MIENTRAS LA BANDERA ZF INDIQUE 0 Y CX 
DIFERENTE DE 0 
 mov ax,cx 
 
 xor bx,bx 
 lea di,msg1 ;destino 
 lea si,msg3 ;fuente 
 repe CMPSB 
 mov bx,cx 
 
 mov dx,ax 
 
 xor ax,ax 
 lea di,msg3 ;destino 
 lea si,msg4 ;fuente 
 repne CMPSB;SE REPITE MIENTRAS LA BANDERA ZF INDIQUE distinto de 0 Y 
CX DIFERENTE DE 0 
 mov ax,cx 
 
 add bx,dx 
 sub ax,bx 
 
 mov ah, 0 
 int 16h ;interrupcion 
 ret 
 
 
 
Capturas de pantalla de la ejecución. 
LOOP. Inicia el incremento de AX y se va decrementando CX, termina cuando CX=0. 
 
 
LOOPE. Se decrementa CX mientras sea distinto de 0 y termina si Z=0. 
 
 
 
LOOPNZ. Termina cuando Z=1. 
 
 
 
 
LOOPNE. También termina cuando Z=1. 
 
LOOPZ. Termina cuando Z=0 o bien si CX es igual a 0. 
 
 
Instrucciones REP. 
REPE(REPZ) 
Se repite comparando la cadena 1 y 2 hasta que ZF cambie su estado de activo a inactivo o que Cx 
no quede en 0 
 
Cambia su estado ZF y se sale del REPE 
 
 
 
 
 
 
REPNE(REPNZ) 
Ahora se repite hasta que ZF cambie su estado de inactivo a activo y Cx sea distinto de 0 
 
Cambia su estado ZF y se sale del REPNE 
 
 
 
 
Conclusión. 
En esta práctica pude ver cómo funcionan los LOOP, bajo qué condiciones pueden trabajar, por 
ejemplo, que el registro CX debe ser diferente de cero y que Z debe ser igual a cero o diferente de 
cero dependiendo la regla de cada diferente LOOP. Por su parte la instrucción REP también tiene 
sus condiciones para repetirse al comparar 2 cadenas, por ejemplo, REPE, necesita que la bandera 
ZF este activada y que Cx sea distinto de 0 para que se siga repitiendo, y REPNE necesita que ZF 
este desactivada y que Cx sea distinta de 0. Me doy cuenta qué pueden tener mucha utilidad para 
las actividades que vamos a hacer más adelante.

Otros materiales