Microprocessor/Codes/org-pen/sinewave.asm

88 lines
1.8 KiB
NASM
Raw Permalink Normal View History

;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