En este ejemplo simplemente capturamos una cadena en un vector y la imprimimos cuantas veces quiera el usuario, en este programa aprendemos a usar vectores en MASM.
Los vectores se pueden declarar de cualquier tipo de dato que una variable cualquiera solo que se especifica la longitud del vector y con que tipo de dato inicia al crearse para ello se utiliza la palabra reservada dup.
Ejemplo de declaracion de un vector:
vector db 100 dup('$')
En este caso declaramos un vector de tipo db con una longitud de 100 posiciones y la iniciamos con cadena vacia ('$').
Para manejar las posiciones de los vectores se utilizan los registros SI y DI.
Ejemplo del programa usuando un vector para almacenar una cadena digitada por el usuario.
.model small
.stack 64
.data
inicio db 'Repetir Texto..',10,13,'$'
ingresar db 10,13,'Ingresa tu nombre', 10,13,'$'
nombre db 'Su nombre es: $'
repetir db 10,13,'Quiere repetir s/n?',10,13,'$'
;Declaracion del vector
vtext db 100 dup('$')
.code
mov ax,@data
MOV DS,AX
lea dx,inicio
mov ah,09
int 21h
lea dx,ingresar
mov ah,09
int 21h
;Iniciamos nuestro conteo de si en la posicion 0.
mov si,00h
leer:
mov ax,0000
mov ah,01h
int 21h
;Guardamos el valor tecleado por el usuario en la posicion si del vector.
mov vtext[si],al
inc si ;Incrementamos nuestro contador
cmp al,0dh ;Se repite el ingreso de datos hasta que se teclee un Enter.
ja leer
jb leer
lea dx,nombre
mov ah,09
int 21h
ver:
mov dx,offset vtext ;Imprime el contenido del vector con la misma instrucción de una cadena
mov ah,09h
int 21h
lea dx,repetir ;imprime si quiere ver de nuevo el texto escrito.
mov ah,09
int 21h
mov ah,01h
int 21h
cmp al,73h ;Si la tecla presiona es una s se repite la impresión del vector.
je ver
salir:
mov ah,4ch
int 21h
end
Programa en ejecución:
gracias <3
ResponderEliminar