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
|