martes, 17 de abril de 2018

Ejercicio anterior de loop con macro

; Loop de tamanio entre 1-9 (utilizando macro)
; David Alejandro Mendoza Martinez
org 100h
.model small    ;Modelo de memoria small 
.stack 64       ;Segmento pila

imprimir macro msj  ;Macro para imprimir mensajes en pantalla
    mov ah, 09      ;Salida de una cadena de caracteres
    lea dx, msj     ;Cargar la direccion de cadena en DX
    int 21h         ;Interrupcion de sistema
endm
    
datos segment   ;Segmento de datos
    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      ;Segmento de codigo                          
    assume cs:codigo, ds:datos  ;Asignacion de segmentos

    inicio:         ;Funcion inicio
        mov ax, datos       ;Movemos el segmento datos a AX
        mov ds, ax          ;Movemos lo que esta en el registro AX a DS
        
        imprimir mensaje

        mov ah, 01          ;Entrada de caracteres con eco
        int 21h             ;Interrupcion de sistema
        sub al, 30h         ;Conversion a digito del caracter ascii
        
        mov cl, al          ;Movemos a CL(contador) lo que hay en AL
        
        ciclo:              ;Inicio del ciclo
            imprimir repetir
        loop ciclo          ;Fin del ciclo 

        mov ax,4c00h        ;Terminar con codigo de retorno
        int 21h             ;Interrupcion de sistema

    end inicio  ;Fin de la funcion inicio
codigo ends     ;Cierre del segmento codigo

No hay comentarios:

Publicar un comentario