问答题 读入开关量到8255A,再将其通过指示灯显示。以8255A的A口作输入,B口作输出,输入用开关,输出用发光二极管,要求当输入不全为0时,输入与输出保持一致。当输人为全0时,发光二极管闪烁。
【正确答案】程序如下:
PORTA=308H
PORTB=309H
CONTROL=30BH
DCONS=10H
DATA    SEGMENT
MESS    DB 0DH,0AH,'PRESSANYKEYTOEXIT…',0AH,0DH,'$'
DATA    ENDS
CG      SEGMENT'CODE'
       ASSUME CS:CG,DS:DATA
BEGIN: PUSH DS
       XOR AX,AX
       PUSH AX
       MOV AX,DATA
       MOV DS,AX
       MOV DX,OFFSET MESS
       MOV AH,9
       INT 21H
       MOV DX,CONTROL
       MOV AL,90H
       OUT DX,AL
       MOV AH,0FFH
       MOV BL,0
LP:    PUSH AX
       MOV AH,0BH
       INT 21H
       CMP AL,0
       JNE BACK
       POP AX
       MOV DX,PORTA
       INAL,DX
       NOP
       NOP
       TEST AL,AH
       JZ SHIFT
       MOV DX,PORTB
       OUT DX,AL
       JMP LP
SHIFT: MOV AL,BL
       MOV DX,PORTB
       0UT DX,AL
       CALL DELAY
       SHL BL,1
       TEST BL,AH
       JNZ LP
       MOV BL,1
       JMP LP
BACK:  POP AX
       RETF
DELAY   PROC NEAR
       PUSH AX
       MOV BH,DCONS
DDLY:  MOV CX,0
DELAY1:DEC CX
       LOOP DELAY1
       DEC BH
       TEST BH,AH
       JNZ DDLY
       POP AX
DELAY   ENDP
CG      ENDS
       END BEGIN
【答案解析】