⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 yang5.txt

📁 c程序各种经典算法
💻 TXT
字号:
       C8279 EQU 20AH		;8279 控制端口
       D8279 EQU 208H		;8279 数据端口
       C8255 EQU 203H		;8255 控制端口
       P8255C EQU 202H		;8255 C端口
CODE SEGMENT
  ASSUME CS:CODE,DS:CODE
  START:PUSH CS
        POP DS
    INI:MOV DX,C8255
        MOV AL,80H
        OUT DX,AL		;置8255工作方式,C端口输出
        MOV DX,C8279
        MOV AL,00H
        OUT DX,AL		;KEYBORD DISPLY MODE,置键盘显示模式		
        MOV AL,2AH
        OUT DX,AL		;8279 CLOCK,置时钟命令
	MOV AL,90H
	OUT DX,AL		;WRITE RAM COMMAND,写RAM命令,地址自动加1
        MOV AL,0D1H
        OUT DX,AL		;8279 CLEAR,清零
	JMP SHORT $+2		
  WAIT1:IN AL,DX		;从8279控制端口读状态
        MOV AH,AL
        AND AL,80H
        JNZ WAIT1		;当显示无效时跳WAIT1
        MOV AL,AH
        AND AL,0FH
        CMP AL,00H
        JE WAIT1		;当FIFO RAM中没有键值时
        LEA BX,STEP		;把STEP的地址传给BX
    RUN:CALL CHKKEY		;调CHKKEY扫描键子函数
        CALL DISPLAY		;调DISPLAY显示子函数
        MOV CX,08H
  LOOP3:MOV DX,P8255C
        MOV AL,[SI]
        OUT DX,AL		;往C端口输出脉冲
        INC SI
        CALL DELAY		;调DELAY延时子函数
        LOOP LOOP3
        JMP RUN
CHKKEY PROC NEAR		;扫描键子函数
  RDKEY:MOV DX,C8279
        IN AL,DX		;从8279控制端口读状态
        MOV AH,AL
        AND AL,80H
        CMP AL,80H
        JE RDKEY
        MOV AL,AH
        AND AL,0FH
        CMP AL,00H
        JE RTN			;当FIFO RAM中没有键值时
        MOV AL,40H
        OUT DX,AL
        MOV DX,D8279
        IN AL,DX		;从8279数据端口读键值
    CHK:CMP AL,15H
        JE QUIT			;如果AL=15H则退出
        CMP AL,0AH
        JNC DIRE		;如果AL>=0AH,则跳转DIRE
        MOV DELAYTIME,AL	;DELAYTIME存放延时时间
        JMP RTN
   DIRE:CMP AL,12H
        JNE NEXT		;如果AL=12H,即按下“-”键时,则继续执行
        MOV DIRDSP,40H
        LEA BX,STEP
        JMP RTN
   NEXT:CMP AL,13H
        JNE RTN			;如果AL=13H,即按下“+”键时,则继续执行
        MOV DIRDSP,46H
        LEA BX,STEP
        ADD BX,07H
    RTN:MOV SI,BX
        RET
CHKKEY ENDP
DELAY PROC NEAR			;延时子函数
        PUSH CX
        MOV CX,0AH
        SUB CL,DELAYTIME
  LOOP1:PUSH CX
        MOV CX,03FFH
  LOOP2:NOP
        LOOP LOOP2
        POP CX
        LOOP LOOP1
        POP CX
        RET
DELAY ENDP
DISPLAY PROC NEAR		;显示DISPLAY子函数,在LED上显示在键盘输入的字符。
        PUSH BX
        MOV DX,D8279
        MOV AL,DELAYTIME
        LEA BX,LED
        XLAT
        OUT DX,AL
        MOV AL,DIRDSP
        OUT DX,AL
        MOV CX,0006H
        LEA BX,DSP
  LOOP4:MOV AL,[BX]
        OUT DX,AL
        INC BX
        LOOP LOOP4
        MOV DX,C8279
        MOV AL,0C2H
        OUT DX,AL
        POP BX
        RET
DISPLAY ENDP

   QUIT:MOV DX,C8279
        MOV AL,0D2H
        OUT DX,AL
        jmp $
LED	DB 3FH,06H,5BH,4FH,66H
	DB 6DH,7DH,07H,7FH,6FH
DSP 	DB 5EH,79H,79H,73H,6DH,0EDH
DELAYTIME DB 01H
STEP 	DB 04H,05H,01H,09H,08H
     	DB 0AH,02H,06H,02H,0AH
     	DB 08H,09H,01H,05H,04H
DIRDSP 	DB 40H

CODE ENDS
END START

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -