—yizhishu —yizhishu
关注数: 11 粉丝数: 38 发帖数: 2,562 关注贴吧数: 19
求大神指教,汇编语言用emu8086编译一直出错,找不到原因求教! ;上一片8255的地址 PAEQU08H PBEQU0AH PCEQU0CH CONWEQU0EH ;8253 AD82530EQU10H AD82531EQU12H AD82532EQU14H AD8253CONWEQU16H ;============================ STACKSEGMENTSTACK DB200DUP(0) STACK ENDS ;============================ DATASEGMENT LED_TABDB3FH, 06H, 5BH, 4FH, 66H DB6DH, 7DH, 07H, 7FH, 6FH DB77H, 7CH, 39H, 5EH, 79H, 71H MMMDB0 SSSDB0 ONEDB 5 TWODB 15 THREEDB 5 FOURDB 15 DATAENDS ;============================= CODESEGMENT ASSUMECS:CODE, DS:DATA START: PUSHDS MOVAX, DATA MOVDS, AX ;================= ;设置中断向量8253 CLI MOVAX, 0 MOVES, AX MOVSI, 08H MOVAX, OFFSET TIME_INT MOVES:[SI], AX MOVAX, CS MOVES:[SI+2], AX ;================= ;初始化8255A MOVAL, 80H OUTCONW, AL ;初始化8253 MOVAL, 36H OUTAD8253CONW, AL MOVAX, 65000 OUTAD82530, AL MOVAL, AH OUTAD82530, AL ;=============== LL: ;================= ;CALLIS_AD_TIMT CALLPRINT_ALL ;================= JMPLL INC_S: PUSHAX INCSSS MOVAL, SSS CMPAL, 60 JNEENDIF0 MOVAL, 0 MOVSSS, AL CALLINC_M ENDIF0: POPAX RET INC_M: PUSHAX INCMMM MOVAL, MMM CMPAL, 60 JNEENDIF1 MOVAL, 0 MOVMMM, AL ;CALLINC_H ENDIF1: POPAX RET ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DENG1:MOVAL, ONE CMPAL, 0 JNEDENG11 JEDENG2 DENG11: DECONE MOV DX,PC MOV AL,01H ;第一个灯亮 OUT DX,AL RET DENG2: MOVAL, TWO CMPAL, 0 JNEDENG22 JEDENG3 DENG22: DEC TWO MOV DX,PC MOV AL,02H ;第二个灯亮 OUT DX,AL RET DENG3: MOVAL, THREE CMPAL, 0 JNE DENG33 JE DENG4 DENG33: DEC THREE MOV DX,PC MOV AL,04H ;第三个灯亮 OUT DX,AL RET DENG4: MOVAL, FOUR CMPAL, 0 JNE DENG44 JE DENG5 DENG44: DEC FOUR MOV DX,PC MOV AL,08H ;第四个灯亮 OUT DX,AL RET DENG5: MOV AL,5 MOV ONE,AL MOV AL,15 MOV TWO,AL MOV AL,5 MOV THREE,AL MOV AL,15 MOV FOUR,AL MOV AL,0 MOV MMM,AL MOV AL,0 MOV SSS,AL RET ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; WRITE_LED:;(位选, 数字);写某一位数码管 MOVBP, SP PUSHAX PUSHDX ;========= MOVAX, [BP + 4] OUTPB, AL MOVBX, [BP + 2] LEASI, LED_TAB MOVAL, [BX + SI] OUTPA, AL ;========= POPDX POPAX RET4 PRINT_TIME:;(时0分2秒4,数值);写时分秒 MOVBP, SP PUSHAX PUSHDX PUSHCX ;============= MOVAX, [BP + 2] MOVDL, 10 DIVDL MOVCL, AH MOVDX, [BP + 4] PUSHDX XORAH, AH PUSHAX CALLWRITE_LED CALLDELAY INCDX PUSHDX XORCH, CH PUSHCX CALLWRITE_LED ;============= POPCX POPDX POPAX RET4 PRINT_ALL:;显示时间 PUSHAX ;============HOUR MOVAX, 2 PUSHAX MOVAL, MMM XORAH, AH PUSHAX CALLPRINT_TIME CALLDELAY POPAX ;============MINUTE PUSHAX MOVAX, 4 PUSHAX MOVAL, SSS XORAH, AH PUSHAX CALLPRINT_TIME CALLDELAY POPAX ;==============SECOND D1: MOVAL, ONE CMPAL, 0 JNED11 JED2 D11: PUSHAX ;==============SECOND MOVAX, 0 PUSHAX MOVAL, ONE XORAH, AH PUSHAX CALLPRINT_TIME CALLDELAY POPAX RET D2: MOVAL, TWO CMPAL, 0 JNED22 JED3 D22: PUSHAX ;==============SECOND MOVAX, 0 PUSHAX MOVAL, TWO XORAH, AH PUSHAX CALLPRINT_TIME CALLDELAY POPAX RET D3: ;DEC EEE MOVAL, THREE CMPAL, 0 JNE D33 JE D4 D33: PUSHAX ;==============SECOND MOVAX, 0 PUSHAX MOVAL, THREE XORAH, AH PUSHAX CALLPRINT_TIME CALLDELAY POPAX RET D4: MOVAL, FOUR CMPAL, 0 JNE D44 JE D1 D44: PUSHAX ;==============SECOND MOVAX, 0 PUSHAX MOVAL, FOUR XORAH, AH PUSHAX CALLPRINT_TIME CALLDELAY POPAX RET DELAY: PUSHBX PUSHCX MOVBX, 2 DEL1: MOVCX, 100 DEL2: DECCX CMPCX, 0 JNEDEL2 DECBX CMPBX, 0 JNEDEL1 POPCX POPBX RET DELAY_K:;按键延时函数,去除抖动 PUSHBX PUSHCX MOVBX, 50 DELK1: MOVCX, 300 DELK2: DECCX CMPCX, 0 JNEDELK2 DECBX CMPBX, 0 JNEDELK1 POPCX POPBX RET TIME_INT: ;定时器中断处理函数 CALLDENG1 CALLINC_S IRET CODEENDS END START
1 下一页