Вы находитесь на странице: 1из 8

;Movimiento parablico ideal

;X,Y posicin, salida


;Vx,Vy, velocidad, entrada
;ax, ay, aceleraciones
.ORIG x3000
LD R3, CERO; contador 't'
LD R4, TOP_TIME ; Tiempo lmite
;-----DATOS INGRESADOS POR JUGADOR----; Vx_IN, Vy_IN
;--------BUCLE PRINCIPAL--------------FOR
ADD R3, R3, #1
JSR VEL_X
JSR VEL_Y
JSR POS_X
JSR POS_Y
LEA R5, XX
ADD R5, R5, R3
LD R0, X_OUT
STR R0, R5, 0
LEA R5, YY
ADD R5, R5, R3
LD R0, Y_OUT
STR R0, R5, 0

ADD R5, R4, R3


BRn FOR
HALT
;--------------CLCULO DE VELOCIDAD EN X--------------------;Vx = Vx + ax*t, primero se realiza ax*t, luego se suma a Vx
;pero en este caso DE PRUEBA INICIAL no hay aceleracin en x
VEL_X

LD R1, Vx_IN
LD R2, CERO
ADD R5, R3, #0 ;t

LOOP_AT ADD R2,R2, #0; ax = 0


ADD R5, R5, #-1
BRp LOOP_AT
ADD R1, R1, R2; Vx + axt
ST R1, Vx_IN
RET

;--------------CLCULO DE VELOCIDAD EN Y--------------------;Vy = Vy + ay*t, ac si hay ay=g=-10


VEL_Y

LD R1, Vy_IN ;Velocidad actual


LD R2, CERO
ADD R5, R3, #0
LD R0, ay

LOOP_at ADD R2, R2, R0; ay = -10


ADD R5, R5, #-1
BRp LOOP_at
ADD R1, R1, R2; Vy + ayt
ST R1, Vy_IN
RET
;--------------CLCULO DE POSICIN EN X---------------------;X = X + Vx*t + (1/2)*ax*t^2
POS_X

ADD R5, R3, #0 ;t


LD R6, CERO

LOOP_t2 ADD R6,R6,R3


ADD R5, R5, #-1
BRp LOOP_t2
ST R6, t_2

axt_2

; R6 = t^2

LD R0, ax
ADD R0,R0,#0
BRz ax_z
ADD R5, R5, R0 ; R5 ya estaba en 0
ADD R6, R6, #-1
BRp axt_2
LD R6, CERO

Div_2

ax_z

ADD
ADD
NOT
ADD
ADD
BRp

R5, R5,
R6, R6,
R0, R6
R0, R0,
R0, R0,
Div_2

#-1
#1; Comienza en 0
#1
R5

;R5 = axt^2 / 2

BRnzp ax_nz
ADD R0,R0,x0
ST R0, ax
LD R5, CERO ; Caso cuando ax = 0

ax_nz

LD R1, Vx_IN
LD R0, CERO
ADD R6, R3, R0

Vxt

ADD R0, R1, R0 ; Vx


ADD R6, R6, #-1
BRp Vxt

SUMA_X LD R6, X_OUT


ADD R6, R6, R0; X + Vx*t
ADD R6, R6, R5; X + Vx*t + axt2/2

; R5 = axt^2

ST R6, X_OUT
RET
;--------------CLCULO DE POSICIN EN Y---------------------;Y = Y + Vy*t + (1/2)*ay*t^2
POS_Y

LD R5, t_2
LD R6, CERO

Div__2 ADD
ADD
NOT
ADD
ADD
BRp

R5, R5,
R6, R6,
R0, R6
R0, R0,
R0, R0,
Div__2

#-1
#1; Comienza en 0
#1
R5

;R5 = t^2 / 2

ST R5, T_PRUEBA
LD R0, ay
LD R6, CERO
ayt_2_2 ADD R6, R5, R6
ADD R0, R0, #1
BRn ayt_2_2

;R6 = ayt^2 / 2

LD R1, Vy_IN
LD R0, CERO
ADD R5, R3, #0
Vyt

ADD R0, R1, R0 ;t


