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