Ciclos condicionales (ejemplos)

 Ejemplo 1:
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

Entradas más populares de este blog

Uso de la multiplicacion con ensamblador

Programa de resta en ensamblador

Librerías para graficar en Python