Ciclos condicionales (ejemplos)
 Ejemplo 1:
EJEMPLO JMP
Ejemplo 2:
EJEMPLO PUSH
Ejemplo 3:
Ejemplo 4:
EJEMPLO JE
Ejemplo 5:
EJEMPLO JMP
org 100h mov ax,5 mov bx,2 jmp calc ;salta hacia el bloque calc back: jmp stop ;salta directamente a stop calc: add ax,bx jmp back ;salta hacia el bloque back stop: ;termina el programa ret ;http://jbwyatt.com/253/emu/asm_tutorial_07.html
Ejemplo 2:
EJEMPLO PUSH
org 100h
mov cx, 5 ;establecemos que CX valdra 5 para el loop externo
k1: 
    mov al, ' ' ;guardamos un espacio en al
    mov ah, 0eh ;invocamos el servicio de impresion de video
    int 10h     ;imprimimos
    mov al, '1' ;guardamos un 1 en al
    mov ah, 0eh ;invocamos el servicio de impresión de video
    int 10h     ;imprimimos
    push cx     ;restamos 1 a cx:  cx=cx-1 para el loop 1
    mov cx, 5   ;seteamos cx a 5 para el loop interno 2
      k2:        
      mov al, '2' ;guardamos 2 en al
      mov ah, 0eh ;invocamos al servicio de impresión de video
      int 10h     ;imprimimos
      push cx     ;restamos 1 a cx:  cx=cx-1 para el loop 2
         mov cx,5  ;seteamos cx a 5 para el loop 3
         k3:      
         mov al, '3' ;guardamos 3 en al
         mov ah, 0eh ;invocamos al servicio de impresión de video
         int 10h     ;imprimimos
         loop k3    ;cerramos el loop 3 
      pop  cx       ;restamos 1 a cx:  cx=cx-1 para el loop 3
      loop  k2      ;cerramos el loop2
    pop cx           ;restamos 1 a cx:  cx=cx-1 para el loop 2
loop k1             ; cerramos el loop 1
ret ;retornamos control al ordenador
Ejemplo 3:
include "emu8086.inc" org 100h mov al, 25 ; set al to 25. mov bl, 10 ; set bl to 10. cmp al, bl ; compare al - bl. je equal ; jump if al = bl (zf = 1). putc 'n' ; if it gets here, then al <> bl, jmp stop ; so print 'n', and jump to stop. equal: ; if gets here, putc 'y' ; then al = bl, so print 'y'. stop: ret ; gets here no matter what.
Ejemplo 4:
EJEMPLO JE
include "emu8086.inc"
org    100h
mov    al, 25     ; set al to 25. 
mov    bl, 10     ; set bl to 10. 
cmp    al, bl     ; compare al - bl. 
je     equal      ; jump if al = bl (zf = 1). 
        print "los registros contienen valores diferentes"        ; if it gets here, then al <> bl, 
jmp    stop       ; so print 'n', and jump to stop. 
equal:            ; if gets here, 
print "los registros contienen valores iguales"        ; then al = bl, so print 'y'. 
stop:
ret               ; gets here no matter what. 
Ejemplo 5:
.model small
.stack
.data        
include "emu8086.inc"
    num1 db 8
    num2 db 9   
    msg1 db "NUMEROS IGUALES $" 
    msg2 db "NUMERO 1 MAYOR $"
    msg3 db "NUMERO 2 MAYOR $"
.code
    main:
        mov ax,@data
        mov ds,ax
        
        mov al,num1
    
        cmp al,num2
    
        jc mayor2   ;Salta si hay acarreo.
        jz igual    ;Salta si es igual o salta si es cero.
        jnz mayor1  ;Salta si no es igual o salta si no es cero.
.exit            
igual:
    MOV AH,09H
    LEA DX, MSG1
    INT 21H   
    jmp mfinal
 .EXIT
 
 mayor1:
    mov ah,09h
    lea dx,msg2
    int 21h   
    jmp mfinal
 .exit
 
 mayor2:
    mov ah,09h
    lea dx,msg3
    int 21h   
    jmp mfinal
.exit         
mfinal:
     gotoxy 5,4
     print "ejecucion terminada" 
.exit
END  
;https://www.youtube.com/watch?v=Ng4YEb2Jtcg 
;http://moisesrbb.tripod.com/unidad5.htm#u517    
;prox https://www.youtube.com/watch?v=CZyk7j3FVYw
;prox https://www.youtube.com/watch?v=llCG44dzPQM
 
Comentarios
Publicar un comentario