programas loop

MTRA:YOLYS
EMU8086
Programa en EMU8086 -- pasar a TURBO ASSEMBLER

; uso del LOOPZ, REPETICION BASADA EN
;COMPARACION SI ES IGUAL A 0

; INTERRUPCION PARA LEER DEL TECLADO ES LA INT16H

; CUANDO USAMOS LA INT16H , EL PARAMETROA USAR ES AH = 0
; Y EL CARACTER LEIDO QUEDARA EN AL= CARACTER LEIDO


.model small
.stack 64

.data
;mensaje1 db "instrucciones de repeticion

.code


inicio:


mov al,'>' ; caracter inicial
mov cx,10 ;numero de veces a repetir el ciclo

leer_car:
mov ah,0EH ;FUNCION PARA IMPRIMIR EL CARACTER AL
int 10h ;llama al BIOS

mov ah,08 ;pausa y espera a que el usuario precione una tecla
int 21h ;interrupcion para capturar


cmp al,'S'; el caracter leeido int 16h lo guarda en al

loopz leer_car ;toma en cuenta la comparacion del cmp si se cumple continua


; coloco el fin de la linea para que baje una linea y lo baje
mov ah,0EH ; FUNCION DEL BIOS PARA IMPRIMIR CARACTER
mov al,10
int 10h

MOV AL,13
INT 10H



mov ah,04ch ;Al terminar finaliza el programa.
int 21h
end inicio
TURBO ASSEMBLER
model small
.stack 64
data segment
;mensaje1 db "instrucciones de repeticion
data ends
code segment
    assume ds:data,cs:code
 
inicio:
mov al,'>' ; caracter inicial

mov cx,10 ;numero de veces a repetir el ciclo
leer_car:

mov ah,0EH ;FUNCION PARA IMPRIMIR EL CARACTER AL

int 10h ;llama al BIOS
mov ah,08 ;pausa y espera a que el usuario precione una tecla

int 21h ;interrupcion para capturar
cmp al,'S'; el caracter leeido int 16h lo guarda en al
loopz leer_car ;toma en cuenta la comparacion del cmp si se cumple continua
; coloco el fin de la linea para que baje una linea y lo baje

mov ah,0EH ; FUNCION DEL BIOS PARA IMPRIMIR CARACTER

mov al,10

int 10h

MOV AL,13

INT 10H
mov ah,04ch ;Al terminar finaliza el programa.

int 21h
code ends

end inicio

EDUARDO AQUINO
emu8086
; programa en emu8086
org 100h
.model small

.stack 64

.data
mensaje db 10,13 ,"Dame un numero",10,13,"$"
mensaje2 db 10,13 ,"Dame un la potencia",10,13,"$"
n1 db 0
n2 db 0
n3 db 0
.code
inicio:     ;función inicio
 mov ax,@data ;Movemos el segmento data a ax
 mov ds,ax ; Movemos lo que esta en ax a ds
 mov dx,offset mensaje ;Imprimimos el primer mensaje parte 1
 mov ah, 09h ;Imprimimos el primer mensaje parte 2
 int 21h ;Imprimimos el primer mensaje parte 3
 mov ah,01     ;pausa y espera a que el usuario presione una tecla
 int 21h        ;interrupción para capturar
 sub al,30h   ;lo que el usuario presiono se guarda en al y se le resta 30h para convertirlo a un numero
 mov n1,al ;Movemos lo que esta en al a la variable n1
 mov n3,al  ;Movemos lo que esta en al a la variable n3
 mov ah, 09h ;imprimimos el mensaje 2 parte 1
 mov dx,offset mensaje2  ;imprimimos el mensaje 2 parte 2
 int 21h  ;imprimimos el mensaje 2 parte 3
 mov ah,01     ;pausa y espera a que el usuario presione una tecla
 int 21h           ;interrupcion para capturar
 sub al,30h     ;lo que el usuario presiono se guarda en al y se le resta 30h para convertirlo a un numero
 mov n2,al     ;Guardamos lo que el usuario preciono el n2
 mov cl,al ; movemos lo que esta en al a cl para decirle al ciclo cuantas vueltas va a dar
 sub cl,1 ;le restamos 1 para que no de una vuelta de mas
call ciclo ;llamada a ciclo
ciclo:  ;Funcion
 call ciclo1 ;llamada el procediemto 1
ciclo1 proc near : ;procedimiento ciclo
  mov al,n1 ;potencia parte 1
  mov bh,n3 ;potencia parte 2
  mul bh ;potencia parte 3
  mov n1,al
  loop ciclo1 ;loop a la funcion ciclo
  mov ax,4c00h ;fin parte 1
  int 21h; fin parte 2
fin: ;funcion fin
 mov ax,4c00h      ;funcion que termina el programa
 int 21h
end inicio

TURBO ASSEMBLER


; programa en emu8086
org 100h
.model small

.stack 64

datos segment
mensaje db 10,13 ,"Dame un numero",10,13,"$"

mensaje2 db 10,13 ,"Dame un la potencia",10,13,"$"

n1 db 0

n2 db 0

n3 db 0
datos ends

code segment
    assume ds:datos,cs:code