ADD R5, R5, #-1
BRp Vyt

R0 = Vyt

SUMA_Y LD R5, Y_OUT


ADD R5, R5, R0; Y + Vy*t
ADD R5, R6, R5; Y + Vy*t + ayt2/2
ST R5, Y_OUT
RET
;--------------------VARIABLES--------------------------------UNO
.FILL #1
CERO
.FILL #0
TOP_TIME .FILL #-30
Vx_IN .FILL #200
Vy_IN .FILL #500
X_OUT .FILL #0
Y_OUT .FILL #5000
t_2
.BLKW 1
ST_axt_2 .BLKW 1
ST_axt2_2 .BLKW 1
ax
.FILL #0
ST_ayt_2 .BLKW 1
ST_ayt2_2 .BLKW 1
ay
.FILL #-10
XX
.BLKW 31

YY
.BLKW 31
T_PRUEBA .BLKW 1

;-------------------------POCICIN X---------------------------POS_X

LD R1, X
LD R2, Vx
LD R4, ax
ST R7, SAVE_R7
JSR POSICION ;********************************************************
ST R1, X
LD R7, SAVE_R7
RET
;---------------------------------------------------------------

.END

;Movimiento parablico ideal


;X,Y posicin, salida
;Vx,Vy, velocidad, entrada
;ax, ay, aceleraciones
.ORIG x3000
GRAMA

LD R3, CERO; contador 't = 0', R3 CORRESPONTE A 't', DURANTE TODO EL PRO
LD R4, TOP_TIME ; Tiempo lmite

;-----DATOS INGRESADOS POR JUGADOR----; Vx, Vy


;~~~~~~~~~~~~~~~~~~~BUCLE PRINCIPAL~~~~~~~~~~~~~~~~~~~~~~~
FOR
ADD R3, R3, #1 ; t=t+1
JSR VEL_X
JSR VEL_Y
JSR POS_X
JSR POS_Y
;JSR COLISION
LEA R5, XX
ADD R5, R5, R3
LD R0, X
STR R0, R5, 0

LEA R5, YY
ADD R5, R5, R3
LD R0, Y
STR R0, R5, 0
ADD R5, R4, R3
BRn FOR
HALT
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;----------------VELOCIDAD EN X--------------------------------VEL_X

LD R1, Vx
LD R2, ax
ADD R4, R3, #0
ST R7, SAVE_R7
JSR VELOCIDAD
ST R1, Vx
ST R2, ax
LD R7, SAVE_R7
RET

;Vx
;ax
;t
;CLCULO DE V = Vo + at ;
;almacena la velocidad calculada
;almacena la aceleracin total en x

;--------------------------------------------------------------;----------------VELOCIDAD EN Y--------------------------------VEL_Y

LD R1, Vy
LD R2, ay
ADD R4, R3, #0
ST R7, SAVE_R7
JSR VELOCIDAD
ST R1, Vy
ST R2, ay
LD R7, SAVE_R7
RET

;Vy
;ay
;t
;CLCULO DE V = Vo + at ;
;almacena la velocidad calculada
;almacena la aceleracin total en y

;--------------------------------------------------------------;-------------------------POCICIN X---------------------------POS_X

LD R1, X
LD R2, Vx
LD R4, ax
ST R7, SAVE_R7
JSR POSICION ;
ST R1, X
LD R7, SAVE_R7
RET

;--------------------------------------------------------------;-------------------------POCICIN Y---------------------------POS_Y

LD R1, Y
LD R2, Vy
LD R4, ay

ST R7, SAVE_R7
JSR POSICION ;
ST R1, Y
LD R7, SAVE_R7
RET
;--------------------------------------------------------------;-------------------------COLISIN-----------------------------;--------------------------------------------------------------;=======================VELOCIDAD===============================
;V = Vo + at, Donde Vo = R1, a = R2, t = R3
VELOCIDAD
;
ST R7, SAVE_R7_2
;
JSR VISCOSIDAD
on viscosidad
;
ADD R2, R2, R0

;Primero, se calcula aceleracin c


;Aceleracin total con viscosidad

ADD R5, R3, #0


