Ensamblador - imagen cursor

 
Vista:

imagen cursor

Publicado por Riku (7 intervenciones) el 11/04/2008 02:54:48
Yo de nuevo en este programa lo que debo hacer es k la imagen del cursor cambie por ejemplo un recuadro completo pero
que no deje otra marca al moverlo, pero no se exactamente que se podria modifcar. Ojala me puedan ayudar. Gacias de antemano

title programa que mueve el cursor por toda la pantalla.

dato segment para 'DATA'
re db 01
co db 01
dato ends

codi segment para 'CODE'
assume cs:codi, ds:dato
movi proc far
push ds
sub ax,ax
push ax
mov ax,dato
mov ds,ax
;***
;*** codigo del programa
;***
call clsc
pico: call posi
col1: call lese
cmp al,'.'
je fina
cmp al,00
je cole
jmp col1
cole: call lese
cmp al,'H'
je dere
cmp al,'P'
je inre
cmp al,'K'
je deco
cmp al,'M'
je inco
jmp pico
dere: dec re
jmp pico
inre: inc re
jmp pico
deco: dec co
jmp pico
inco: inc co
jmp pico
fina: ret
movi endp

clsc proc near
mov ax,0600h
mov cx,0000h
mov dx,3080h
mov bh,07h
int 10h
ret
clsc endp

posi proc near
mov ah,02h
mov dh,re
mov dl,co
mov bh,00
int 10h
ret
posi endp

lese proc near
mov ah,08h
int 21h
ret
lese endp

codi ends
end movi
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:imagen cursor

Publicado por MSH (120 intervenciones) el 12/04/2008 05:37:24
Saludos:

No hubo mucho que cambiar. Espero haber captado tu idea.

dato segment para 'DATA'
re db 0ah
co db 0ah
dato ends

codi segment para 'CODE'
assume cs:codi, ds:dato
movi proc far
push ds
sub ax,ax
push ax
mov ax,dato
mov ds,ax

;***
;*** codigo del programa
;***

call clsc ;rutina para limpiar la pantalla

pico:
call posi ;rutina para la posición del cursor
col1:
call lese
cmp al,'.'
je fina
cmp al,'a'
je dere
cmp al, 's'
je inre
cmp al,'d'
je deco
cmp al,'f'
je inco
jmp pico


dere:
mov ah,re ;decrementa
sub ah,01
mov re,ah
jmp pico
inre:
mov ah,re ;incremnta
add ah,01
mov re,ah
jmp pico
deco: mov ah,co ;decrementa
sub ah,01
mov co,ah
jmp pico
inco: mov ah,co ;incrementa
add ah,01
mov co,ah
jmp pico
fina: ret
movi endp

clsc proc near ;rutina para limpiar la pantalla
mov ax,0600h ;limpia pantalla
mov bh,08h
mov cx,0000h
mov dx,314fh ;usar pantalla completa
int 10h
ret
clsc endp

posi proc near
mov ah,02h ;petición para colocar el cursor
mov dh,re
mov dl,co
mov bh,00
int 10h
ret
posi endp

lese proc near
mov ah,08h
int 21h
ret
lese endp

codi ends
end movi
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:imagen cursor

Publicado por Riku (7 intervenciones) el 12/04/2008 09:59:52
Hola que tal probe el programa pero sigue apareciendo el guion como cursor y no se puede mover,
muchas gracias por tu respuesta ojala y me puedas echar mas la mano por fa.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:imagen cursor

Publicado por Riku (7 intervenciones) el 12/04/2008 10:09:23
disculpa ya chek mejor y si se mueve el cursor, pero me podrias ayudar para que en vez del guion k aparece normalmente sea un cuadro rellenado, y que aparesca al principio de la hoja, gracias de antemano
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:imagen cursor

Publicado por MSH (120 intervenciones) el 12/04/2008 20:04:03
OK, va de nuevo.

dato segment para 'DATA'
re db 01h
co db 01h
dato ends

codi segment para 'CODE'
assume cs:codi, ds:dato
movi proc far
push ds
sub ax,ax
push ax
mov ax,dato
mov ds,ax

;***
;*** codigo del programa
;***

call clsc ;rutina para limpiar la pantalla

pico:
call posi ;rutina para la posición del cursor
call chars ;rutina para los caracteres
call lese
cmp al,'.'
je fina
cmp al,'a' ;mueve hacia arriba
je dere
cmp al, 's' ;mueve hacia abajo
je inre
cmp al,'d' ;mueve hacia la izquierda
je deco
cmp al,'f' ;mueve hacia la derecha
je inco
jmp pico

dere:
call borrow
mov ah,re ;decrementa
sub ah,01
mov re,ah
jmp pico

inre:
call borrow
mov ah,re ;incremnta
add ah,01
mov re,ah
jmp pico

deco:
call borrow
mov ah,co ;decrementa
sub ah,01
mov co,ah
jmp pico

inco:
call borrow
mov ah,co ;incrementa
add ah,01
mov co,ah
jmp pico
fina:
call clsc
ret
movi endp

clsc proc near ;rutina para limpiar la pantalla
mov ax,0600h ;limpia pantalla
mov bh,01h
mov cx,0000h
mov dx,314fh ;usar pantalla completa
int 10h
ret
clsc endp

posi proc near
mov ah,02h ;petición para colocar el cursor
mov dh,re
mov dl,co
mov bh,00h
int 10h
ret
posi endp

chars proc near
mov ah,09h ;petición para mostrar caracter
mov al,0dbh;cuadro
mov bh,00h;pagina
mov bl,07h ;atributo de color
mov cx,01 ;una vez
int 10h
ret
chars endp

borrow proc near
mov ah,09h ;petición para mostrar caracter
mov al,0dbh;cuadro
mov bh,00h ;pagina
mov bl,00h ;atributo de color negro
mov cx,01 ;una vez
int 10h
ret
borrow endp

lese proc near
mov ah,08h
int 21h
ret
lese endp

codi ends
end movi
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:imagen cursor

Publicado por Riku (7 intervenciones) el 14/04/2008 01:50:42
muchas gracias por responder, disculpa las molestias, me preguntaba si tmb m ppodrias ayudar a dibujar el recorrido del cursor despues de apretar cierta tecla y k cuando la vuelva a apretar ya no dibuje el camino del cursor; solo si puedes ayudarm claro espero no sea mucha molestia de todas formas gracias de antemano.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:imagen cursor

Publicado por Riku (1 intervención) el 14/04/2008 08:34:16
yop de nuevo ya logre terminar la tarea del cursor muchas gracias, solo me falta lo de fibonacci, disculpa las molestias seeya
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar