jc vos
pop a
jmp m2
vos: pop a
jmp m
m2:
mov a, funk
mov tg_l, r4
cjne a, #0, ctg_l
mov dph,#8Fh
mov dpl, #00h
mov a, alpha
mov dpl, a
m4: movx a, @dptr
inc dptr
inc alpha
mov b, a
mov a, tg_l
clr c
subb a, b
jc rel
djnz kolvopovt, m4
rel: dec alpha
push a
mov dph,#8Ch
mov a,alpha
mov dpl,a
movx a,@dptr
mov cos_a_h ,a
mov dph,#8Dh
mov a, alpha
mov dpl,a
movx a,@dptr
mov cos_a_l,a
pop a
ret
ctg_l: mov dph,#91h
mov dpl, #00h
mov a, alpha
mov dpl, a
m5: movx a, @dptr
inc dptr
inc alpha
mov b,a
mov a, tg_l
clr c
subb a, b
jc rel
djnz kolvopovt, m5
jmp rel
get_gamma: ;гамма-результирующий угол
mov a,chetvert
mov b,chetvg
add a,b
mov chetvert,a
push a
mov a,chetvert
cjne a,#5, gop
mov chetvert,#1
cjne a,#6, gop
mov chetvert, #2
cjne a,#7, gop
mov chetvert, #3
gop: pop a
mov a,alpha
add a,beta
mov gamma,a
clr c
subb a,#90
jnc nepex
jmp vihod
nepex: inc chetvert
push a
mov a,chetvert
cjne a,#5, neravno
mov chetvert,#1
neravno: pop a
mov gamma,a
vihod: push a
mov dph,#8Ch
mov a,gamma
mov dpl,a
movx a,@dptr
mov cos_g_h ,a
mov dph,#8Dh
mov a,gamma
mov dpl,a
movx a,@dptr
mov cos_g_l,a
mov dph,#8Ah
mov a,gamma
mov dpl,a
movx a,@dptr
mov sin_g_h ,a
mov dph,#8Bh
mov a,gamma
mov dpl,a
movx a,@dptr
mov sin_g_l,a
pop a
ret
get_new_coords_x: ;вычисляем новые координаты,узнавая в какой они будут ;четверти
clr c
mov a,beta
mov b,#1
subb a,b
jc grad
mov a,chetvert
cjne a,#4, ne_4
mov r1,sin_g_h
mov r0,sin_g_l
mov r3,#0
mov r2, x_coord
lcall mul42
jmp umnog_2
ne_4: mov a,chetvert
cjne a,#3, ne_3
mov r1,cos_g_h
mov r0,cos_g_l
mov r3, #0
mov r2, x_coord
lcall mul42
jmp umnog_2
ne_3: mov a,chetvert
cjne a,#2, ne_2
mov r1,sin_g_h
mov r0,sin_g_l
mov r3,#0
mov r2,x_coord
lcall mul42
jmp umnog_2
ne_2: mov r1,cos_g_h
mov r0,cos_g_l
mov r3,#0
mov r2,x_coord
lcall mul42
umnog_2: ;mov a,r5 ;должно быть деление
;mov r1,a
;mov a,r4
;mov r0,a
;mov r3,cos_a_h
;mov r2,cos_a_l
;lcall mul42
mov r1,cos_a_h
mov r0,cos_a_l
lcall div42
;mov r0,#E8h
;mov r1,#03h
;lcall div42
cjne r5,#0,starsh_x
mov new_coord_x,r4
jmp get_new_coords_y
grad: inc new_coord_y
inc new_coord_x
jmp gradex
starsh_x: mov new_coord_x,r5
get_new_coords_y:
mov a,chetvert
cjne a,#4, ne_4_2
mov r1,cos_g_h
mov r0,cos_g_l
mov r3,#0
mov r2,x_coord
lcall mul42
jmp umnog_3
ne_4_2: mov a,chetvert
cjne a,#3, ne_3_2
mov r1,sin_g_h
mov r0,sin_g_l
mov r3,#0
mov r2,x_coord
lcall mul42
jmp umnog_3
ne_3_2: mov a,chetvert
cjne a,#2, ne_2_2
mov r1,cos_g_h
mov r0,cos_g_l
mov r3,#0
mov r2,x_coord
lcall mul42
jmp umnog_3
ne_2_2: mov r1,sin_g_h
mov r0,sin_g_l
mov r3,#0
mov r2,x_coord
lcall mul42
umnog_3: ;mov a,r5
;mov r1,a
;mov a,r4
;mov r0,a
mov r1,cos_a_h
mov r0,cos_a_l
lcall div42
;mov r0,#E8h ;делим на 1000,т.к. значения триг-х ф-й 4 разряда после , и ;в таблицах они умножены на 1000
;mov r1,#03h
;lcall div42
cjne r5,#0,starsh_y
mov new_coord_y,r4
jmp rel_ex
starsh_y: mov new_coord_y,r5
rel_ex: clr c
mov a,chetvert
;mov dph_pix, a
subb a,#2
jc ch1
add a,#2
subb a,#3
jc ch2
add a,#3
subb a,#4
jc ch3
add a,#4
subb a,#5
jc ch4
ch1: ;inc new_coord_y
;inc new_coord_x
clr c
mov dph,#0
mov dpl,#0
mov a,consty
mov b,new_coord_y
subb a,b
inc a
mov b,#177
mul ab
;mov dph_pix, a
;mov r0, a
;mov r1, #0
;mov r2, #177
;mov r3, #0
;lcall mul42
mov r4,a
mov r5,b
;mov dpl_pix, r4
mov a,constx
mov b,new_coord_x
clr c
add a,b
mov b, r4
add a,b
jnc perep
inc r5
mov dph_pix, r5
mov dpl_pix, r4
jmp perep
ch2: mov dph,#0
mov dpl,#0
mov a,consty
mov b,new_coord_x
subb a,b
mov r0, a
mov r1, #0
mov r2, #177
mov r3, #0
lcall mul42
clr c
mov a, consty
mov b,new_coord_y
subb a,b
mov b, r4
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.