《表盘式时钟汇编原代码》由会员分享,可在线阅读,更多相关《表盘式时钟汇编原代码(21页珍藏版)》请在金锄头文库上搜索。
1、汇编语言课程设计指针式屏显电子钟设计姓 名 刘尊惠学 号 02045039班 级 计 022 班一基本设计要求1 在屏幕上显示一个适当大小的圆形,再圆形道上均匀的分配着 60 个点,代表 1 秒60 秒的位置,凡是 5 倍的点应当比其他的大。2 以圆中心为轴,画一条斜线代表秒针,采用定时中断方式,每过 1 秒钟,秒针移动一个位置。3 定时源可以使用试验箱上的 8253。4 按“ESC”之后,结束演示。二 扩展要求屏幕上显示时、分、秒针,没有使用中断定时方式,采用的是系统实时时间。三 课设基本思想屏幕设置为图形方式,采用模块化编程,主模块显示界面信息,每个子模块负责一个功能,然后通过模块调用来实
2、现。首先调用画圆及画线子模块显示圆形表盘,及时、分、秒针,然后调用秒针移动子模块式电子钟能够运行。在秒针移动子模块中,首先通过 cos 和 sin 两个功能模块来确定秒针移动的度数,其次分别对秒、分、时进行擦除重写操作,再分别对表盘及圆心进行刷新,这样就实现了时、分、秒针的动态变化。四 程序流程图 开始显示信息调用画线子模块画出时分秒针调用系统实时时钟显示模块 Clk 显示系统时间调用擦除、重写及角度确定子模块进行指针移动调用 renovate 及 enovate进行表盘及圆心的刷新接收键盘字符是否为 q结束YN五课设原代码:* *堆栈段 *.286;*STACK_SEG SEGMENT ST
3、ACKSTACK_BUF DW 120 DUP(?)TOP EQU $-STACK_BUFSTACK_SEG ENDS;* 数据段 *DATA_SEG SEGMENT PARAquitbuf DB 0ah,0dh,0ah,0dh, welcome to use this programme! sigle DB 80h absx DW 0 absy DW 0 sut DW 0erroybz DB 0 r0 DW 90x0 DW 320y0 DW 245 count0 db 0 count_hour DB 11 count_minute DB 11yuanxinx DW 0yuanxiny DW
4、0 s DB 0s2 DB 0 s3 DB 0hour DW 0hour2 DW 0 minute DW 0minute2 DW 0 second DB 0 second2 DB 0 sin_x DW 0sin_xx DW 0 x DW 0y DW 0x1 DW 0 xminy DW 0yminx DW 0 xmax DW 0 ymax DW 0 ymin DW 0xmin DW 0 sjx_xminy DW 0sjx_yminx DW 0 sjx_xmax DW 0 sjx_ymax DW 0 sjx_ymin DW 0sjx_xmin DW 0 yuanx DW 0yuany DW 0 y
5、1 DW 0x2 DW 0y2 DW 0x3 DW 0y3 DW 0 DIancolor DB 0 color DB 2color_hour DB 2color_min DB 6color_second DB 9 color4 DB 10color5 DB 11color6 DB 12 backgroundcolor DB 1 page1 DB 0y2y1 DW 0 x2x1 DW 0 sjx_y2y1 DW 0 sjx_x2x1 DW 0 DATA_SEG ENDS;* *代码段* CODE_SEG SEGMENT PARAMAIN PROC FARASSUME CS:CODE_SEG,DS
6、:DATA_SEGASSUME SS:STACK_SEGSTART:MOV AX,STACK_SEGMOV SS,AXMOV SP,TOPMOV AX,DATA_SEGMOV DS,AXbeg: MOV AX,0012h ;显示欢迎信息INT 10hMOV DX,0010h CALL b1002LEA BP,quitbufCALL msg beg2: CALL skin2CALL skin3CALL CLkMOV second,DHMOV second2,DHMOV count_minute,11CALL minute_linXOR DX,DX MOV AX,minute2MOV CX,12D
7、IV CXMOV CX,AX ;分针初始化POP AXADD AX,CXMOV hour2,AXMOV count_hour,11 CALL hour_lin CALL CLkMOV DL,DHCALL bcd2XOR AH,AHMOV CL,12DIV CLMOV count_minute,AH ;秒针初始化DEC count_minute XOR DX,DXMOV AX,minute2MOV CX,12DIV CX ;时针初始化MOV count_hour,DLDEC count_hourINC second2kk3: CLICALL second_lin STIJMP ks ks: MO
8、V AH,1 ;扫描缓冲区INT 16hJZ kk3MOV AH,8INT 21h JMP kk3;*秒针代码段* second_lin PROC NEARPUSHaCALL CLkCMP second2,DHJE to_second_quit JMP second_lin_nextto_second_quit:JMP second_quitsecond_lin_next: MOV SIgle,80hMOV second2,DH MOV Color,0 MOV DL,second ;擦除CALL bcd2MOV AH,0MOV CL,6MUL CLMOV BX,r0ADD BX,10CALL renovate MOV DX,yuanxMOV x1,DXMOV DX,yuanyMOV y1,DXADD AX,180ADD BX,300 CALL r