88 lines
1.8 KiB
NASM
88 lines
1.8 KiB
NASM
|
;NAME:- Chinmay M. Mule
|
||
|
;CLASS:-SE COMP II SHIFT
|
||
|
;ROLLNO:-34 PRN:-S18111044
|
||
|
;Assignment Name:-Write 80387 ALP to plot Sine Wave, Cosine Wave. Access
|
||
|
; video memory directly for plotting.
|
||
|
|
||
|
|
||
|
|
||
|
.387
|
||
|
.MODEL SMALL
|
||
|
.DATA
|
||
|
X DW 1
|
||
|
Y DW 0
|
||
|
Xrad DQ ?
|
||
|
D60 DW 60
|
||
|
D100 DW 100
|
||
|
D180 DW 180
|
||
|
PIby180 DQ ?
|
||
|
TAB DB 80H,40H,20H,10H,8H,4,2,1
|
||
|
OFS DW 0
|
||
|
|
||
|
.CODE
|
||
|
START: MOV AX,@DATA
|
||
|
MOV DS,AX
|
||
|
|
||
|
MOV AH,00 ;Set video mode
|
||
|
MOV AL,06 ;Mode 6 i.e. 640 by 200 Graphics
|
||
|
INT 10H
|
||
|
|
||
|
FINIT
|
||
|
FLDPI
|
||
|
FIDIV D180
|
||
|
FSTP PIby180
|
||
|
DRAWSINE:
|
||
|
FILD X ;Load angle
|
||
|
FLD PIby180 ;Convert to radian
|
||
|
FMUL ;i.e. multiply by Pi/180
|
||
|
FST Xrad
|
||
|
FSIN ;Calculate sine
|
||
|
FDIV Xrad
|
||
|
FILD D60 ;Load amplitude
|
||
|
FMUL ;Calculate Amplitude x sin
|
||
|
FILD D100
|
||
|
FSUBR
|
||
|
FISTP Y
|
||
|
|
||
|
CALL OFSCAL
|
||
|
INC X ;Next angle
|
||
|
CMP X,639 ;Last point on X axis
|
||
|
JNE DRAWSINE
|
||
|
EXIT:
|
||
|
MOV AH,0
|
||
|
INT 16H
|
||
|
|
||
|
MOV AH,00 ;Set video mode
|
||
|
MOV AL,02 ;Mode 2 i.e. 80 by 25 text
|
||
|
INT 10H
|
||
|
|
||
|
MOV AH,4CH
|
||
|
INT 21H
|
||
|
|
||
|
OFSCAL PROC NEAR
|
||
|
MOV AX,Y
|
||
|
AND AX,1
|
||
|
JZ L1
|
||
|
MOV OFS,2000H
|
||
|
L1: MOV AX,Y
|
||
|
SHR AX,1
|
||
|
MOV BX,50H
|
||
|
MUL BX
|
||
|
ADD OFS,AX
|
||
|
MOV AX,X
|
||
|
MOV CL,3
|
||
|
SHR AX,CL
|
||
|
ADD OFS,AX
|
||
|
LEA BX,TAB
|
||
|
MOV AX,X
|
||
|
AND AX,07
|
||
|
XLAT
|
||
|
MOV BX,OFS
|
||
|
MOV DX,0B800H
|
||
|
MOV ES,DX
|
||
|
OR ES:[BX],AL
|
||
|
MOV OFS,0
|
||
|
RET
|
||
|
OFSCAL ENDP
|
||
|
END START
|