源程序
DSP经典源程序程序

DSP经典源程序程序#include\#include\/***************************************************/interruptvoidt1pint_isr(v oid);interruptvoidt2pint_isr(void);interruptvoidcap_isr(void);interruptvoidpdpinta_isr(void);voiddelay(unsignedintm);unsignedintt1prd=117;//定时器1的周期unsignedintt2prd=117;//定时器2的标志unsignedintdir=0;//电机旋转方向unsignedintpwm=20;unsignedintdccurent,u,v,w,speedad;//直流母线电流unsignedintdcvoltage;//直流母线电压uint32sumdcv=0;unsignedintdcvcount=0,averagedcv=0;//母线电压平均值初始化unsignedintcapstastus;//定义cap口的电平uint32time,t2cnt,speed=0,count=0;unsignedpole=2;//极对数uint32sum=0,average=0;unsignedintl=0,nn=0;intt2=0;unsignedinttest[2000],test1[2000],test2[2000];intsss=0;/***************************************************/voidmain(void){/*初始化系统*/initsysctrl();/*关中断*/dint;ier=0x0000;ifr=0x0000;/*初始化pie*/initpiectrl();/*初始化pie矢量表*/initpievecttable();/*初始化gpio*/gpioinit();/*初始化ad*/initadc();/*初始化pwm*/init_eva_pwm();/*初始化cap*/capinit();eallow;//thisisneededtowritetoeallowprotectedregisterpievecttab le.capint1=&cap_isr;pievecttable.capint2=&cap_isr;pievecttable.capint3=&cap_is r;pievecttable.t1pint=&t1pint_isr;pievecttable.t2pint=&t2pint_isr;pievecttable.pdpinta=&pdpinta_isr;edis;//thisisneededtodisablewritetoeallpiectrl.pieier2.bit.intx4=1;//t1pint中断piectrl.pieier3.bit.intx1=1;//t2pint中断piectrl.pieier3.bit.intx5=1;//cap1中断piectrl.pieier3.bit.intx6=1;//cap2中断piectrl.pieier3.bit.intx7=1;//cap3中断piectrl.pieier1.bit.intx1=1;//pdpinta中断/*设置ier寄存器*/ier|=m_int1;ier|=m_int2;//t1pintenableier|=m_int3;//captureenable//enableglobalinterruptsandhigherpriorityreal-timedebugevents:startmotor();eint;//enableglobalinterruptintmertm;//enableglob alrealtimeinterruptdbgm//step6.idleloop.justsitandloopforever(optional):while(1){}}interruptvoidt2pint_isr(void){count++;evaregs.evaifrb.bit.t2pint=1;//清除中断标志evaregs.evaimrb.bit.t2pint=1;//中断允许piectrl.pieack.bit.ack3=1;//向cpu申请中断}interruptvoidcap_isr(void){/*****以下用来检测传感器的输出电平,用来换向****/uint32kk=t2prd;eallow;gpiomuxregs.gpamux.bit.cap1q1_gpioa8=0;//预设cap1~3为gpiogpiomuxregs.gpamux.bit.cap2q2_gpioa9=0;gpiomuxregs.gpamux.bit.cap3qi1_gpioa10=0;gpiomuxregs.gpadir.bit.gpioa8=0;//预设cap1~3为输出gpiomuxregs.gpadir.bit.gpioa9=0;gpiomuxregs.gpadir.bit.gpioa10=0;capstastus=(gpiodataregs.gpadat.all&0x0700)>>8;if(dir==1){switch(capstastus)//ir2136的hin和lin是反向的{case1:evaregs.actr.all=0x7fd;break;//h3fallcase2:evaregs.actr.all=0xfd7;break ;//h1fallcase3:evaregs.actr.all=0x7df;break;//h2risecase4:evaregs.actr.all=0xd 7f;break;//h2fallcase5:evaregs.actr.all=0xf7d;break;//h1risecase6:evaregs.actr .all=0xdf7;break;//h3rise}}else{switch(capstastus)//ir2136的hin和lin是反向的{case5:evaregs.actr.all=0xfd7;break;//h1risecase1:evaregs.actr.all=0xd7f;break ;//h3fallcase3:evaregs.actr.all=0xdf7;break;//h2risecase2:evaregs.actr.all=0xf7d;break;//h1fallcase6:evaregs.actr.all=0x7fd;break;//h3risecase4:evaregs.actr .all=0x7df;break;//h2fall}}/*以下用以排序输出功率*/t2cnt=evaregs.t2cnt;//读取定时器2的值time=kk*count+t2cnt;//赢得运转1相所须要时间sum+=time;l++;if(l==12)//每转12/6/pole计算一下转速{average=sum/12;speed=kk*20000*60/(average*6*pole);//计算转速sum=0;l=0;test[nn]=speed;//测试用,存储速度值nn++;if(nn==2000){nn=0;}}count=0;evaregs.t2con.all=0x1400;//停用定时器2evaregs.t2cnt=0x0000;evaregs.t2con.all=0x1440;//启动定时器2/*************************/gpiomuxregs.gpamux.bit.cap1q1_gpioa8=1;//重新设定cap1~3为gpiogpiomuxregs.gpamux.bit.cap2q2_gpioa9=1;gpiomuxregs.gpamux.bit.cap3qi1_gpio a10=1;evaregs.evaifrc.all=7;//清抓取中断evaregs.capfifo.all=0x01500;//清空捕捉堆栈piectrl.pieack.bit.ack3=1;//cap1中断向cpu申请中断}interruptvoidt1pint_isr(void){dcvoltage=(adcregs.result0)>>4;dccurent=(adcregs.result3)>>4;w=(adcregs.result 1)>>4;u=(adcregs.result2)>>4;speedad=(adcregs.result4)>>4;v=(adcregs.result5)> >4;//母线电压检测,过压维护,//注:电机在启动或者转动方向改变时,可能母线电压有脉动//采用多次求平均值sumdcv+=dcvoltage;dcvcount++;if(dcvcount==500){averagedcv=sumdcv/500;//求平均母线电压sumdcv=0;dcvcount=0;}if(averagedcv>=3000){stopmotor();gpiodataregs.gpadat.bit.gpioa11=1;//过压表明}/******************************/adcregs.adc_st_flag.bit.int_seq1_clr=1;//去除状态字adcregs.adctrl2.bit.rst_seq1=1;//登位seq1evaregs.evaifra.bit.t1pint=1;//清除中断标志evaregs.evaimra.bit.t1pint=1;//中断容许piectrl.pieack.bit.ack2=1;//向cpu申请中断}interruptvoidpdpinta_isr(void){evaregs.evaifra.bit.pdpinta=1;//清除pdpinta中断标志piectrl.pieack.bit.ack1=1;//向cpu申请中断stopmotor();/***********************************************************************///nomore/***********************************************************************/。
语言处理程序基础(“源程序”文档)共4张

