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

📄 t8255-2.asm

📁 A1.asm 显示程序实验 STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS DATA SEGMENT USE16 MES1 DB
💻 ASM
字号:
;T8255-2.asm
;8255流水灯显示实验

;****************根据查看端口资源修改下列符号值*******************
IOY0         EQU   9C00H          ;片选IOY0对应的端口始地址
;*****************************************************************
MY8255_A     EQU   IOY0+00H*4     ;8255的A口地址
MY8255_B     EQU   IOY0+01H*4     ;8255的B口地址
MY8255_C     EQU   IOY0+02H*4     ;8255的C口地址
MY8255_MODE  EQU   IOY0+03H*4     ;8255的控制寄存器地址

STACK1 SEGMENT STACK
        DW 256 DUP(?)
STACK1 ENDS

DATA SEGMENT 
LA      DB  ?                     ;定义数据变量
LB      DB  ?
DATA ENDS

CODE SEGMENT
        ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA
       MOV DS,AX

       MOV DX,MY8255_MODE         ;定义8255工作方式            
       MOV AL,80H                 ;工作方式0,A口和B口为输出
       OUT DX,AL

       MOV DX,MY8255_A            ;写A口发出的起始数据
       MOV AL,80H
       OUT DX,AL
       MOV LA,AL

       MOV DX,MY8255_B            ;写B口发出的起始数据
       MOV AL,01H
       OUT DX,AL
       MOV LB,AL

LOOP1: CALL DALLY
       MOV AL,LA                  ;将A口起始数据右移再写入A口
       ROR AL,1        
       MOV LA,AL
       MOV DX,MY8255_A
       OUT DX,AL

       MOV AL,LB                  ;将B口起始数据左移再写入B口
       ROL AL,1
       MOV LB,AL
       MOV DX,MY8255_B
       OUT DX,AL

       MOV AH,1                   ;判断是否有按键按下
       INT 16H
       JZ  LOOP1                  ;无按键则跳回继续循环,有则退出

QUIT:  MOV AX,4C00H               ;结束程序退出
       INT 21H

DALLY PROC NEAR                   ;软件延时子程序
       PUSH CX
       PUSH AX
       MOV  CX,3FFH
D1:    MOV  AX,0FFFFH
D2:    DEC  AX
       JNZ  D2
       LOOP D1
       POP  AX
       POP  CX
       RET
DALLY ENDP

CODE ENDS
     END START

⌨️ 快捷键说明

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