Ejemplo Eduardo Aquino
- 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
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
codigo segment
assume
ds:datos,cs:codigo
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
codigo ends
end inicio
Ejemplo Armando Monreal
- EMU8086 y Turbo Aseembler
.model small
.stack 64
datos segment
mensaje db
"Programa que utiliza loop e imprime del 0 al 9",13,10,"$"
datos ends
codigo segment
assume cs:codigo,
ds:datos
inicio:
mov ax,datos
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 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
codigo ends
end inicio
Ejemplo David Mendoza
.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
.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:
mov ax, datos
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
codigo ends
end inicio
Ejemplo Maestra
- EMU8086
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, 01 Aqui pide el dato y lo imprime
mov ah,01 ;
Pausa y espera a que el usuario precione una tecla
int 21h ;
Interrupcion para capturar
cmp al,'S' ; El caracter leeido la 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
; Uso del LOOPZ,
REPETICION BASADA EN
; Comparacion si es igual a 0
; Interrupcion para leer en el teclado INT16H
; Cuando usamos la int 16H , el parametro a
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, 01 Aqui pide el dato y lo imprime
mov ah,01 ;
Pausa y espera a que el usuario precione una tecla
int 21h ;
Interrupcion para capturar
cmp al,'S' ; El caracter leeido la 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
No hay comentarios:
Publicar un comentario