我是编程汇编的初学者。我想在图形模式下绘制 f(x)=x*sin(1/x) 曲线。我可以画出 f(x)=sin(x) 曲线,但我无法画出 f(x)=x*sin(1/x)。我怎么能这样做?
下面你可以看到我的工作 f(x)=sin(x) 代码。它正在工作并完美地绘制正弦曲线:
org 100h
mov al,13h
int 10h
xor bx,bx
loopage:
inc word [angle]
fld dword [pie]
fimul word [angle]
fsin
fimul word [xradius]
fistp word [x]
fimul word [yradius]
fistp word [y]
mov al,15
mov dx,[x]
add dx,ax
mov cx,[y]
add cx,bx
;xor ax,ax
;int 16h
inc bl
mov ah,0Ch
mov al,bl
int 10h
cmp word [angle],360
je endage
jb loopage
mov ax,0a000h
mov es,ax
xor ax,ax
mov cx,32000
rep stosw
endage:
xor ax,ax
int 16h
ret
y dw 0
x dw 0
angle dw 0
a dw -1
pie dd 0.01756
yradius dw 50
one dw 1
xradius dw 50
float dd 0
我想更改此代码以绘制 f(x)=x*sin(1/x) 曲线。
我已经尝试了几件事来更改上面代码中的以下部分:
...
fld dword [pie]
fimul word [angle]
fsin
fimul word [xradius]
fistp word [x]
fimul word [yradius]
fistp word [y]
...
然而到目前为止还没有任何结果。
请问你能帮帮我吗?
=========== 已编辑:====================
我试过你的代码。现在我的代码如下所示:
...
loopage:
;inc word [angle]
; FP0 <- 1
fld1
; FP0 = FP0 / [pie] / [angle], is equal to FP0 / ([pie] * [angle])
fidiv dword [pie]
fidiv word [angle]
fsin
fimul dword [pie]
fimul word [angle]
fimul word [yradius]
fistp word [y]
mov al,15
mov dx,[angle]
add dx,ax
mov cx,[y]
add cx,bx
...
但是,此代码仅绘制一条线,而不是预期的 x*sin(1/x) 曲线。你能帮我弄清楚可能是什么问题吗?