inicio:     ;función inicio

 mov ax,datos ;Movemos el segmento data a ax

 mov ds,ax ; Movemos lo que esta en ax a ds

 mov dx,offset mensaje ;Imprimimos el primer mensaje parte 1

 mov ah, 09h ;Imprimimos el primer mensaje parte 2

 int 21h ;Imprimimos el primer mensaje parte 3

 mov ah,01     ;pausa y espera a que el usuario presione una tecla

 int 21h        ;interrupción para capturar

 sub al,30h   ;lo que el usuario presiono se guarda en al y se le resta 30h para convertirlo a un numero

 mov n1,al ;Movemos lo que esta en al a la variable n1

 mov n3,al  ;Movemos lo que esta en al a la variable n3

 mov ah, 09h ;imprimimos el mensaje 2 parte 1

 mov dx,offset mensaje2  ;imprimimos el mensaje 2 parte 2

 int 21h  ;imprimimos el mensaje 2 parte 3

 mov ah,01     ;pausa y espera a que el usuario presione una tecla

 int 21h           ;interrupcion para capturar

 sub al,30h     ;lo que el usuario presiono se guarda en al y se le resta 30h para convertirlo a un numero

 mov n2,al     ;Guardamos lo que el usuario preciono el n2

 mov cl,al ; movemos lo que esta en al a cl para decirle al ciclo cuantas vueltas va a dar

 sub cl,1 ;le restamos 1 para que no de una vuelta de mas

call ciclo ;llamada a ciclo

ciclo:  ;Funcion

 call ciclo1 ;llamada el procediemto 1



ciclo1 proc near  ;procedimiento ciclo

  mov al,n1 ;potencia parte 1

  mov bh,n3 ;potencia parte 2

  mul bh ;potencia parte 3


  mov n1,al


  loop ciclo1 ;loop a la funcion ciclo

  mov ax,4c00h ;fin parte 1

  int 21h; fin parte 2
  ciclo1 endp

fin: ;funcion fin

 mov ax,4c00h      ;funcion que termina el programa

 int 21h
code ends
end inicio

DAVID MENDOZA
EMU8086
.model small
.stack 64 
.data mensaje db "Ingresa el numero de veces que se repetira el mensaje (1-9)",13,10,'$' 
repetir db 13,10,"Repitiendo el ciclo $" 
.code inicio proc far 
mov ax, @data 
mov ds, ax 
mov ah, 09 
lea dx, mensaje
 int 21h
 mov ah, 01
 int 21h 
sub al, 30h mov cl, al 
ciclo: 
mov ah, 09 
lea dx, repetir 
int 21h 
loop ciclo 
mov ax,4c00h 
int 21h 
inicio endp 
end

TURBO ASSEMBLER
.model small
.stack 64

datos segment
    mensaje db "Ingresa el numero de veces que se repetira el mensaje (1-9)",13,10,'$'
    repetir db 13,10,"Repitiendo el ciclo $"
datos ends
codigo segment
    assume cs:codigo,ds:datos
    inicio proc fa
    
    mov ax, @data
    mov ds, ax
    
    mov ah, 09
    lea dx, mensaje
    int 21h

    mov ah, 01
    int 21h
    sub al, 30h
    
    mov cl, al
    
    ciclo:
        mov ah, 09
        lea dx, repetir
        int 21h
    loop ciclo 

    mov ax,4c00h
    int 21h
inicio endp
codigo ends
 end  inicio

ARMANDO MONREAL
EMMU8086

org 100h

.data
mensaje db "Programa que utiliza loop e imprime del 0 al 9",13,10,"$"

.code
inicio:
mov ax,@data
mov ds, ax
mov dx,offset mensaje
mov ah,09h
int 21h

MOV DL, "0";se transfiere el caracter 0 al registro de datos en el byte bajo
MOV CX, 10;se transfiere 10 al registro contador
PRINT_LOOP:;va a imprimir hasta acabar las 26 interaciones
MOV AH, 02;se transifiere 02 al acumulador de byte alto
INT 21h; se realiza la interrupcion del dato ascii leido desde el teclado
INC DL;siguiente caracter numerico
LOOP PRINT_LOOP;continua hasta acabar las 10 vueltas

ret

TURBO ASSEMBLER

org 100h

data segment
    mensaje db "Programa que utiliza loop e imprime del 0 al 9",13,10,"$"
data  ends
    code     segment
        assume cs:code,ds:data
inicio:
    mov ax,data
    mov ds, ax
    mov dx,offset mensaje
    mov ah,09h
    int 21h

MOV DL, "0";se transfiere la letra 0 al registro de datos en el byte bajo
MOV CX, 10;se transfiere 10 al registro contador

PRINT_LOOP:;va a imprimir hasta acabar las 10 interaciones
    MOV AH, 02;se transifiere 02 al acumulador de byte alto
    INT 21h; se realiza la interrupcion del dato ascii leido desde el teclado

INC DL;siguiente caracter numerico
LOOP PRINT_LOOP;continua hasta acabar las 10 vueltas
ret
code ends
end inicio

Comentarios

Entradas populares de este blog

Registro de un procesador.