




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微机原理课程设计_钟表显示_汇编课程设计-课程设计微机原理课程设计_钟表显示_汇编课程设计|精品课程网站设计|课程设计网报告总结心得extrn music:far,gensound:far;*;* 堆栈段.286;*STACK_SEG SEGMENT STACKSTACK_BUF DW 120 DUP(?)TOP EQU $-STACK_BUFSTACK_SEG ENDS;*;* 数据段;*DATA_SEG SEGMENT PARA;-; TODO: 数据的定义及存储器的分配ts1 DB 0quitbuf DB welcome you to run this programme. quitbuf2 DB C: change color; B:extend the colck; S:reduce the clock quitbuf3 DB press e to sound; Press q to quit ! sigle DB 80habsx DW 0absy DW 0sut DW 0erroybz DB 0r0 DW 90x0 DW 320y0 DW 245count0 db 0count_hour DB 11count_minute DB 11yuanxinx DW 0yuanxiny DW 0s DB 0s2 DB 0s3 DB 0hour DW 0hour2 DW 0minute DW 0minute2 DW 0second DB 0second2 DB 0sin_x DW 0sin_xx DW 0x DW 0y DW 0x1 DW 0xminy DW 0yminx DW 0xmax DW 0ymax DW 0ymin DW 0xmin DW 0sjx_xminy DW 0sjx_yminx DW 0sjx_xmax DW 0sjx_ymax DW 0sjx_ymin DW 0sjx_xmin DW 0yuanx DW 0yuany DW 0y1 DW 0x2 DW 0y2 DW 0x3 DW 0y3 DW 0DIancolor DB 0color DB 2color_hour DB 2color_min DB 6color_second DB 9color4 DB 10color5 DB 11color6 DB 12backgroundcolor DB 1page1 DB 0y2y1 DW 0x2x1 DW 0sjx_y2y1 DW 0sjx_x2x1 DW 0;-DATA_SEG ENDS;*;* 代码段;*CODE_SEG SEGMENT PARA;-MAIN PROC FARASSUME CS:CODE_SEG,DS:DATA_SEGASSUME SS:STACK_SEGSTART:MOV AX,STACK_SEGMOV SS,AXMOV SP,TOPMOV AX,DATA_SEGMOV DS,AX;-; TODO: 从这里开始您的代码;-beg: MOV AX,0012hINT 10hMOV DX,0010hCALL b1002LEA BP,quitbufCALL msgMOV DX,010ahLEA BP,quitbuf2CALL msgMOV DX,020ahLEA BP,quitbuf3CALL msgbeg2: CALL skinCALL skin2CALL skin3CALL CLkMOV second,DHMOV second2,DHMOV count_minute,11CALL minute_linXOR DX,DXMOV AX,minute2MOV CX,12DIV CXMOV CX,AX ;minurte2/12POP AXADD AX,CXMOV hour2,AXMOV count_hour,11CALL hour_linCALL CLkMOV DL,DHCALL bcd2XOR AH,AHMOV CL,12DIV CLMOV count_minute,AH ;second%12初始值DEC count_minuteXOR DX,DXMOV AX,minute2MOV CX,12DIV CX ;minurte2%12MOV count_hour,DLDEC count_hourINC second2kk3: CLICALL second_linSTIJMP ksks: MOV AH,1INT 16hJZ kk3MOV AH,8INT 21hCMP AL,qJE quitCMP AL,bJE CHange_rbCMP AL,sJE CHange_rsCMP AL,cJE CHange_colorcmp al,eje a0JMP kk3CHange_rs: CMP r0,190JA ksADD r0,5JMP tobeg2CHange_rb: CMP r0,60JB ksSUB r0,5JMP tobeg2CHange_color: LEA SI,color_hourMOV CX,6CHange_kk1: MOV AL, SIINC ALCMP AL,15JC CHange_color_kk2MOV AL,1CHange_color_kk2:MOV SI,ALINC SILOOP CHange_kk1JMP tobeg2a0: call musiccall musiccall musictobeg2: CALL CLearJMP beg2quit: MOV AX,4C00HINT 21H;*hour_lin PROC NEARPUSHaCMP count_hour,11JB tohour_ylJMP hour_lin_nexttohour_yl: MOV SIgle,3JMP hour_ylhour_lin_next:MOV count_hour,0MOV SIgle,5CALL CLkMOV DL,CHCALL bcd2CMP AL,12JB hour_kk1SUB AL,12hour_kk1: MOV CL,30MUL CLPUSH AXXOR DX,DXMOV AX,minute2MOV CX,12DIV CXMOV CX,AX ;minurte2/12POP AXADD AX,CXMOV hour2,AX;擦掉MOV Color,0MOV AX,hourMOV BX,r0ADD BX,20CALL renovateMOV DX,yuanxMOV x3,DXMOV DX,yuanyMOV y3,DXADD AX,270ADD BX,400 ;90CALL renovateMOV DX,yuanx ;擦掉MOV x2,DXMOV DX,yuanyMOV y2,DXMOV DX,x0MOV x1,DXMOV DX,y0 ;擦掉MOV y1,DXCALL sjxADD AX,180CALL renovateMOV DX,yuanx ;擦掉MOV x2,DXMOV DX,yuanyMOV y2,DXSUB BX,100CALL renovateMOV DX,yuanxMOV x3,DXMOV DX,yuanyMOV y3,DX ;擦掉CALL sjxMOV SIgle,4;*;; ;重写hour_yl: MOV AL,color_hourMOV color,ALMOV AX,hour2MOV BX,r0ADD BX,70CALL renovateMOV DX,yuanxMOV x3,DXMOV DX,yuanyMOV y3,DXADD AX,90ADD BX,600 ;90CALL renovateMOV DX,yuanxMOV x2,DXMOV DX,yuanyMOV y2,DX ;重写ADD AX,180CALL renovateMOV DX,yuanxMOV x1,DXMOV DX,yuanyMOV y1,DXCALL sjxxCALL sjxyADD AX,270SUB BX,100CALL renovateMOV DX,yuanxMOV x3,DX ;重写MOV DX,yuanyMOV y3,DXCALL sjxCALL sjxxCALL sjxyMOV CX,hour2MOV hour,CXhour_quit: POPaREThour_lin ENDP;*minute_lin PROC NEARPUSHaCMP count_minute,11JB tominute_yl ;仍是原来的一个JMP minute_lin_nexttominute_yl: MOV SIgle,0JMP minute_ylminute_lin_next:INC count_hourCALL CLkMOV DL,CLCALL bcd2 ;bcd-16MOV CL,6MUL CL ;al*clPUSH AXMOV DL,second2CALL bcd2XOR AH,AHMOV CL,12DIV CLMOV CL,AL ;second2/12POP AXMOV CH,0ADD AX,CXMOV minute2,AXAAAa1:MOV SIgle,2MOV Color,0MOV AX,minuteMOV BX,r0ADD BX,10CALL renovateMOV DX,yuanxMOV x3,DXMOV DX,yuanyMOV y3,DXADD AX,268ADD BX,800 ;90CALL renovateMOV DX,yuanxMOV x2,DXMOV DX,yuanyMOV y2,DXMOV DX,x0MOV x1,DXMOV DX,y0MOV y1,DXCALL sjxADD AX,180CALL renovateMOV DX,yuanxMOV x2,DXMOV DX,yuanyMOV y2,DXADD AX,90SUB BX,200CALL renovateMOV DX,yuanxMOV x3,DXMOV DX,yuanyMOV y3,DXCALL sjxinc count0cmp count0,5jnz minute_ylmov count0,0call musiccall musiccall music;*重写minute_yl: MOV sigle,1MOV AL,color_minMOV color,ALMOV AX,minute2MOV BX,r0ADD BX,30CALL renovateMOV DX,yuanxMOV x3,DXMOV DX,yuanyMOV y3,DXADD AX,90ADD BX,900 ;90CALL renovateMOV DX,yuanxMOV x2,DXMOV DX,yuanyMOV y2,DXADD AX,180CALL renovateMOV DX,yuanxMOV x1,DXMOV DX,yuanyMOV y1,DXCALL sjxxCALL sjxyADD AX,270SUB BX,200CALL renovateMOV DX,yuanxMOV x3,DXMOV DX,yuanyMOV y3,DXCALL sjxxCALL sjxyMOV CX,minute2MOV minute,CXCALL hour_linminute_kk1:minute_quit: POPaRETminute_lin ENDP;*in dh秒数*second_lin PROC NEARPUSHaCALL CLkCMP second2,DHJE to_second_quitJMP second_lin_nextto_second_quit:JMP second_quitsecond_lin_next:MOV SIgle,80hMOV second2,DHMOV Color,0MOV DL,second ;eraseCALL bcd2MOV AH,0MOV CL,6MUL CLMOV BX,r0ADD BX,10CALL renovateMOV DX,yuanxMOV x1,DXMOV DX,yuanyMOV y1,DXADD AX,180ADD BX,300CALL renovateMOV DX,yuanxMOV x2,DXMOV DX,yuanyMOV y2,DXCALL linexCALL liney;重写MOV SIgle,80hMOV AL,color_secondMOV color,ALMOV DL,second2CALL bcd2MOV AH,0MOV CL,6MUL CLMOV BX,r0ADD BX,10CALL renovateMOV DX,yuanxMOV x1,DXMOV DX,yuanyMOV y1,DXADD AX,180ADD BX, 300CALL renovateMOV DX,yuanxMOV x2,DXMOV DX,yuanyMOV y2,DXCALL linexCALL lineyCALL yuanxinMOV DL,second2MOV second,DLCALL minute_linCALL skin2MOV CL,second2MOV second,CLCMP count_minute,11JE second_kk1INC count_minuteJMP second_quitsecond_kk1: MOV count_minute,0second_quit: POPaRETsecond_lin ENDP;*bxbbx*in ax度数*bx长度,*;OUT x2-ax,y2-dx ;*renovate PROC NEARPUSHaADD AX,270PUSH AXCALL SInMOV DX,0MOV CX,BXDIV CXCMP SI,1JE hjianADD AX,y0JMP renovate_kk1hjian: MOV CX,y0SUB CX,AXMOV AX,CXrenovate_kk1: MOV yuany,AXPOP AXCALL cosMOV DX,0MOV CX,BXDIV CXCMP SI,1JE hjian2ADD AX,x0JMP renovate_kk2hjian2: MOV CX,x0SUB CX,AXMOV AX,CXrenovate_kk2: MOV yuanx,AXPOPaRETrenovate ENDP;*Clk PROCMOV AH,2INT 1ahRETCLk ENDP;*cosx in ax out ax ,si符号*cos PROC NEARADD AX,90cos_kk1: CALL SInRETcos ENDP;*Sinx in ax out ax ,si符号*SIn PROC NEAR ;out axPUSH CXPUSH DXPUSH BXsin360: CMP AX,90JA dy90sto0_90: MOV SI,0JMP pp1dy90: CMP AX,180JBE z91to180JMP dy180z91to180: MOV CX,180SUB CX,AXMOV AX,CXMOV SI,0JMP pp1z181to270: SUB AX,180MOV SI,1JMP pp1z271to360: CMP AX,359JA zdy359MOV CX,360SUB CX,AXMOV AX,CXMOV SI,1JMP pp1zdy359: SUB AX,360JMP SIn360dy180: CMP AX,270JBE z181to270JMP z271to360pp1: MOV CX,175XOR DX,DXMUL CXMOV sin_x,AXXOR DX,DXMOV CX,AXMUL CXMOV CX,10000DIV CXMOV sin_xx,AXXOR DX,DXMOV CX,120DIV CXMOV BX,1677;1667CALL SUBabMOV CX,sin_xxXOR DX,DXMUL CXMOV CX,10000DIV CX ;xx(xx/120-10000/6)MOV CX,10000MOV DL,0CMP DL,sJE jiaSUB CX,AXMOV AX,CXJMP kk1jia: ADD AX,CXkk1: MOV CX,sin_xXOR DX,DXMUL CXMOV CX,10000DIV CXPOP BXPOP DXPOP CXMOV s,0RETSIn ENDP;*;绝对值在ax中符号在S中ax-bx*s要定义db*subab PROCCMP AX,BXJAE goabXOR s,1XCHG AX,BXgoab:SUB AX,BXRETsubab ENDP ;*linex*y=(y2-y1)*(x-x1)/(x2-x1)+y1;*in (x1,y1),(x2,y2)*x+linex PROC NEARPUSH x1PUSH x2PUSH y1PUSH y2pushaCALL xymaxminMOV AX,y2MOV BX,y1CALL subabMOV y2y1,AXMOV AX,x2MOV BX,x1CALL subabMOV SI,0CMP SI,AXJE zhixianJMP lopxzhixian: JMP zhixianxslopx: MOV x2x1,AXMOV AX,xminMOV x,AXline0x: SUB AX,xminMOV DX,0MOV CX,y2y1MUL CXMOV CX,x2x1DIV CXMOV DX,0CMP DL,sJE zhengxMOV CX,AXMOV AX,xminySUB AX,CXJMP kk2xzhengx: ADD AX,xminykk2x: MOV y,AXCALL DIanINC xMOV AX,xCMP AX,xmaxJBE line0xJMP quit12zhixianxs: MOV AX,xminMOV x,AXMOV AX,yminMOV y,AXlopxx: CALL DIanINC yMOV AX,ymaxCMP AX,yJAE lopxxquit12: MOV s,0POPaPOP y2POP y1POP x2POP x1RETlinex ENDP;*liney x=(x2-x1)(y-y1)/(y2-y1)+x1;*y+sjx PROC NEARPUSH x1PUSH x2PUSH y1PUSH y2pushaCALL xymaxminMOV AX,y2MOV BX,y1CALL subabMOV y2y1,AXMOV SI,0CMP SI,AXJE to_sjxxsjx_lop1: MOV AX,x2MOV BX,x1CALL subabMOV x2x1,AXMOV SI,0CMP SI,AXJE to_sjxyMOV DX,0MOV AX,y2y1MOV CX,x2x1DIV CXCMP AX,1JE to_sjxxCMP AX,0JE to_sjxxJMP to_sjxyto_sjxx: MOV s,0CALL sjxxJMP sjx_quitto_sjxy: MOV s,0CALL sjxysjx_quit: POPaPOP y2POP y1POP x2POP x1MOV s,0RETsjx ENDPliney PROC NEARPUSH x1PUSH x2PUSH y1PUSH y2pushaCALL xymaxminMOV AX,y2MOV BX,y1CALL subabMOV y2y1,AXMOV SI,0CMP SI,AXJE hengJMP lop1heng: JMP hengxianlop1: MOV AX,x2MOV BX,x1CALL subabMOV x2x1,AXMOV AX,yminMOV y,AXline0y: SUB AX,yminMOV DX,0MOV CX,x2x1MUL CXMOV CX,y2y1DIV CXMOV DX,0CMP DL,sJE zhengyMOV CX,AXMOV AX,yminxSUB AX,CXJMP kkyzhengy: ADD AX,yminxkky: MOV x,AXCALL DIanINC yMOV AX,yCMP AX,ymaxJBE line0yJMP quityhengxian: MOV AX,yminMOV y,AXMOV AX,xminMOV x,AXlopy: CALL DIanINC xMOV AX,xmaxCMP AX,xJAE lopyquity: MOV s,0POPaPOP y2POP y1POP x2POP x1RETliney ENDP;*linex*y=(y2-y1)*(x-x1)/(x2-x1)+y1;*in (x1,y1),(x2,y2)*x+sjxx PROC NEARpushaPUSH x1PUSH x2PUSH x3PUSH y1PUSH y2PUSH y3CALL xymaxminMOV AX,xminMOV sjx_xmin,AXMOV AX,yminMOV sjx_ymin,AXMOV AX,xmaxMOV sjx_xmax,AXMOV AX,ymaxMOV sjx_ymax,AXMOV AX,xminyMOV sjx_xminy,AXMOV AX,y2MOV BX,y1CALL subabMOV sjx_y2y1,AXMOV AX,x2MOV BX,x1CALL subabMOV DL,sMOV s2,DLMOV s,0MOV SI,0CMP SI,AXJE sjx_zhixianJMP sjx_lopxsjx_zhixian:MOV x1,AXMOV AX,x3MOV x2,AXMOV AX,y3MOV y2,AXJMP sjx_zhixianxssjx_lopx: MOV sjx_x2x1,AXMOV AX,x3MOV x2,AXMOV AX,y3MOV y2,AXMOV AX,sjx_xminMOV x1,AXsjx_line0x: SUB AX,sjx_xminMOV DX,0 ;*y=(y2-y1)*(x-x1)/(x2-x1)+y1MOV CX,sjx_y2y1MUL CXMOV CX,sjx_x2x1DIV CXMOV DX,0CMP DL,s2JE sjx_zhengxMOV CX,AXMOV AX,sjx_xminySUB AX,CXJMP sjx_kk2sjx_zhengx:ADD AX,sjx_xminysjx_kk2:MOV y1,AXCALL linexCALL lineyINC x1MOV AX,x1CMP AX,sjx_xmaxJBE sjx_line0xJMP sjx_quit12sjx_zhixianxs: MOV AX,sjx_xminMOV x1,AXMOV AX,sjx_yminMOV y1,AXsjx_lopxx:CALL linexCALL lineyINC y1MOV AX,sjx_ymaxCMP AX,y1JAE sjx_lopxxsjx_quit12: MOV s,0POP y3POP y2POP y1POP x3POP x2POP x1POPaRETsjxx ENDP;*liney x=(x2-x
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论