Descarga la aplicación para disfrutar aún más
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.
Compartir