Programa que imprime un caracter en coordenadas(con valores dados por el usuario)
TITLE Cadena que solicita una cadena y una posición para mostrarla
gotoxy macro fila,col ;creacion del macro con parametros "fila,col"
mov ah,02h;esto trabja junto a l interrupcion de video
mov dh,fila;se almacena parametro fila
mov dl,col;se almacena parametro col
mov bh,0h
int 10h ;interrupcion para video
endm;fin del macro
pantalla macro que;inicio de declaracion del macro
mov ah,02h;trabaja junto a la interrupcion
mov dl,que;se captura el caracter
int 21h;interrupcion para el DOS
endm;final de la macro
imprime macro eztryng;inicio y decraracion del macro
mov dx,offset eztryng ;offset(modo texto)
mov ah,9;trabaja con la interrupcion del DOS
int 21h;interrupcion para el DOS
endm;fin de la macro
DATOS SEGMENT PARA PUBLIC ;==============inicio de todos los datos
mensaje DB "INGRESE UN CARACTER: ",13,10,"$"
mensaje2 DB 13,10,"INGRESE X del 0 al 9: ",13,10,"$"
mensaje3 DB 10,"INGRESE Y del 0 al 9: ",13,10,"$"
caracter DB 40
varx DB ?
vary DB ?
vtext db 100 dup('$')
DATOS ENDS ;========termino de los datos
CODIGO SEGMENT PARA PUBLIC 'code'
ASSUME CS:CODIGO,DS:DATOS
startup:
mov ax,DATOS;se almacena el contenido del segmento datos
mov ds,ax;se mueve al registro ds
imprime mensaje;se llama al macro mensaje
mov si,00h ;se limpia el registro si
leer:
mov ax,0000 ;limpia el registro ax
mov ah,01h ;espera interrupcion
int 21h ;del teclado
mov caracter[si],al;se guarda en la variable caracter
inc si;incrementa el registro si
cmp al,0dh ;compara si se dio un enter(0dh es enter en hexadexadecimal)
ja leer ;si se cumple la comparecion salta a
jb leer ;si no se cumple la comparacion salta a
mov dx,offset caracter;se mueve el contenido de la variable offset caracter al registro dx
mov ah,0ah
int 21h
imprime caracter;se llama al macro imprime caracter
imprime mensaje2;se imprime el mensaje 2
mov ah,01h ;espera la
int 21h ;entrada en teclado
sub al,30h ;transforma de ascii a numero
mov bl,al;se mueve el numero al registro bl
mov varx,al ;mueve a varx el contenido de al(el numero ingresado)
imprime mensaje3;se imprime el mensaje3
mov ah,01h ;espera la
int 21h ;entrada en teclado
sub al,30h ;transforma de ascii a numero
mov bl,al;se almacena en bl
mov vary,al ;mueve a vary el contenido de al(el numero ingresado)
mov ax,0003h;trabaja con la interrupcion del video
int 10h;interrupcion de video
gotoxy vary,varx ;llama al macro gotoxy y envia los parametros
pantalla caracter[0];se llama al macro pantalla
mov ah,01h
int 21h;interrupcion del DOS
mov ax,4c00h ;interrupcion para
int 21h ;terminar el programa
CODIGO ENDS ;termina el segmento codigo
end startup ;termina starup
gotoxy macro fila,col ;creacion del macro con parametros "fila,col"
mov ah,02h;esto trabja junto a l interrupcion de video
mov dh,fila;se almacena parametro fila
mov dl,col;se almacena parametro col
mov bh,0h
int 10h ;interrupcion para video
endm;fin del macro
pantalla macro que;inicio de declaracion del macro
mov ah,02h;trabaja junto a la interrupcion
mov dl,que;se captura el caracter
int 21h;interrupcion para el DOS
endm;final de la macro
imprime macro eztryng;inicio y decraracion del macro
mov dx,offset eztryng ;offset(modo texto)
mov ah,9;trabaja con la interrupcion del DOS
int 21h;interrupcion para el DOS
endm;fin de la macro
DATOS SEGMENT PARA PUBLIC ;==============inicio de todos los datos
mensaje DB "INGRESE UN CARACTER: ",13,10,"$"
mensaje2 DB 13,10,"INGRESE X del 0 al 9: ",13,10,"$"
mensaje3 DB 10,"INGRESE Y del 0 al 9: ",13,10,"$"
caracter DB 40
varx DB ?
vary DB ?
vtext db 100 dup('$')
DATOS ENDS ;========termino de los datos
CODIGO SEGMENT PARA PUBLIC 'code'
ASSUME CS:CODIGO,DS:DATOS
startup:
mov ax,DATOS;se almacena el contenido del segmento datos
mov ds,ax;se mueve al registro ds
imprime mensaje;se llama al macro mensaje
mov si,00h ;se limpia el registro si
leer:
mov ax,0000 ;limpia el registro ax
mov ah,01h ;espera interrupcion
int 21h ;del teclado
mov caracter[si],al;se guarda en la variable caracter
inc si;incrementa el registro si
cmp al,0dh ;compara si se dio un enter(0dh es enter en hexadexadecimal)
ja leer ;si se cumple la comparecion salta a
jb leer ;si no se cumple la comparacion salta a
mov dx,offset caracter;se mueve el contenido de la variable offset caracter al registro dx
mov ah,0ah
int 21h
imprime caracter;se llama al macro imprime caracter
imprime mensaje2;se imprime el mensaje 2
mov ah,01h ;espera la
int 21h ;entrada en teclado
sub al,30h ;transforma de ascii a numero
mov bl,al;se mueve el numero al registro bl
mov varx,al ;mueve a varx el contenido de al(el numero ingresado)
imprime mensaje3;se imprime el mensaje3
mov ah,01h ;espera la
int 21h ;entrada en teclado
sub al,30h ;transforma de ascii a numero
mov bl,al;se almacena en bl
mov vary,al ;mueve a vary el contenido de al(el numero ingresado)
mov ax,0003h;trabaja con la interrupcion del video
int 10h;interrupcion de video
gotoxy vary,varx ;llama al macro gotoxy y envia los parametros
pantalla caracter[0];se llama al macro pantalla
mov ah,01h
int 21h;interrupcion del DOS
mov ax,4c00h ;interrupcion para
int 21h ;terminar el programa
CODIGO ENDS ;termina el segmento codigo
end startup ;termina starup
Comentarios
Publicar un comentario