用汇汇汇汇汇第汇汇第第汇汇汇汇用第解源汇用汇汇第 第用解汇编编编编编一编编一二编编编编汇一释程编汇编编一二汇释编 程 程 语 语 语 次 语 语 次 次 语 语 程 语 编 次 程 序 程 编 语 语 次次 编 程语序序言言言扫言言扫扫言言序言语扫序的序语言言扫 扫语序言的的源是是描源源描描是是的源言描是内的言是是描 描言是编基基程为为的程程的的为为基程编的另部基编为为的 的编另写本本序特特主序序主任特特本序写主一形本写特特主 任写一的工工由定定要由由要务定定工由的要种式工的定定要 务的种程作作若计计工若若工是计计作若程工语。作程计计工 是程语序包包干算算作干干作产算算包干序作言包序算算作 产序言称括括条机机是条条是生机机括条称是处括称机机是生称处为::语((定语语定目((:语为定理:为((定 目为理汇将将句或或义句句义标或或将句汇义程将汇或或义 标汇程编每每组计计符组组符程计计每组编符序每编计计符 程编序语一一成算算号成成号序算算一成语号,一语算算号 序语,言条条,机机的,,的。机机条,言的在条言机机的 。言在源可可一系系值一一值系系可一源值词可源系系值 源词程执执个统统并个个并统统执个程并法执程统统并 程法序行行程))创程程创))行程序创、行序))创 序、。汇汇序设设建序序建设设汇序。建语汇。设设建 。语编编中计计一中中一计计编中一法编计计一 法语语可的的个可可个的的语可个和语的的个 和句句以面面符以以符面面句以符语句面面符 语转转有向向号有有号向向转有号义转向向号 义换换三机机表三三表机机换三表分换机机表 分成成类器器类类器器成类析成器器析SSSSTTTT对对语的的语语的的对语方对的的方。。。。应应句符符句句符符应句面应符符面的的:号号::号号的:与的号号与机机指化化指指化化机指编机化化编器器令程程令令程程器令译器程程译指指语序序语语序序指语程指序序程令令句设设句句设设令句序令设设序::、计计、、计计:、的:计计的处处伪语语伪伪语语处伪工处语语工理理指言言指指言言理指作理言言作源源令。。令令。。源令原源。。原程程语语语程语理程理序序句句句序句基序基中中和和和中和本中本出出宏宏宏出宏相出相现现指指指现指同现同的 的 令 令 令 的 令 , 的 ,伪伪语语语伪语但伪但指指句句句指句是指是令令。。。令。在令在和和和运和运宏宏宏行宏行指指指用指用令令令户令户。。。程。程序序时时,,它它直直接接执执行行源源程程序序或或 源程序的内部形式。 第一次扫描的主要工作是定义符号的值并创建一个符号表ST。
源程序代码

