;===========================================================================
;===========================================================================
; PROGRAMA : nom_5
; FUNCION : Escribir el nombre el numero de veces que se pida.
;===========================================================================
;===========================================================================
; DECLARACION DE CONSTANTES
;===========================================================================
CR EQU 13 ; Constante CR (Retorno de carro)
LF EQU 10 ; Constante LF (Salto de l?nea)
IMPRIMIR EQU 9
FIN EQU 4C00H
DOS EQU 21H
;===========================================================================
; DECLARACION DEL SEGMENTO DE DATOS
;===========================================================================
DATOS SEGMENT ; Inicio del segmento de datos
LINEA1 DB CR,LF,'Letrero cinco veces',CR,LF,'$'
DATOS ENDS ; Fin del segmento de datos
;===========================================================================
; DECLARACION DEL SEGMENTO DE PILA
;===========================================================================
PILA SEGMENT STACK ; Inicio del segmento de pila
DB 64 DUP('PILA') ; Inicializaci?n de la pila
PILA ENDS ; Fin del segmento de pila
;===========================================================================
; DECLARACION DEL SEGMENTO DE CODIGO
;===========================================================================
CODIGO SEGMENT ; Inicio del segmento de codigo
nom_5 PROC NEAR ; Inicio procedimiento nom_5
ASSUME CS:CODIGO,DS:DATOS,SS:PILA; Asignar segmentos
ORG 100H
MOV AX,DATOS ; AX=Direcci?n del segmento de datos
MOV DS,AX ; DS=AX. Indicar el segmento de datos
LEA DX,LINEA1 ; DS:DX = direccion de LINEA1
MOV CX,003H ; Numero de veces que se repite el ciclo, al poner el ciclo por ejemplo si quieres 4 pon la mitad que seria 2.
XOR DX,DX
CICLO:
CALL ESCRIBE
INT DOS
LOOP CICLO
CALL SALIR
nom_5 ENDP ; Fin del procedimiento nom_5
;-----------------------------------------------------------------------
;---Imprime en pantalla.
;---Entrada: DX palabra con el valor a mostrar.
;---Llama: ESCRIBE
;----------------------------------------------------------------------
ESCRIBE PROC NEAR ; Inicio procedimiento ESCRIBE
MOV AH,9 ; Funci?n DOS para escribir texto en pantalla
INT DOS ; Llamar a la interrupci?n del DOS
RET ; Volver o retornar
ESCRIBE ENDP ; Fin del procedimiento ESCRIBE
SALIR PROC NEAR
MOV AX, FIN
INT DOS
RET
SALIR ENDP
;-----------------------------------------------------------------------
CODIGO ENDS ; Fin del segmento codigo
;===========================================================================
END nom_5 ; Empezar a ejecutar el procedimiento nom_5
;===========================================================================
*************************************************
PROGRAMA ORIGINAL
************************************
.model small
.stack 64
.data ;En.data se declaran variables y cadenas a usar en el programa
mensaje db 0Ah, 0dh,"Letrero cinco veces ", "$" ;Declaramos una cadena.
.code
inicio:
mov cx, 0005 ;numero de veces a repetir el ciclo
ciclo:
mov ax,@data
mov ds,ax
mov dx,offset mensaje ;lee la cadena desde nuestro segmento de datos
mov ah, 09h
int 21h
loop ciclo ;Se repite desde nuestra etiqueta ciclo.
mov ah,04ch ;Al terminar finaliza el programa.
int 21h
end inicio
No hay comentarios:
Publicar un comentario