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

Comentarios

Entradas populares de este blog

Programas con macros practicas en clase

Tarea uno.Historia de programas graficos y conceptos.