源程序代码(总17页)本页仅作为文档封面,使用时可以删除This document is for reference only-rar21year.March#include <> //调用单片机头文件#define uchar unsigned char//无符号字符型宏定义变量范围0~255#define uint unsigned int//无符号整型宏定义变量范围0~65535#include ""#include ""bit flag_200ms ;bit flag_100ms ;sbit beep = P3^7; //蜂鸣器定义bit flag_beep_en;uint clock_value; //用作闹钟用的sbit dq = P3^2; //18b20 IO口的定义uint temperature ; //温度变量uchar flag_nl; //农历阳历显示标志位uchar menu_1,menu_2;uchar key_time,flag_value;//用做连加的中间变量bit key_500ms ;uchar n_nian,n_yue,n_ri;//农历显示的函数#include ""#include ""/******************把数据保存到单片机内部eeprom中******************/void write_eeprom(){SectorErase(0x2000);byte_write(0x2000, fen1);byte_write(0x2001, shi1);byte_write(0x2002, open1);byte_write(0x2058, a_a);}/******************把数据从单片机内部eeprom中读出来*****************/void read_eeprom(){fen1 = byte_read(0x2000);shi1 = byte_read(0x2001);open1 = byte_read(0x2002);a_a = byte_read(0x2058);}/**************开机自检eeprom初始化*****************/void init_eeprom(){read_eeprom(); //先读if(a_a != 1)//新的单片机初始单片机内问eeprom {fen1 = 3;shi1 = 8;open1 = 1;a_a = 1;write_eeprom();//保存数据}}/***********************18b20初始化函数*****************************/ void init_18b20(){bit q;dq = 1; //把总线拿高delay_uint(1); //15usdq = 0; //给复位脉冲delay_uint(80);//750usdq = 1; //把总线拿高等待delay_uint(10);//110usq = dq; //读取18b20初始化信号delay_uint(20);//200usdq = 1; //把总线拿高释放总线}/*************写18b20内的数据***************/void write_18b20(uchar dat){uchar i;for(i=0;i<8;i++){ //写数据是低位开始dq = 0;//把总线拿低写时间隙开始dq = dat & 0x01;//向18b20总线写数据了delay_uint(5); // 60usdq = 1; //释放总线dat >>= 1;}}/*************读取18b20内的数据***************/uchar read_18b20(){uchar i,value;for(i=0;i<8;i++){dq = 0; //把总线拿低读时间隙开始value >>= 1; //读数据是低位开始dq = 1; //释放总线if(dq == 1) //开始读写数据value |= 0x80;delay_uint(5); //60us 读一个时间隙最少要保持60us的时间}return value; //返回数据}/*************读取温度的值读出来的是小数***************/uint read_temp(){uint value;uchar low;//在读取温度的时候如果中断的太频繁了,就应该把中断给关了,否则会影响到18b20的时序init_18b20(); //初始化18b20write_18b20(0xcc); //跳过64位ROMwrite_18b20(0x44); //启动一次温度转换命令delay_uint(50);//500usinit_18b20(); //初始化18b20write_18b20(0xcc); //跳过64位ROMwrite_18b20(0xbe);//发出读取暂存器命令EA = 0;low = read_18b20(); //读温度低字节value = read_18b20(); //读温度高字节EA = 1;value <<= 8; //把温度的高位左移8位value |= low;//把读出的温度低位放到value的低八位中value *= ;//转换到温度值小数return value;//返回读出的温度带小数}/******************1ms 延时函数*******************/void delay_1ms(uint q){uint i,j;for(i=0;i<q;i++)for(j=0;j<120;j++);}/******************写星期函数*******************/void write_week(uchar hang,uchar add,uchar week)//写星期函数{if(hang==1)write_com(0x80+add);elsewrite_com(0x80+0x40+add);switch(week){case 1:write_data('M');//星期数为1时,显示write_data('O');write_data('N');break;case 2:write_data('T');//星期数据为2时显示write_data('U');write_data('E');break;case 3:write_data('W'); //星期数据为3时显示write_data('E');write_data('D');break;case 4:write_data('T'); //星期数据为4是显示write_data('H');write_data('U');break;case 5:write_data('F'); //星期数据为5时显示write_data('R');write_data('I');break;case 6:write_data('S'); //星期数据为6时显示write_data('T');write_data('A');break;case 0:write_data('S'); //星期数据为7时显示write_data('U');write_data('N');break;}}/*************时钟显示***************/void init_1602_ds1302(){write_sfm2_ds1302(1,1,shi); //显示时write_sfm2_ds1302(1,4,fen); //显示分write_sfm2_ds1302(1,7,miao);//显示秒write_week(2,12,week);// write_sfm1(1,14,week);//显示星期write_sfm3_18B20(1,11,temper ature); //显示温度if(flag_nl == 0) //显示阳历{write_sfm2_ds1302(2,2,nian); //显示年write_sfm2_ds1302(2,5,yue); //显示月write_sfm2_ds1302(2,8,ri);//显示日}else //显示农历{write_sfm2_ds1302(2,2,n_nian);//显示年write_sfm2_ds1302(2,5,n_yue);//显示月write_sfm2_ds1302(2,8,n_ri); //显示日}} /*************定时器0初始化程序***************/void init_time0(){EA = 1; //开总中断TMOD = 0X01;//定时器0、工作方式1ET0 = 1; //开定时器0中断TR0 = 1; //允许定时器0定时}/*************闹钟报警函数***************/void menu_dis(){static uchar mm,value;if(flag_100ms == 1)//100ms执行一次{flag_100ms = 0;if(open1 == 1) //如果闹钟打开{if((miao == 0) && (fen == fen1) && (shi == shi1)){flag_beep_en = 1;//有报警打开蜂鸣器响的标志位}if(flag_beep_en == 1)//闹钟以被打开{clock_value++;if(clock_value <= 30)beep = ~beep; //蜂鸣器叫3秒elseif(clock_value > 30){beep = 1; //蜂鸣器停1秒if(clock_value > 40){clock_value = 0;}}// 1 分钟后自动关闭闹钟value ++;if(value >= 10){value = 0;mm++;if(mm >= 60){mm = 0;flag_beep_en = 0;beep = 1;}}}}}}/********************独立按键程序*****************/uchar key_can; //按键值void key() //独立按键程序{static uchar key_new;key_can = 20; //按键值还原P3 |= 0x78; //对应的按键IO口输出为1if((P3 & 0x78) != 0x78)//按键按下{delay_1ms(1); //按键消抖动if(((P3 & 0x78) != 0x78) &&(key_new == 1)){ //确认是按键按下key_new = 0;switch(P3 & 0x78){case 0x70: key_can = 4; break; //得到按键值case 0x68: key_can = 3; break; //得到按键值case 0x58: key_can = 2; break; //得到按键值case 0x38: key_can = 1; break; //得到按键值}write_sfm2(1,0,key_can);//显示按键值}}elsekey_new = 1;}/**********************设置函数************************/void key_with(){if(key_can == 1) //设置键{menu_1++;if(menu_1 == 1) //设置时间{menu_2 = 1;write_string(1,0," - - W: ");write_string(2,0," 20 - - ");}if(menu_1 == 2) //设置闹钟{menu_2 = 1;write_string(1,0," set clock ");write_string(2,0," Y 00:00 ");}if(menu_1 > 2) //回到正常显示{menu_1 = 0;write_guanbiao(1,2,0);//关闭光标init_1602_dis_csf();//初始化液晶显示}}if(key_can == 2) //选择键{flag_200ms = 1;if(menu_1 == 1) //设置时间{menu_2 ++;if(menu_2 > 7)menu_2 = 1;}if(menu_1 == 2)//设置闹钟{menu_2 ++;if(menu_2 > 3)menu_2 = 1;}}if(menu_1 == 1){if(menu_2 == 1)//设置时{if(key_can == 3) //加{shi+=0x01;if((shi & 0x0f) >= 0x0a)shi = (shi & 0xf0) + 0x10;if(shi >= 0x24)shi = 0;}if(key_can == 4) //减{if(shi == 0x00)shi = 0x24;if((shi & 0x0f) == 0x00)shi = (shi | 0x0a) - 0x10;shi -- ;}}if(menu_2 == 2)//设置分{if(key_can == 3) //加{fen+=0x01;if((fen & 0x0f) >= 0x0a)fen = (fen & 0xf0) + 0x10;if(fen >= 0x60)fen = 0;}if(key_can == 4) //减{if(fen == 0x00)fen = 0x5a;if((fen & 0x0f) == 0x00)fen = (fen | 0x0a) - 0x10;fen -- ;}}if(menu_2 == 3)//设置秒{if(key_can == 3) //加{miao+=0x01;if((miao & 0x0f) >= 0x0a)miao = (miao & 0xf0) + 0x10;if(miao >= 0x60)miao = 0;}if(key_can == 4) //减{if(miao == 0x00)miao = 0x5a;if((miao & 0x0f) == 0x00)miao = (miao | 0x0a) - 0x10;miao -- ;}}if(menu_2 == 4)//设置星期{if(key_can == 3) //加{week+=0x01;if((week & 0x0f) >= 0x0a)week = (week & 0xf0) + 0x10;if(week >= 0x08)week = 1;}if(key_can == 4) //减{if(week == 0x01)week = 0x08;if((week & 0x0f) == 0x00)week = (week | 0x0a) - 0x10;week -- ;}}if(menu_2 == 5)//设置年{if(key_can == 3) //加{nian+=0x01;if((nian & 0x0f) >= 0x0a)nian = (nian & 0xf0) + 0x10;if(nian >= 0x9a)nian = 1;}if(key_can == 4) //减{if(nian == 0x01)nian = 0x9a;if((nian & 0x0f) == 0x00)nian = (nian | 0x0a) - 0x10;nian -- ;}}if(menu_2 == 6)//设置月{if(key_can == 3) //加{yue+=0x01;if((yue & 0x0f) >= 0x0a)yue = (yue & 0xf0) + 0x10;if(yue >= 0x13)yue = 1;}if(key_can == 4) //减{if(yue == 0x01)yue = 0x13;if((yue & 0x0f) == 0x00)yue = (yue | 0x0a) - 0x10;yue -- ;}}if(menu_2 == 7)//设置日{if(key_can == 3) //加{ri+=0x01;if((ri & 0x0f) >= 0x0a)ri = (ri & 0xf0) + 0x10;if(ri >= 0x32)ri = 0;}if(key_can == 4) //减{if(ri ==0x01)ri = 0x32;if((ri &0x0f) == 0x00)ri = (ri | 0x0a) - 0x10;ri -- ;}}write_sfm2_ds1302(1,2,shi);//显示时write_sfm2_ds1302(1,5,fen); //显示分write_sfm2_ds1302(1,8,miao);//显示秒write_sfm1(1,14,week);//显示星期write_sfm2_ds1302(2,3,nian);//显示年write_sfm2_ds1302(2,6,yue);//显示月write_sfm2_ds1302(2,9,ri);//显示日switch(menu_2)// 光标显示{case 1:write_guanbiao(1,2,1); break;case 2:write_guanbiao(1,5,1); break;case 3:write_guanbiao(1,8,1); break;case 4:write_guanbiao(1,14,1); break;case 5:write_guanbiao(2,3,1); break;case 6:write_guanbiao(2,6,1); break;case 7:write_guanbiao(2,9,1); break;}write_time(); //把时间写进去}/***************设置闹钟*********************/if(menu_1 == 2){if(menu_2 == 1) //设置闹钟开关{if(key_can == 3){open1 = 1;//闹钟开}if(key_can == 4){open1 = 0;//闹钟关}}if(menu_2 == 2) //设置闹钟时{if(key_can == 3) //加{shi1+=0x01;if((shi1 & 0x0f) >= 0x0a)shi1 = (shi1 & 0xf0) + 0x10;if(shi1 >= 0x24)shi1 = 0;}if(key_can == 4) //减{if(shi1 == 0x00)shi1 = 0x5a;if((shi1 & 0x0f) == 0x00)shi1 = (shi1 | 0x0a) - 0x10;shi1 -- ;}}if(menu_2 == 3)//设置秒{if(key_can == 3) //加{fen1+=0x01;if((fen1 & 0x0f) >= 0x0a)fen1 = (fen1 & 0xf0) + 0x10;if(fen1 >= 0x60)fen1 = 0;}if(key_can == 4) //减{if(fen1 == 0x00)fen1 = 0x5a;if((fen1 & 0x0f) == 0x00)fen1 = (fen1 | 0x0a) - 0x10;fen1 -- ;}}if(open1 == 1)write_string(2,4,"Y");elsewrite_string(2,4,"N");write_sfm2_ds1302(2,7,shi1);//显示闹钟时write_sfm2_ds1302(2,10,fen1);//显示闹钟分switch(menu_2)// 光标显示{case 1: write_guanbiao(2,4,1); break;case 2: write_guanbiao(2,7,1); break;case3: write_guanbiao(2,10,1); break;}write_eeprom(); //保存闹钟时间}}/*****************主函数********************/void main(){beep = 0; //开机叫一声delay_1ms(150);P0 = P1 = P2 = P3 = 0xff;//单片机IO口初始化为1init_time0(); //初始化定时器init_ds1302(); //ds1302初始化init_1602(); //lcd1602初始化init_1602_dis_csf();//lcd1602初始化显示init_eeprom(); //开始初始化保存的数据temperature = read_temp();//先读出温度的值delay_1ms(650);temperature = read_temp();//先读出温度的值while(1){key(); //按键程序if(key_can < 10){if(flag_beep_en == 0)//只有闹钟关了的时候才能进入设置key_with();else{flag_beep_en = 0;//按下任意键可关闭闹钟beep = 1;clock_value = 0;read_time();}if(menu_1 == 0){if(key_can == 4) //减键{flag_nl = ~flag_nl; //切换农历和阳历的显示标志位if(flag_nl == 0)write_string(2,0,"2013");elsewrite_string(2,0,"N ");}}}if(flag_200ms == 1){flag_200ms = 0;if(menu_1 == 0){read_time(); //读时间temperature = read_temp(); //先读出温度的值init_1602_ds1302();//显示时钟}}menu_dis(); //闹钟报警函数delay_1ms(1);}}/**************定时器0中断程序*****************/void time0() interrupt 1{static uchar value;TH0 = 0X3C;TL0 = 0XB0; //50msvalue ++;if((value % 2) == 0) //100msflag_100ms = 1;if(value >= 6)//200ms{value = 0;flag_200ms = 1;}}。
源程序清单流程图(1)

