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