《电子秒表汇编源程序.doc》由会员分享,可在线阅读,更多相关《电子秒表汇编源程序.doc(5页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、;=; 文件名: A82541.ASM; 功能描述: 采用8254产生1ms,软件计数产生1s,中断方式处理; 适当修改软件就可以做成电子钟;=MY8255_A EQU 0600HMY8255_B EQU 0602HMY8255_C EQU 0604HMY8255_CONEQU 0606HA8254 EQU 06C0HB8254 EQU 06C2HC8254 EQU 06C4HCON8254 EQU 06C6HCOUNT EQU 1000SSTACKSEGMENT STACKDW 100 DUP(?)SSTACKENDSDATA SEGMENTDTABLEDB 3FH,06H,5BH,4FH,
2、66H,6DH,7DH,07HDB 7FH,6FH,77H,7CH,39H,5EH,79H,71HDATA ENDSCODESEGMENTASSUME CS:CODE, SS:SSTACK,DS:DATASTART:PUSH DSMOV AX, 0000HMOV DS, AXMOV AX, OFFSET IRQ7;取中断入口地址MOV SI, 003CH;中断矢量地址MOV SI, AX;填IRQ7的偏移矢量MOV AX, CS;段地址MOV SI, 003EHMOV SI, AX;填IRQ7的段地址矢量CLIPOP DSMOV AX,DATA ;remember this MOV DS,AX
3、 ;not lose,it is very important MOV CX,06HMOV DI,3000HMOV AL,00HLP:MOV DI,AL INC DI LOOP LP MOV DI,3003H MOV SI,4000HMOV AL,00HMOV SI,AL;清显示缓冲MOV SI+1,ALMOV SI+2,ALMOV SI+3,ALMOV SI+4,ALMOV SI+5,ALMOV SI,4000H MOV AX,COUNT ;SAVE COUNT=1000MOV DI,ALMOV DI+1,AH;初始化主片8259MOV AL, 11HOUT 20H, AL;ICW1MOV
4、AL, 08HOUT 21H, AL;ICW2MOV AL, 04HOUT 21H, AL;ICW3MOV AL, 01HOUT 21H, AL;ICW4MOV AL, 6FH;OCW1OUT 21H, AL;8254MOV DX, CON8254MOV AL, 30H;计数器0,方式0OUT DX, ALMOV DX, A8254 ;计数初值为3E8H=1000MOV AL, 0E8H ;c350H=50000,产生50ms中断OUT DX, ALMOV AL, 03HOUT DX, ALMOV DX,MY8255_CON;写8255控制字 MOV AL,81HOUT DX,ALSTI AA
5、1:CALL DIS;调用显示子程序JMP AA1;=;显示子程序;=DIS: PUSH AXMOV SI,4000HMOV DL,0DFHMOV AL,DLAGAIN: PUSH DX MOV DX,MY8255_A OUT DX,AL ;select first seg MOV AL,SI MOV BX,OFFSET DTABLE XLAT MOV DX,MY8255_B OUT DX,ALCALL DALLYINC SI POP DX MOV AL,DLTEST AL,01H JZ OUT1ROR AL,1MOV DL,ALJMP AGAINOUT1: POP AXRET;= 延时子程序
6、 =DALLY: PUSH CX MOV CX,0012HT1: MOV AX,0020HT2: DEC AXJNZ T2LOOP T1POP CXRET;save secondIRQ7: PUSH AX MOV DX, A8254 ;重装计数初值MOV AL, 0E8H OUT DX, ALMOV AL, 03H OUT DX, AL MOV DI,3003HMOV AL,DIMOV AH,DI+1DEC AX JNZ NEXTMOV DI,3003HMOV AX,COUNTMOV DI,AL ;重新赋初值MOV DI+1,AH;MOV AX, 0173H;INT 10H;显示字符s;SEC
7、ONDMOV DI,3000HMOV DL,DIMOV AH,00HMOV AL,DLMOV BL,10DIV BLMOV BH,AH ;AH 保存余数,al保存商MOV BL,AL ;MOV SI,4001H ;4000H内存单元保存秒的十位MOV SI,ALOR AL,30H ;ADD 30HMOV AH,01HINT 10HMOV AL,BHMOV SI,4000H ;4001H内存单元保存秒的个位MOV SI,ALOR AL,30H ;ADD 30HMOV AH,01HINT 10HMOV AX, 0120H ;20h=空格INT 10HMOV DI,3000HMOV DL,DIINC DLMOV DI,DLCMP DL,60JL EXITMOV DL,00HMOV DI,3000HMOV DI,DL ;clear second value;minute; JMP EXITNEXT: ;DEC AX MOV DI,AL MOV DI+1,AHEXIT: MOV AL, 20HOUT 20H, AL;中断结束命令POP AXIRETCODEENDSEND START
限制150内