输入两个8位数据A和B,求|A-B|,结果放在内存中,并输出结果。
2、调试说明
1在进行循环程序设计时,要注意循环初始化、内外层循环的控制、循环结束条件等的设置对整个程序的执行逻辑要非常清楚。这样可以避免死循环等意外情况的出现。
2分支程序的控制很重要,编写代码时,要注意注释重要的分支控制部分。这样思路才不会乱。同时要对照流程图,随时观察代码的逻辑思路是否正确。
3、源程序清单和流程图,附执行结果截图。
源程序清单
DATA SEGMENT
DB 'X:$','H',0AH,0DH,'Y:$','H',0AH,0DH,'|X-Y|:$'
X DB 0
Y DB 0
Z DB 0
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV DX,0
MOV AH,09H
INT 21H
CALL INPUT
MOV X,BL
ADD DX,3
MOV AH,09H
INT 21H
CALL INPUT
MOV Y,BL
MOV AL,X
MOV BL,Y
SUB AL,BL
MOV Z,AL
JC _OUT
JMP NEXT
_OUT: UB BL,X
MOV DL,BL
MOV AH,02H
INT 21H
DEC CH
JNZ LOP
MOV DL,'H'
MOV AH,02H
INT 21H
C++经典新手源程序30例

C++经典新手源程序30例1//C++学了半年了,为方便和我一样的小菜,自学者练习,把自己做的一些程序发出来,希望对大家有用!1、输入一元二次方程的系数,求方程的解#include<iostream>#include<cmath>using namespace std;void main(){cout<<"请输入方程的系数"<<endl;double a,b,c,x1,x2;cin>>a>>b>>c;if (((b*b)-(4*a*c))<0)cout<<"无解"<<endl;else{cout<<"x1="<<(-b+sqrt(b*b-4*a*c))/(2*a)<<endl;cout<<"x2="<<(-b-sqrt(b*b-4*a*c))/(2*a)<<endl;}}********************************************************************* ********************************************************2、编程实现函数关系.#include<iostream>using namespace std;void main(){cout<<"请输入x"<<endl;double x,y;cin>>x;{if (x <= -1)y=x-1;else if (x>2 && x<=10)y=2-x;elsey=x*(x+2);}cout<<"y="<<y<<endl;}********************************************************************* ********************************************************3、根据历法,凡是1、3、5、7、8、10、12月,每月31天,凡是4,6,9,11月,每月30天,2月闰年29天,平年28天。
C++源程序代码

一:小牛问题#include <iostream>using namespace std;long int fun(int n);//声明fun函数void main(void){int n;cout <<"intput the years:";cin>>n;cout<<"cows sum="<<fun(n);}long int fun (int n)//从第一年开始算{long int i_born=1;//满一周岁的牛的数目,下面的类似long int ii_born=0;long int iii_born=0;long int iv_born=0;long int can_born=0;//今年能生产的牛的数目long int sum=1;for(int i=1;i<n;i++){can_born +=iv_born;//从四岁的母牛可以生小牛了sum +=can_born;iv_born=iii_born;iii_born=ii_born;ii_born=i_born;i_born=can_born;}return sum;}二:九九表// 九九表.cpp : Defines the entry point for the console application.//#include <iostream>using namespace std;int main(){int i,j;for(i=1;j<=9;i++){for(j=1;j<=i;j++)cout<<" "<<j<<"X"<<i<<"="<<j*i;cout<<endl;}cout<<endl;return 0;}三:杨辉三角:// 三角.cpp : Defines the entry point for the console application.//#include <iostream.h>void main(){int i,j,n;int a[20][20];cout<<"input num:";cin>>n;for (i=0;i<n;i++){a[i][0]=1;a[i][i]=1;}for (i=2;i<n;i++){for (j=1;j<i;j++){a[i][j]=a[i-1][j-1]+a[i-1][j];}}for (i=0;i<n;i++){for (int m=0;m<2*(n-i);m++){cout<<' ';}for (j=0;j<=i;j++){cout.width(4);cout<<a[i][j];}cout<<endl;}}四:长方体体积#include<iostream>using namespace std;class Box{public:void SetParameter(int l,int w,int d) {cin>>l>>w>>d;width=w;length=l;depth=d;}int Volume(){return width*length*depth;}void DispInfo(){cou<<"Box:"<<length<<"宽:"<<width<<"深:"<<depth<< endl;}private:int width,length,depth;};int main(){Box A;int l,w,d;A.SetParameter(l,w,d);A.DispInfo();cout<<"体积为:"<<A.Volume()<<endl;system("pause");return 0;}五:中奖第三章.#include<iostream>using namespace std; int main(){int ticket_number=0;cout<<"请输入你的彩票号码:";cin>>ticket_number;switch(ticket_number){case 888:cout<<"恭喜你中了一等奖!"; break;case 188:cout<<"恭喜你中了二等奖!"; break;case 105:cout<<"恭喜你中了三等奖!"; break;default:cout<<"抱歉,你没有中奖!"; }return 0;}六:拳击游戏:#include "stdafx.h"#include<iostream>using namespace std;class poser{public:virtual void beat()const{cout<<"一般选手的力量为260镑"<<endl;}protected:int age;};class Ali:public poser{public:void beat()const{cout<<"阿里一拳的力量为420镑"<<endl;}};class Lewis:public poser{public:void beat()const{cout<<"刘易斯一拳的力量为480镑"<<endl;}};class Tyson:public poser{public:void beat()const{cout<<"泰森一拳的力量为500镑"<<endl;}};class Holy:public poser{public:void beat()const{cout<<"霍利菲尔德一拳的力量为350镑"<<endl;}};int main(){poser *p[5];poser *p1;int i,choice;for (i=0;i<5;i++){cout<<"(1)阿里(2)刘易斯(3)泰森(4)霍利菲尔德:";cin>>choice;switch(choice){case 1:p1=new Ali;break;case 2:p1=new Lewis;break;case 3:p1=new Tyson;break;case 4:p1=new Holy;break;default:p1=new poser;break;}p[i]=p1;p[1]->beat();}return 0;}。
源代码使用说明

