0% encontró este documento útil (0 votos)
4 vistas6 páginas

Código de macros para posicionar cursor en ASM

Cargado por

Edgardo Orellana
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
4 vistas6 páginas

Código de macros para posicionar cursor en ASM

Cargado por

Edgardo Orellana
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

gotoxy macro f,c ; Pociciona el cursor en la pocicion X,Y que le pasamos como parametro

push AX ; Guardamos AX registro en pila


Push BX ; Guardamos BX registro en pila
Push CX ; Guardamos CX registro en pila
Push DX ; Guardamos DX registro en pila
Mov BH,00h ; Pagina
Mov DH,f ; Fila
Mov DL,c ; Columna
Mov AH,02h ; Establecer la funcion de mover cursor
Int 10h ; Activamos la funcion
Pop DX ; Restauramos el registro DX desde la pila
Pop CX ; Restauramos el registro CX desde la pila
Pop BX ; Restauramos el registro BX desde la pila
Pop AX ; Restauramos el registro AX desde la pila
Endm

diagonal macro col

mov ah,02
mov bh,00
mov dh,f ; fila
mov dl,c ; columna
int 10h
mov aux1,bl
mov bl,col
mov ah,09
mov bh,0
mov cx,1
int 10h
mov bl,aux1

endm diagonal

horizontal macro col


mov ah,02
mov bh,00
mov dh,4 ; fila
mov dl,c ; columna
int 10h
mov aux1,bl
mov bl,col
mov ah,09
mov bh,0
mov cx,1
int 10h
mov bl,aux1

endm horizontal

.model small
.stack
.data
mensj1 db "Digite texto: ",13,10,"$"
mens db "Orantes$",0
mensaje db "jose Alberto$",0
mensaje1 db 13,10, "Digite el texto: $"
mensaje2 db 13,10, "Texto invertido: $"
cadena db 100 DUP (0)
aux db 0
aux1 db 0
f db 4
c db 4
db 13,10, "$"

.code

inicio:
.startup
;mov ax,@data
;mov ds,ax

call mvideo

mov ah,09h
mov dx,offset mensj1
gotoxy 01,07;;;;;;;;;;colocar pocicion del cursor
int 21h
mov ah,0ah
mov dx, offset cadena
mov cadena[0],30 ; tamaño maximo de caracteres
int 21h

mov bx,0
lazo:
mov al,cadena[bx+2]

mov aux,al
diagonal 04h
mov al,aux
call impresion
call vertical
call impresion
horizontal 02h
inc f
inc c
inc bx
cmp bl,cadena[1];comparamos bl con el tamaño usado de la lista
jne lazo
mov f,4
mov c,20
jmp lazo1

lazo1:
mov al,cadena[bx+1]

mov aux,al
diagonal 05h
;call cambia
mov al,aux
call impresion
call vertical1
call impresion
horizontal 08h
call impresion
inc f
inc c
dec bx
cmp bl,00;comparamos bl con el tamaño usado de la lista
jne lazo1

;
invierte proc near
mov dx, offset mensaje1
mov ah,09
int 21h
mov cx,100; numero maximo de caracteres a ingresar
;---------
invirtiendo:;Ingresar los caracteres
mov ah,07h
int 21h
cmp al,13; comparar el caracter con la letra enter
je imprimiendo
push ax
mov dl,al; almacenar la letra
mov ah,02h
int 21h
inc si
loop invirtiendo
mov ah,07h
int 21h

imprimiendo:
mov dx,offset mensaje2
mov ah,09h
int 21h
mov cx,si
mov ah,09h
mov al,20h
mov bh,00h
mov bl,0dh
mov cx,si
int 10h
sacando:
pop ax
mov ah,02h
mov dl,al
int 21h
loop sacando
invierte endp ;*******

;--------------para imprimir vertical diagonal ... tres veces

;para hacer un cuadro


mov ax,0605h ;recorre cinco lineas
mov bh,37h ;fondo cafe, con primer plano azul
mov cx,040ch ;desde el renglon 10, columna 28
mov dx,0e34h ; hasta el renglon 14, columna 52(parte de la pantalla)
int 10h ;llama al BIOS
;-----------------------------
mov AH, 01H ;tamaño del cursor
mov cx ,0104h
int 10h

mov ah,02h ; peticion para asignar el cursor


mov bh,00 ; pagina numero 0
mov dx,0a14h ;renglon y columna para colocar el cursor
int 10h
mov ah,09h
mov dx,offset mens
int 21h

mov ah,02h
mov bl,0fh
mov dx,0f0ch
int 10h

; imprimiendo * de color?
mov ax,092ah;ah=09 al=2a(*)
mov bx,000dh;bh=numero de pagina 0 bl= color del *
mov cx,10h; cantidad de veces q se repetira el *
int 10h

mov ah,0h
int 16h
salir:
mov ah,01h
int 21h
mov ax,4c00h
int 21h
ret
.exit

; ---------------> procesos

; para pocionar el cursor


;el dx,"la pocicion
;call proxy
; proxy proc near
;mov ah,02
;int 10h
; endp
vertical1 proc near

mov ah,02
mov bh,00
mov dh,f ; fila
mov dl,20 ; columna
int 10h
mov aux1,bl
mov bl,06h
mov ah,09
mov bh,0
mov cx,1
int 10h
mov bl,aux1
ret
endp

vertical proc near

mov ah,02
mov bh,00
mov dh,f ; fila
mov dl,4 ; columna
int 10h
mov aux1,bl
mov bl,06h
mov ah,09
mov bh,0
mov cx,1
int 10h
mov bl,aux1
ret
endp
mvideo proc near
mov ah,00
mov al,03h
mov cx,40
int 10h
mov ax,0608h
mov bh,90h ; color azul
mov cx,040ch ; (0,0) ,0000
mov dx,0e34h ; (24,79) ,184fh
int 10h
ret
endp
impresion proc near
mov ah,0eh
mov bh,00
int 10h
ret
endp
end inicio

También podría gustarte