hihihi

IOY0 EQU 0C000H               ;8255的CS引脚连接IOY0对应的端口始地址 
MY8255_A EQU IOY0+00H*2 ;          ;8255的端口A地址 
MY8255_B EQU IOY0+01H*2           ;8255的端口B地址 
MY8255_C EQU IOY0+02H*2           ;8255的端口C地址 
MY8255_MODE EQU IOY0+03H*2      ;8255的控制寄存器地址 
CODE SEGMENT                     ;定义代码段 
    ASSUME CS:CODE 
START: MOV DX,MY8255_MODE       ;8255控制端口地址为3006H 
    MOV AL,82H  ;设置8255方式控制字,A、B口工作方式0,A口输出,B口输入 
    OUT DX,AL 
LOOP1: MOV DX,MY8255_B            ;读B口发出的起始数据,B口输入 
    IN AL,DX 
    MOV DX,MY8255_A               ;写A口发出的起始数据,A口输出 
    OUT DX,AL 
    MOV AH,1                        ;判断是否有按键按下 
    INT 16H 
    JZ LOOP1                        ;无按键则跳回继续循环,有则退出 
QUIT: MOV AX,4C00H                 ;结束程序退出 
    INT 21H 
CODE ENDS 
    END START 

IOY0 EQU 0C000H               ;8255的CS引脚连接IOY0对应的端口始地址 
MY8255_A EQU IOY0+00H*2        ;8255的端口A地址 
MY8255_B EQU IOY0+01H*2        ;8255的端口B地址 
MY8255_C EQU IOY0+02H*2        ;8255的端口C地址 
MY8255_MODE EQU IOY0+03H*2   ;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控制端口地址为3006H 
    MOV AL,80H    ;设置8255方式控制字,A、B口工作方式0,A、B口输出 
    OUT DX,AL 
    MOV DX,MY8255_A           ;写A口发出的起始数据 
    MOV AL,80H 
    OUT DX,AL                   ;点亮数据灯D7 
    MOV LA,AL 
    MOV DX,MY8255_B           ;写B口发出的起始数据 
    MOV AL,01H 
    OUT DX,AL                   ;点亮数据灯D8 
    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                    ;无按键则跳回继续循环,有则退出 
DALLY PROC NEAR               ;软件延时子程序 
    PUSH CX 
    PUSH AX 
    MOV CX,0FFFH 
D1: MOV AX,0FFFFH 
D2: DEC AX 
    JNZ D2 
    LOOP D1 
    POP AX 
    POP CX 
    RET 
DALLY ENDP 
CODE ENDS 
    END START 

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值