如何使用本书源程序
1、开发及运行环境
本书源程序都是在Windows Server 2003下开发的,程序测试环境为Windows Server 2003。
用户只有在Windows Server 2003下正确配置程序所需的运行环境后,才可以使用本书中的源程序。
软件开发平台如下:
操作系统:Windows 2000 Server、Windows XP、Windows Server 2003;
开发工具:Eclipse;
数据库:SQL Server 2000;
开发工具包:JDK 1.6。
分辨率:最佳效果1024×768。
2、源程序使用方法
(1)需要安装Eclipse、JDK1.5、Tomcat 6.0、SQL Server 2000。
(2)本书中实例程序的数据库都存放在章节路径下的database文件夹中。
(3)在运行第11章的示例时,需要将msbase.jar、mssqlserver.jar和msutil.jar3个SQL Server 2000数据库驱动包引入Eclipse工程,引入方法如下:
1)首先选中工程名称,并单击鼠标右键;然后在弹出的快捷菜单中依次单击“新建”->“文件夹”项;最后在打开的窗口中输入文件夹名称“lib”。
2)将三个驱动包拷贝到“lib”文件夹。
3)首先选中三个驱动包,并单击鼠标右键;然后在弹出的快捷菜单中依次单击“构件路径”->“添加至构件路径”项,即完成了引入驱动包的操作。
– 1 –。
源程序是什么

