接口汇编设计

8086cpu计算机,根据4个开关控制1个七段数码管和8个发关二极管。要求:

(1)开关k3k2k1k0=0001,8个发光管从左向右依次点亮(每次1个灯亮);

(2)开关k3k2k1k0=0010,8个发光管从右向左依次点亮(每次1个灯亮);

(2)开关k3k2k1k0=0100,8个发光管全亮;

(2)开关k3k2k1k0=1000,8个发光管全灭;

(2)开关k3k2k1k0=0000,程序结束;

(2)开关k3k2k1k0其它值组合,8个发光管闪烁显示亮;

(2)开关任何状态下,七段数码管显示4开关对应0~F值。

.MODEL	show
COM_ADD	EQU 0273H	;控制寄存器的端口地址
PA_ADD	EQU	0270H	;7段数码管端口地址,对应8255A端口输出 
PB_ADD	EQU	0271H	;开关k3k2k1k0端口地址,对应8255B端口输入
PC_ADD	EQU	0272H	;8个led灯端口地址,对应8255C端口输出
.STACK	100H        ;栈段
.DATA

;7段数码管表,对应数码管显示从0F
Seg7		DB	3FH,06H,5BH,4FH
			DB	66H,6DH,7DH,07H
			DB	7FH,67H,77H,7CH
			DB	39H,5EH,79H,71H	

.CODE
START:		MOV	AX,@DATA      ;数据段
			MOV	DS,AX
			NOP
			MOV	DX,COM_ADD    ;取控制寄存器的地址
            ;8255a的方式控制字传入AX寄存器ABC为方式0,A输出,B输入,C输出
			MOV	AL,10000010B					
            OUT	DX,AL
		
MAIN:	
			CALL DELAY
			CALL DELAY
			MOV  DX,PB_ADD  ;取开关地址
			IN	AL,DX       ;读入开关状态
			AND AL,0FH      ;取低四位
			CMP	AL,01H      ;低四位为0001
			JE	LEDLtoR     ;从左向右依次点亮
			CMP	AL,02H      ;低四位为0010
			JE	LEDRtoL     ;从右向左依次点亮
			CMP	AL,04H      ;低四位为0100
			JE	LEDon       ;全亮
			CMP	AL,08H      ;低四位为1000
			JE	LEDoff      ;全灭
			JMP LEDbuling   ;其他情况,闪烁显示亮
		
LEDLtoR:	;开关1启动时,低四位为0001,led灯从左到右依次亮
			MOV DX,PA_ADD      ;7段数码管地址
			LEA	BX, Seg7	   ;7段码表基地址
			MOV AH, 0
			MOV	SI, AX		   ;作为7段码表的表内位移量
			MOV	AL, [BX+SI]	   ;7段码
			OUT	DX,AL          ;输出7段码
			CALL DELAY
			MOV DX,PC_ADD      ;8个led灯地址
			MOV AL,07FH
			MOV CX,8	

LtoR:		OUT	DX,AL
            ROR  AL,1
			CALL  DELAY
			LOOP  LtoR
			JMP	MAIN

LEDRtoL:	;开关2启动时,低四位为0010,led灯从右到左依次亮
			MOV DX,PA_ADD      ;7段数码管地址
			LEA	BX, Seg7	   ;7段码表基地址
			MOV AH, 0
			MOV	SI, AX		   ;作为7段码表的表内位移量
			MOV	AL, [BX+SI]	   ;7段码
			OUT	DX,AL          ;输出7段码
			CALL DELAY
			MOV DX,PC_ADD      ;8个led灯地址
            MOV AL,0FEH
			MOV CX,8

RtoL:		OUT	DX,AL
            ROL AL,1
			CALL DELAY
			LOOP RtoL
			JMP	MAIN
			
LEDon:		;当开关3启动时,;低四位为0100,全亮
			MOV DX,PA_ADD      ;7段数码管地址
			LEA	BX, Seg7	   ;7段码表基地址
			MOV AH, 0
			MOV	SI, AX		   ;作为7段码表的表内位移量
			MOV	AL, [BX+SI]	   ;7段码
			OUT	DX,AL          ;输出7段码
			CALL DELAY
			MOV DX,PC_ADD      ;8个led灯地址
			MOV AL,00H
			OUT	DX,AL
			JMP	MAIN
			
LEDoff:		;开关4启动时,低四位为1000,全灭
			MOV DX,PA_ADD      ;7段数码管地址
			LEA	BX, Seg7	   ;7段码表基地址
			MOV AH, 0
			MOV	SI, AX		   ;作为7段码表的表内位移量
			MOV	AL, [BX+SI]	   ;7段码
			OUT	DX,AL          ;输出7段码
			CALL DELAY
			MOV DX,PC_ADD      ;8个led灯地址
			MOV AL,0FFH
			OUT	DX,AL
			JMP	MAIN
			
LEDbuling:	;其他状态,闪烁
			MOV DX,PA_ADD      ;7段数码管地址
			LEA	BX, Seg7	   ;7段码表基地址
			MOV AH, 0
			MOV	SI, AX		   ;作为7段码表的表内位移量
			MOV	AL, [BX+SI]	   ;7段码
			OUT	DX,AL          ;输出7段码
			CALL DELAY
			MOV DX,PC_ADD      ;8个led灯地址
			MOV CX,8           ;闪烁8MOV AL,0FFH

LOOP2:		OUT	DX,AL
			CALL DELAY
		    MOV AL,00H
			LOOP LOOP2
			JMP	MAIN

;延时程序,重复计时60000DELAY	    PROC NEAR
			PUSH CX
			MOV CX,60000

DELAY1:		LOOP	DELAY1
			POP	CX
			RET

DELAY	ENDP
END	START

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

少年李富贵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值