Ensamblador - Pelotita que rebota en la pantalla

 
Vista:

Pelotita que rebota en la pantalla

Publicado por Gabriela (1 intervención) el 28/09/2006 03:54:18
Hola pues me dejaron un programa en ensamblador de una pelotita que va de arriba hacia abajo o de derecha a izquierda como sea pero que a la hora de rebotar la pelotita cambie de color y termina cuando salga de la pantalla, es decir que si esta rebotando de arriba hacia abajo, termina si se sale por la izquierda o derecha o si esta rebotando de izquierda a derecha, termina cuando se salga por arriba o por debajo, tengo un programa pero no lo puedo modificar como lo quiero, espero que alguien me pueda ayudar porque estoy desesperada y me urge mucho please se los agradeceria mucho mi correo es [email protected] porfitas ayudenme

Este es el programa que tengo:

.model small
.stack 0100h
.data
i dw 0h
arr db 1h
izq1 db 1h
der db 0h
abj db 0h

oldx dw 0h
oldy dw 0h

valx dw 140h
valy dw 0dch

Mensaje db "Pon version 0.2",0dh,0ah
db "Este es el ejemplo", 0dh,0ah
fin db "$"

.code
main proc

mov ax,@data
mov ds,ax

pon: mov ah,0h ; Iniciar Video 640 * 480
mov al,12h
int 10h

mov [word ptr i],145h ; Dibuja caja, lineas horizontales
mov cx,9dh
otrav: inc cx
mov dx,76h
call int10_C
mov dx,16ah
call int10_C
dec [word ptr i]
cmp [word ptr i],1h
ja otrav

mov [byte ptr i],0f5h ; Dibuja caja, lineas verticales
mov dx,75h
otrav2: inc dx
mov cx,9eh
call int10_C
mov cx,1e2h
call int10_C
dec [word ptr i]
cmp [word ptr i],1h
ja otrav2

loop1: call tok
call tok2
jz loop1 ;until keypressed *

mov ah,0h
mov al,3h
int 10h
mov ah,9h
mov dx, offset mensaje
int 21h
mov ah,4ch
int 21h
main endp

tok2 proc

cmp ax,78h
jbe colarr ;colision arriba
add ax,2
cmp ax,168h
jae colabj ;colision abajo
mov ax,[valx]
dec ax
cmp ax,0A0h
jbe colizq ;colision izquierda
add ax,2
cmp ax,1e0h
jae colder ;colision derecha
jmp definexy ;no hay colision
colarr: mov [byte ptr arr],0h
mov [byte ptr abj],1h
jmp definexy
colizq: mov [byte ptr der],1h
mov [byte ptr izq1],0h
jmp definexy
colabj: mov [byte ptr abj],0h
mov [byte ptr arr],1h
jmp definexy
colder: mov [byte ptr izq1],1h
mov [byte ptr der],0h
definexy: mov ah,[izq1] ; definexy: define valor x,y
mov al,[arr]
test ah,al
jz chk1
dec [word ptr valx]
dec [word ptr valy]
jmp delpunto
chk1: mov ah,[der]
mov al,[arr]
test ah,al
jz chk2
inc [word ptr valx]
dec [word ptr valy]
jmp delpunto
chk2: mov ah,[izq1]
mov al,[abj]
test ah,al
jz chk3
dec [word ptr valx]
inc [word ptr valy]
jmp delpunto
chk3: mov ah,[der]
mov al,[abj]
test ah,al
jz delpunto
inc [word ptr valx]
inc [word ptr valy] ; fin definexy

delpunto: call delpuntox
newdot: call newdotx
ret
tok2 endp

tok proc
mov ax,[valx] ; repeat *
mov [oldx],ax
mov ax,[valy]
mov [oldy],ax

mov ax,[valy] ; buscar colision
dec ax
ret
tok endp

delpuntox proc
mov ah,0ch ; borra viejo punto
mov al,0h
mov bh,0h
mov cx,[oldx]
mov dx,[oldy]
int 10h
ret
delpuntox endp

newdotx proc
mov ah,0ch ; dibuja nuevo punto
mov al,0fh
mov bh,0h
mov cx,[valx]
mov dx,[valy]
int 10h
mov cx,0h
mov dx,0FA0h
mov ah,86h
int 15h
mov ah,01h
int 16h
ret
newdotx endp

int10_C proc
mov ah,0ch
mov bh,0h
mov al,0fh
int 10h
ret
int10_C endp

end main
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

Pelotita que rebota en la pantalla

Publicado por jose (1 intervención) el 29/05/2013 07:20:52
alguien ayuda!!
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