Ejemplos de programas usando ciclos y saltos condicionales.

El día de hoy veremos datos interesantes acerca de los saltos y ciclos condicionales junto con algunos programas que nos podrán servir como ejemplos para que nos pueda ser mas fácil la comprensión de estos problemas.

Saltos que hacen uso de una sola bandera


Ciclos


Ejemplo de JMP

Este programa lo que realiza es la suma de dos numeros pero usando un salto llamado "calc" que nos lleva a un metodo llamado "calc" donde se realiza la suma.


org    100h

mov    ax, 5          ; set ax to 5.
mov    bx, 2          ; set bx to 2.

jmp    calc            ; go to 'calc'.

back:  jmp stop      ; go to 'stop'.

calc:
add    ax, bx         ; add bx to ax.
jmp    back           ; go 'back'.

stop:

ret                   ; return to operating system.

Numero mayor con JMP usando emu8086.inc

Lo que este programa realiza es la comparación de dos números usando los saltos jc, jz, y jnz. Ademas, este programa utiliza macros de la librería emu8086.inc para solicitar la entrada de datos y mostrar la salida de datos en una terminal.


include 'emu8086.inc'
.model small
.stack
.data
    
    num1 db 2
    num2 db 8
         
.code
    main:
    mov ax, @data
    mov ds, ax
    
    mov al, num1
    
    cmp al, num2
    
    jc mayor2
    jz igual
    jnz mayor1
.exit

igual:
    printn 'LOS NUMEROS SON IGUALES'
    jmp fin

mayor2:
    printn 'NUMERO 2 ES MAYOR'
    jmp fin

mayor1:
    printn 'numero 1 es mayor'
    jmp fin
    
fin:

.exit
 
 
He aquí la salida de datos en la terminal.
 
 

Numero mayor usando JMP con interrupciones

Este programa es identico al anterior pero la mayor diferencia reside en que no estamos haciendo uso de las macros de la libreria, sino que estamos usando interrupciones para desplegar mensajes de entradas de de datos como para mostrar las salida de estos.


.model small
.stack
.data
    
    num1 db 8
    num2 db 8
    msg1 db 'numeros iguales', '$'
    msg2 db 'NUMERO 1 ES MAYOR', '$'
    msg3 db 'numero 2 es mayor', '$'
         
.code
    main:
    mov ax, @data
    mov ds, ax
    
    mov al, num1
    
    cmp al, num2
    
    jc mayor2
    jz igual
    jnz mayor1
.exit

igual:
    mov ah, 09h
    lea dx, msg1
    int 21h
    jmp fin

mayor2:
    mov ah, 09h
    lea dx, msg3
    int 21h
    jmp fin

mayor1:
    mov ah, 09h
    lea dx, msg2
    int 21h
    jmp fin
    
fin:

.exit
 
 
Aquí esta la salida del programa al realizar la ejecución.

Comentarios

Entradas más populares de este blog

Macros y procedimientos de EMU8086.INC

1.7 Compiladores, proceso de ensamblado y ligado

Simuladores de Lenguaje Ensamblador Online.