源程序是什么源程序是计算机程序的初始版本,是一种用特定的计算机语言编写的文本文件。
它包含了程序员使用编程语言编写的一系列指令和逻辑,用于告诉计算机如何执行特定的任务。
在计算机科学领域,源程序是开发软件的基础。
在本文中,我们将讨论源程序的定义、类型、作用以及与其他相关概念的区别。
源程序的定义源程序是根据某种特定的编程语言编写的计算机程序,是程序员用来表达计算机指令和逻辑的一种形式。
它是人类可读的文本文件,通常使用扩展名来标识其所使用的语言,例如C语言使用.c扩展名,Java语言使用.java扩展名等。
源程序由程序员创建,其中包含一系列的代码语句,定义了程序的行为、功能和逻辑。
源程序的类型源程序可以根据使用的编程语言进行分类。
目前,有许多不同的编程语言可供选择,例如C、C++、Java、Python等。
每种编程语言都具有不同的语法和语义规则,但它们都提供了一种方法来编写源程序。
每种编程语言都有其独特的特点和用途,适用于不同的应用领域。
源程序的作用源程序是开发软件的基础,它描述了计算机程序的行为和功能。
通过编写源程序,程序员可以实现特定任务的逻辑,并将其翻译成机器可以理解和执行的形式。
源程序通过编译器或解释器进行翻译和执行,最终生成可执行文件或在解释器环境中运行。
源程序的编写过程是软件开发中的重要环节。
在编写源程序之前,程序员需要了解所使用的编程语言的基本语法、数据类型、算法和逻辑结构。
他们需要考虑程序的设计目标、用户需求和系统约束,并选择合适的算法和数据结构。
源程序的编写需要程序员具备良好的编程技巧和逻辑思维,以及对所开发的应用领域的深入理解。
源程序与机器语言的关系源程序通常是以人类可读的形式编写的,而机器语言是计算机可以直接理解和执行的形式。
为了将源程序转化为机器语言,程序员需要使用编译器或解释器。
编译器将源程序一次性地转换为机器语言,并生成可执行文件。
解释器则将源程序一行一行地解释执行,无需生成可执行文件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
源程序,是指未经编译的,按照一定的程序设计语言规范书写的,人类可读的文本文件。
源程序可以是以书籍或者磁带或者其他载体的形式出现,但最为常用的格式是文本文件,这种典型格式的目的是为了编译出计算机可执行的程序。
将人类可读的程序代码文本翻译成为计算机可以执行的二进制指令,这种过程叫做编译,由各种编译器来完成。
目标程序为源程序经编译可直接被计算机运行的机器码集合,在计算机文件上以.obj作扩展名----由语言处理程序(汇编程序,编译程序,解释程序)将源程序处理(汇编,编译,解释)成与之等价的由机器码构成的,计算机能够直接运行的程序,该程序叫目标程序。
汇编程序,是把汇编语言书写的程序翻译成与之等价的机器语言程序的翻译程序。
汇编程序输入的是用汇编语言书写的源程序,输出的是用机器语言表示的目标程序。
翻译程序是一种系统程序,它将计算机编程语言编写的程序翻译成另外一种计算机语言的一般来说等价的程序,主要包括编译程序和解释程序,汇编程序也被认为是翻译程序。
程序的最初形式称为源程序或者源代码,翻译后的形式被称为目标程序或者目标代码。
大多数翻译程序是将高级语言编写的程序翻译为机器语言形式的可执行程序。
但是也有些翻译程序将源程序翻译成其他高级语言或者字节码等中间形式。
解释程序,专业术语,是指按照源程序的指令或语句的动态执行顺序,逐条或逐句翻译并立即执行的翻译程序。
解释程序的特点是把源程序直接翻译成加工输入数据,产生所求的动作,而不是产生目标语言形式的目标程序。