Size: a a a

Ассемблер

2020 July 11

ST

Saenro T in Ассемблер
Т.е. на входе давал градусы, на выходе получал  коэффициенты.
источник

ST

Saenro T in Ассемблер
Это я видел, 8-часть рисует
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in Ассемблер
Saenro T
До этого я использовал таблицу от 0° до 90° (1—10000)
Ищу более быстрый код.
proc pset uses ax di, x,y,color
 mov ax,[y]    
 mov di,ax
 shl di,6   ;y*2^6
 shl ax,8   ;y*2^8
 add di,ax
 add di,[x]   ;y+x                        
 mov al,byte[color]
 stosb         ; mov byte [es:di],al
 ret
endp
 
;===============================================================================

proc Circle uses ax bx cx dx, x,y,r,color
locals
 dx_ dw 0
 dy_ dw ?
 trs dw ?
endl
 mov ax,[r]
 mov [dy_],ax
 shr ax,1
 neg ax
 inc ax
 mov [trs],ax  ;TRS=-R/2-1
.m1:
 mov ax,[x]
 add ax,[dx_]  ;x+dx
 mov bx,[y]
 add bx,[dy_]  ;y+dy
 mov cx,[x]
 sub cx,[dx_]  ;x-dx
 mov dx,[y]
 sub dx,[dy_]  ;y-dy
 stdcall pset,ax,bx,[color]
 stdcall pset,ax,dx,[color]
 stdcall pset,cx,bx,[color]
 stdcall pset,cx,dx,[color]
 mov ax,[x]
 add ax,[dy_]  ;x+dy
 mov bx,[y]
 add bx,[dx_]  ;y+dx
 mov cx,[x]
 sub cx,[dy_]  ;x-dy
 mov dx,[y]
 sub dx,[dx_]  ;y-dx
 stdcall pset,ax,bx,[color]
 stdcall pset,ax,dx,[color]
 stdcall pset,cx,bx,[color]
 stdcall pset,cx,dx,[color]

 mov ax,[dx_]
 add [trs],ax
 inc [dx_]

 cmp [trs],0  
 jl @f           ;если trs<0
 mov ax,[dy_]
 sub [trs],ax
 dec [dy_]
@@:  
 mov ax,[dx_]
 cmp ax,[dy_]
 jle .m1          ;dx>dy
.exit:  
 ret
endp
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in Ассемблер
эт для режима 13h
источник

ST

Saenro T in Ассемблер
С таблицей будет быстрее.
источник

A

Aleksandr in Ассемблер
хм, для фпу может быть короче
источник

A

Aleksandr in Ассемблер
с таблицей будет совсем просто, только точки соединять
источник

ST

Saenro T in Ассемблер
Aleksandr
с таблицей будет совсем просто, только точки соединять
А ещё таблицу можно создать заранее с любым шагом дискретизации.
источник

A

Aleksandr in Ассемблер
я о ней и подумал
источник

ST

Saenro T in Ассемблер
Ничего не делайте. Просто оцените на вскидку, какой вариант будет наиболее скоростным.
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in Ассемблер
sin/cos занимает около 500-700 тактов вроде
источник

ST

Saenro T in Ассемблер
Просто хотел уйти от 180-ти байтной таблицы .
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in Ассемблер
Saenro T
Просто хотел уйти от 180-ти байтной таблицы .
что, память жрет?
источник

ST

Saenro T in Ассемблер
Saenro T
Просто хотел уйти от 180-ти байтной таблицы .
Ну а код управления не такой уж и большой
источник

ST

Saenro T in Ассемблер
Таблицу на калькуляторе просчитывал
источник

ST

Saenro T in Ассемблер
Сейчас начинаю склоняться что с FPU будет медленнее, чем брать данные из готовой таблицы, да?
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in Ассемблер
да
источник

E

Egor in Ассемблер
Всем привет 👋
источник

S

Solo RT in Ассемблер
привет егор, добро пожаловать
источник
2020 July 12

楽園松本 in Ассемблер
Saenro T
До этого я использовал таблицу от 0° до 90° (1—10000)
Ищу более быстрый код.
Да, отличный метод!
источник