LD R6, CERO
LOOP_at ADD R6, R6, R2;
ADD R5, R5, #-1
BRp LOOP_at

;Se calcula a*t = R6

ADD R1, R1, R6;

;V = Vo + at

LD R7, SAVE_R7_2
RET
;===============================================================
;<<<<<<<<<<<<<<<<<<<<<<ACELERACIN CON VISCOSIDAD>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; a = (p*(V^2)*Cd*A) /
aceleracin queda: a =
; k= 0.02 = 1/50 , por
nivel y pjaro.
; R1: Velocidad , R4 =

2m Tomando Cd=0.1, A=0.2 , p=1.1 , m=0.5 , La ecuacin de


(V^2)*k
lo tanto ad = (V^2)/50, este valor variar dependiendo del
k, R5 = aceleracin obtenida

;DADO QUE UN NMERO AL CUADRADO SIEMPRE ES POSITIVO, PARA EFECTOS DE CALCULAR


;EL CUADRADO PARA UNA VELOCIDAD NEGATIVA CON EL MISMO MTODO, ESTA SE NIEGA

;VISCOSIDAD
;
LD R4, K
;Inicialmente negativa
;
LD R5,CERO
;
ADD R5, R1, #0
;
BRp POS
; Si la V es positiva, la a ser negativa (-k*V^2) OJO CON EL
!!!!!
;NEGACION NOT R5,R1
;
ADD R5, R5, #1
;
NOT R4, R4
; Si la V es negativa, a ser positiva (k*V^2)
;
ADD R4, R4, #1
;POS

LD R6, CERO

;
;

LD R0, CERO
ADD R0, R5, #0

;R0 = V = R5

;LOOP_V2
ADD R6,R6,R5
;
ADD R0, R0, #-1
;
BRp LOOP_V2
;

; R6 = V^2

LD R0, CERO

; En este caso se hace una divisin *************************************


;CAMBIAR ORDEN DE EVALUACIN DE SIGNO!!!!!!!!!!!
;kV_2
;
;

ADD R0, R0, R4


ADD R6, R6, #-1
BRp kV_2

RET

; R0 = kV_2 = a:drag

;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>
;==============================POSICIN=================================
; X = Xo + Vt + (1/2)at^2
; R1 = X, R2 = V, R4 = a
POSICION
ADD R5, R3, #0 ;t
LD R6, CERO
LOOP_t2 ADD R6,R6,R3
ADD R5, R5, #-1
BRp LOOP_t2

; R6 = t^2

ADD R4,R4,#0
BRz a_z
at_2

; verificando signo de a

ADD R5, R5, R4 ; R5 ya estaba en 0


ADD R6, R6, #-1
BRp at_2
LD R6, CERO

Div_2

ADD
ADD
NOT
ADD
ADD
BRp

R5, R5,
R6, R6,
R0, R6
R0, R0,
R0, R0,
Div_2

#-1
#1; Comienza en 0
#1
R5

;R5 = at^2 / 2

BRnzp a_nz
a_z

LD R5, CERO ; Caso cuando a = 0

a_nz

LD R0, CERO
ADD R6, R3, R0

Vt

ADD R0, R2, R0 ; V

; R5 = at^2

ADD R6, R6, #-1


BRp Vt
SUMA_X ADD R1, R1, R0; X + Vt
ADD R1, R1, R5; X + Vx*t + axt2/2
RET
;=======================================================================
;:::::::::::::::::::::::::::::VARIABLES:::::::::::::::::::::::::::::::::
CERO
.FILL #0
TOP_TIME .FILL #-30
SAVE_R7 .BLKW 1
SAVE_R7_2 .BLKW 1
Vx
.FILL #100
Vy
.FILL #250
X
.FILL #0
Y
.FILL #0
K
.FILL #0
t_2
.BLKW 1
ST_axt_2 .BLKW 1
ST_axt2_2 .BLKW 1
ax
.FILL #0
ST_ayt_2 .BLKW 1
ST_ayt2_2 .BLKW 1
ay
.FILL #-10
XX
.BLKW 31
YY
.BLKW 31
T_PRUEBA .BLKW 1
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
.END

Вам также может понравиться