home *** CD-ROM | disk | FTP | other *** search
- demo$start: do;
- $include(reg51.dcl)
- int0p: procedure interrupt 0 using 1; end;
- int1p: procedure interrupt 2 using 2;
- declare (int1v0,int1v1) byte;
- int1v0=p1;
- if (p1 and 07h)=07h
- then do; sbuf=25h;
- end;
- else do;
- sbuf=20h;
- end;
- return;
- end int1p;
- samp: procedure (samp$ch) word;
- declare samp$ch byte;
- declare startad byte at(0e000h) auxiliary;
- declare (ad0,ad1) byte at(0e010h) auxiliary;
- p1=samp$ch; call time(100);
- return ad0+256*ad1;
- end samp;
- comput1: procedure(var0,var1,var2) word;
- declare (var0,var1,var2,result) word;
- do case (p1 and 03h);
- result=var0+var1+var2;
- result=var0*var1+var2;
- result=var0/var1-var2;
- result=var0 MOD var1;
- end;
- return result;
- end comput1;
- comput2: procedure(count) word;
- declare count byte, value word;
- value=0;
- do while count<>0;
- value=value+(count*2-1);
- count=count-1;
- end;
- return value;
- end comput2;
- mprog: do;
- declare (v0,v1,v2,v3,v4,v5) byte;
- declare (d0,d1,d2,d3,d4,d5) word, b0 bit;
- do while 1=1;
- v0=1; v1=10; v2=20; v3=25; /* byte */
- d1=((d0+v1)*v2)+(v3-v2)*v1-v0; /* byte multiply */
- d2=1234; d4=54321; d5=45678; /* word */
- do v0=1 to 2; d4=d4+2; d5=d5-3; end; /* loop */
- d2=samp(2); d3=comput1(d0,d1,d2); /* procedure */
- d4=(((v3+1)*v2+1)*v1+1)+((d1+d2/d3)*3); /* word devide */
- d5=comput2(v1); /* procedure */
- if b0=1 then do;
- d1=(v1+v2+v3)*v4; d4=(d4+10)*d1; /* condition */
- p1$7=1; b0=0; d2=samp(3); end; /* bit operate */
- else do; d1=(v1+v2+v3)/v4; d4=d4+10;
- p1$7=0; b0=1; d2=samp(4); end; /* bit operate */
- end;
- end mprog;
- end demo$start;