title ;sine wave curve & scale & signature page ,132 ;80386/80286 ASSEMBLY LANGUAGE PROGRAMMING .8087 ;;.model small ;;.stack 100h exxu macro ;MACROS ARE INSERTED WHERE NEEDED! push ax push bx push cx push dx push ds:si push es:di push sp endm exxo macro pop sp pop es:di pop ds:si pop dx pop cx pop bx pop ax endm scr macro mov ah,0 ;set hires screen mov al,14 ;al=0eh 640x200 16 color graphics int 10h ;video service pg1513 endm wdot macro mov ah,12 ;=0ch write pixle al=color cx=col dx=line pg1517 int 10h endm cdot macro mov al,11 ;cyan11 white15 maga13 blue16 mov cx,xaxis ;col mov dh,0 mov dl,yaxis ;row wdot endm htic macro ;tic col 45-50-55 mov cx,45 h1: wdot inc cl cmp cl,55 jle h1 endm vtic macro ;tic row 97-100-103 mov dx,97 v1: wdot inc dl cmp dl,103 jle v1 endm pixi macro ;writes pixels LETTERS and SIGNATURE local p0,p1,p2 p2: push ax push si push di push cx mov ch,0 mov cl,[si] ;peek wrtng[i] letters etc. lea di,raysig ;ray signature coords p1: inc di ;word req. inc di loop p1 pop cx cmp cl,0 ;bad one must have a number to subtract from! jnz p0 inc cx ;ie. jmp if < 2 or larger etc. p0: mov al,cl mov ah,dl mov bx,[di] ;new rel coord add ax,bx ;bad -- add coord to old coord or subtract mov cl,al and ah,7fh ;?? not that high mov dl,ah ;then coord may be 255 etc. mov al,color ;13magenta 14yellow 4 wdot ;write pixel pop di pop si pop ax inc di inc si mov bx,di clc sub bx,nmbr clc or bl,bh cmp bl,0 jnz p2 endm stack1 segment para 'stack' db 64 dup ('mystack ') stack1 ends mydata segment para 'data' angle dw 0 temp dw ? consta dd 180.0 multip dw 90 xaxis dw 50 yaxis db 0 sine dw 91 dup (?) vctr db ? nmbr dw ? color db ? raysig db 0,0,1,0,1,1,0,1,255,0,255,255,255,254,0,255,1,255 ;;9 a b c d e f 16 db 250,11,2,253,253,3,3,1,2,6,0,254,3,7,2,3 ;;17 18 19 20 21 22 23 24 db 247,30,2,253,252,7,10,237,250,20,8,237,247,9,247,9,0,0,0,0 pie dw 1,1,6,1,6,1,6,1,6,5,1,1,1,1,1,1,5,4 dw 1,4,1,3,1,3,1,12 one dw 1,1,1,1,7,7,7,7,5,8,1,3,3,3,3,3,1,1,12 two dw 7,8,8,1,8,7,7,5,5,5,5,4,1,8,1,1,1,2,3,4,5,4,4,1,1,1,1,7,1,3,13 three dw 7,1,3,1,1,1,7,7,7,5,8,6,5,5,4,1,8,1,1,2,4,2,3,12 sl dw 7,1,7,1,7,1,7,1,7,1,7,1,7,1,15 four dw 15,7,2,1,6,7,1,7,1,7,1,1,4,1,4,1,4,1,4,5,1,1,1,4,5,4,1,1,1,12 min dw 7,7,1,3,1,7,1,3,7,1,3,7,1,3,7,1,3,7,1,3,16 zero dw 8,7,7,7,7,8,1,1,1,1,2,3,3,3,3,4,5,5,5,5,7,7,7,7,7,8,1,1,2 dw 4,4,3,4,8,7,8,8,1,1,3,3,3,3 sgntr dw 3,5,3,5,2,5,2,1,1,5,2,1,1,1,1,7,1,1,7,1,6,1,7,1,6,1 dw 7,1,6,1,6,1,7,1,6,1,6,1,7,1,6,1,6,1,7,1,6,1,7,1,6,1,6,1,7,1,6 dw 1,7,1,7,1,7,1,7,1,7,1,7,1,7,1 dw 5,3,5,3,5,4,1,4,1,4,1,4,1,4,1,1,4,1,4,1,4,1,4,1,4,1,4,1,1,4,1 dw 4,1,4,1,4,1,4,1,4,1,1,4,1,4,1,4,1,4,1,4,1,4 dw 8,7,7,1,6,1,7,1,6,1,6,1,7,1,6,1,6,1,7,1,6,1,7,1,6,1,6,1,7,1,6 dw 1,6,1,7,1,6,1,7,1,6,1,7,1,7,1,7,1,7,1,6,1,7,1,7,1 dw 21 ;;N dw 8,8,8,8,8,8,7,8,7,10,7,1,4,11,3,4,3,3,3,2,1,1,8,1 ;;i dw 8,8,8,7,8,7,8,8,1,1,2,6,5,5,4,4,3,2,1,2,1,1,8,1 ;;c dw 8,8,8,8,8,7,8,8,8,8,8,7,8,7,8,7,8,7,8,7,7,8,7,6,6,5,5,4,4,3 dw 3,3,4,3,3,4,3,3,4,3,3,3,4,3,3,3,3,3,3,3,7,7,7,7,1,1,1,2,4,5 dw 5,1,2,1,1,8,1,20 ;;k dw 7,1,7,1,7,1,1,7,1,1,1,1,4,1,1,4,1,3,1,4,1,4,1,4,1,4,1,4,1 dw 4,1,4,1,4,1,4,5,2,5,2,5,2,5,3,5,2,5,2,5,2,1,1,1,1,7,1,7,1,7 dw 1,6,1,7,1,6,1,7,1,6,1,7,1,6,1,7,1,6,1,7,1,6,1,6,1,7,1,6,1,7 dw 1,6,1,7,1,6,1,7,1,6,1,7,1,7,1,7,1,7,1,7,1,7,1,1,7,1,21 ;;V dw 8,8,8,7,1,2,2,8,4,6,6,7,7,8,8,1,1,8,3,3,4,3,3,2,1,8,1 ;;a dw 8,8,7,7,8,7,8,7,1,1,3,3,3,4,3,3,7,7,8,8,7,8,7,8,8,1,3,3,4,3,3 dw 1,1,20 ;;n dw 7,1,7,1,7,1,1,7,1,1,1,1,4,1,1,4,1,3,1,4,1,4,1,4,1,4,1,4,1 dw 4,1,4,1,4,1,4,5,2,5,2,5,2,5,3,5,2,5,2,5,2,1,1,1,1,7,1,7,1,7 dw 1,6,1,7,1,6,1,7,1,6,1,7,1,6,1,7,1,6,1,7,1,6,1,6,1,7,1,6,1,7 dw 1,6,1,7,1,6,1,7,1,6,1,7,1,7,1,7,1,7,1,7,1,7,1,1,7,1,21 ;;V dw 8,8,8,8,8,8,8,8,8,8,7,8,8,7,8,8,7,8,7,8,7,7,7,7,7,6,5,5,4,3,4,3,4,3 dw 4,3,3,4,3,3,4,3,3,3,3,3,2,3,3,3,2,1,8,1 ;;l dw 8,8,8,8,8,8,7,8,7,10,7,1,4,11,3,4,3,3,3,2,1,1,8,1 ;;i dw 8,8,8,8,8,8,7,7,5,5,4,4,3,3,3,2,1,1,8,1 ;;e dw 8,8,8,8,7,7,8,7,7,8,7,7,8,7,7,8,7,7,8,7,7,8,24,8,1,1,8,1,1,8 dw 1,1,8,1,1,8,24,3,3,3,3,3,2,1,2,1,2,1,2 ;;t dw ,4,5,4,5,4,5,5,4,5,4,5,4,5,5,4,5,4,5,5,4,5,4,5 dw ,5,4,5,4,5,5,4,5,4,5,4,5,5,4,5,4,5,5,4,5,4,5 dw ,5,4,5,4,5,5,4,5,4,5,4,5,5,4,5,4,5,5,4,5,4,5 dw ,5,4,5,4,5,5,4,5,4,5,4,5,5,4,5,4,5,5,4,5,4,5 dw ,5,4,5,4,5,5,4,5,4,5,4,5,5,4,5,4,5,5,4,5,4,5 dw ,5,4,5,4,5,5,4,5,4,5,4,5,5,4,5,4,5,5,4,5,4,5 dw ,5,4,5,4,5,5,4,5,4,5,4,5,5,4,5,4,5,5,4,5,4,5 dw ,5,4,5,4,5,5,4,5,4,5,4,5,5,4,5,4,5,5,4,5,4,5 dw ,5,4,5,4,5,5,4,5,4,5,4,5,5,4,5,4,5,5,4,5,4,5 dw ,5,4,5,4,5,5,4,5,4,5,4,5,5,4,5,4,5,5,4,5,4,5 dw ,5,4,5,4,5,5,4,5,4,5,4,5,5,4,5,4,5,5,4,5,4,5 dw ,5,4,5,4,5,5,4,5,4,5,4,5,5,4,5,4,5,5,4,5,4,5 mydata ends mycode segment para 'code' main proc far assume cs:mycode,ds:mydata,ss:stack1 sub ax,ax mov ax,mydata mov ds,ax push ds push ds mov si,0 again: mov ax,angle cmp ax,45 ;<=45 ie sin >45 ie cos jle cont neg ax ;cos a = sine(90-a) add ax,90 cont: mov temp,ax ;a or (90-a) finit ;enter calc mode of math coprocessor fldpi ;psh pi=.044880x7=3.14156 fld consta ;psh 180 fdiv ;t=u/t = pi/180 fild temp ;psh a fmul ;t=t*u = a*pi/180 fptan ;t=sin(t) u=cos(t) x/y fwait ;exit calc mode mov ax,angle cmp ax,45 ;<=45>>sin jle sinin fxch st(1) ;t=cos u=sin t=st(0)=sp u=st(1) =>st(2) sinin: fmul st(0),st ;t=sin/or cos t=x^2 u=y fxch st(1) ;t=y u=x^2 NB x=rcos y=rsin fld st(0) fmul st(0),st ;t=y^2 u=y >=x^2 fadd st(0),st(2) ;x^2+y^2 fsqrt ;t=r u=y >=x^2 fdivp st(1),st ;t=r u=y/r=sin >=x^2 & pop fimul multip ;t=90*t=90sin integer fistp sine[si] ;pop 90sin into storage fwait ;exit calc mode? add si,2 ;inc sine storage add angle,1 ;inc angle cmp angle,90 jle again scr ;200x640 graphics exxu mov cx,0 ;(0,0) mov dx,184fh ;(200,640) mov bh,7 ;7grey 15w14y13m 1bl2gn3lbl4r5m6o mov ax,0700h ;background color int 10h exxo iloop: mov si,0 mov ax,xaxis cmp ax,230 ;180+50 jle newquad sub ax,180 newquad: cmp ax,140 ;90+50 jle secquad neg ax add ax,280 ;180+50+50 secquad: add si,ax ;sine i 0->90 sub si,50 ;sub 50 axis offset from screen shl si,1 ;times two mov al,byte ptr sine[si] cmp xaxis,230 ;180+50 jge bigdis neg al add al,100 ;top loop 90 raises xaxis jmp ready bigdis: add al,99 ;bottom loop ready: mov yaxis,al cdot push dx cmp xaxis,230 ;180+50 jge r1 inc dx jmp r2 r1: dec dx r2: wdot ;thicken line pop dx add xaxis,1 cmp xaxis,410 ;360+50 jle iloop mov dx,10 ;horz tic mov al,14 ;yellow mov bl,4 x1: htic add dx,45 dec bl cmp bl,0 jge x1 mov cx,50 ;yellow vert tic mov bl,3 x2: add cx,90 vtic dec bl cmp bl,0 jge x2 mov al,5 ;0 ;4 ;brown y-axis mov dx,10 mov cx,50 bk1: wdot ;vert line inc dx cmp dx,190 jl bk1 mov al,0 ;black x-axis mov dx,100 mov cx,45 bk2: wdot ;horz line inc cx cmp cx,415 ;360+50+5 jl bk2 pop es pop ds mov color,10 ;1blue ;9dblue;14;yellow;5purple;12orange;4brown;15white ;;LETTERS 1 one mov cx,25 ;col mov dx,13 ;row mov di,1 lea si,one ;pix start mov nmbr,38 ;pi No. 44 pixi ;;LETTERS 1/2 one mov cx,10 ;col mov dx,58 ;row mov di,1 lea si,one ;pix start mov nmbr,39 ;pi No. 44 pixi ;;LETTERS 1/2 sl mov di,1 lea si,sl ;pix start mov nmbr,30 ;pi No. 28 pixi ;;LETTERS 1/2 two mov di,1 lea si,two ;pix start mov nmbr,62 ;pi No. pixi ;;LETTERS 0 zero mov cx,25 ;col mov dx,104 ;row mov di,1 lea si,zero ;pix start mov nmbr,88 ;pi No. 44 pixi mov color,9 ;;LETTERS pie/4 pie mov cx,127 ;col mov dx,110 ;row mov di,1 lea si,pie ;pix start mov nmbr,55 ;pi No. pixi ;;LETTERS pie/4 sl mov di,1 lea si,sl ;pix start mov nmbr,27 ;pi No. pixi dec dx ;;LETTERS pie/4 mov di,1 lea si,four ;pix start mov nmbr,48 ;pi No. pixi ;;LETTERS pie/2 pie mov cx,217 ;col mov dx,110 ;row mov di,1 lea si,pie ;pix start mov nmbr,55 ;pi No. pixi ;;LETTERS pie/2 sl mov di,1 lea si,sl ;pix start mov nmbr,30 ;pi No. pixi ;;LETTERS pie/2 two mov di,1 lea si,two ;pix start mov nmbr,62 ;pi No. pixi ;;LETTERS 3pie/4 three mov cx,305 ;col mov dx,110 ;row mov di,1 lea si,three ;pix start mov nmbr,48 ;pi No. pixi inc cx inc cx ;;LETTERS 3pie/4 pie mov di,1 lea si,pie ;pix start mov nmbr,55 ;pi No. pixi ;;LETTERS 3pie/4 sl mov di,1 lea si,sl ;pix start mov nmbr,27 ;pi No. pixi dec dx ;;LETTERS 3pie/4 mov di,1 lea si,four ;pix start mov nmbr,48 ;pi No. pixi ;;LETTERS pie pie mov cx,416 ;col mov dx,110 ;row mov di,1 lea si,pie ;pix start mov nmbr,50 ;pi No. pixi ;;WRITING SIGNATURE mov cx,0105h ;col mov dx,90 ;row mov di,1 lea si,sgntr ;pix start mov nmbr,1820 ;Nick Van Vliet mov color,15 ;5 ;0 black 1 blue 2 green 3 lblue 4 brown 5 purple 6 lbrown 7 grey 8 dgrey ;9 dblue 10 lgreen 11 cyan 12 red 13 lpurple 14 yellow 15 white 16 black pixi ;;;EXIT PROGRAM mov ah,7 ;wait for keyboard char ==>al int 21h ;char input no echo pg1201 mov al,3 ;al=03h 80x25 color Alpha. mov ah,0 ;set video mode int 10h ;video service pg1513 mov ax,4c00h ; Gives control to DOS int 21h ;ah=0 terminate cs=psp pg1187 main endp mycode ends end main
HOME PAGE
UPDATED DISPLAY![]()
Would you like to order my
'Machine Code Training For The IBM-PC Using Debug.Exe'
which contains a complete desciption, with comments,
of all updated Chess COM programs and other COM programs.
Contact Louie.Pace@Xlibris.com at Xlibris.com.
(refer your order to BID 38633)