补充题1:对8255A设置工作方式,控制端口地址为00C6H。要求A工作在方式1,输入;B工作在方式0,输出;C的高4位配合A,低4位输入 答:
MOV DX, 00C6H
MOV AL, 10111001B; A口方式1输入,B口方式0输出,C口低四位输入 OUT DX, AL
补充题2:利用8255A作为简单的输入/输出接口实现同步传送。设在IBM PC的扩展板上有一片8255A,其端口B连接8个开关,端口C接8个LED,电路连接如图所示。运行程序时,可观察到LED的显示反映开关的状态。当按下任意键时,可退出程序。设8255A的端口地址为:端口A为218H,端口B为219H,端口C为21AH,控制端口为21BH。试编写完整的汇编语言程序。
答:
STACK1 SEGMENT STACK DW 10H DUP(?) STACK1 ENDS CODE SEGMENT PORTA EQU 218H PORTB EQU 219H PORTC EQU 21AH PORTCTR EQU 21BH
ASSUME CS:CODE,SS:STACK1 MAIN: MOV DX, PORTCTL MOV AL, 10000010B; C口输出, B口方式0,输入 OUT DX, AL DIS: MOV DX, PORTB IN AL, DX
MOV DX, PORTC OUT DX, AL MOV AH, 6 MOV DL, 0FFH
INT 21H ;用6号DOS功能调用检测是否有按键按下 JZ DIS ;无按键则标志ZF=1 MOV AH, 4CH; 返回DOS INT 21H CODE ENDS END MAIN
补充题3: 要求在甲乙两台微机之间并行传送1K字节数据。甲机发送,乙机接收。甲机一侧的8255A采用工作方式1工作,乙机一侧的8255A采用工作方式0,两个CPU与接口之间都采用查询方式交换数据。见下图。编写甲乙两台微机的程序。
乙(接收)0方式8255APA7~0PC4CPUPC0OBFACK甲(发送)1方式8255APA7~0PC7PC6PC3PB7~0PC5~0
CPUPC1,2,3PB7~0未用答:
假设甲乙8255的端口A地址为PORTA, 端口B的地址为PORTB,端口C的地址为PORTC, 控制端口地址为PORTRCTL,假设甲机要发送的数据放在data中,乙机接收的数据也放在data中,甲乙机的程序分别为:
甲机程序:(发送) CODE SEGMENT MAIN: MOV DX, PORTCTL
MOV AL, 10100000B; A口方式1,输出 OUT DX, AL
MOV CX, 03FFH; 1K数据 MOV AX, OFFSET data MOV SI, AX
SEND:
MOV DX, PORTC IN AL, DX
TEST AL, 40H; 检测PC6 (ACK) JNZ SEND; 若ACK=1, 继续查询 MOV DX, PORTA MOV AL, [SI]
OUT DX, AL; 若ACK=0, 发送下一字节数据 INC SI
LOOP SEND
MOV AH, 4CH; 返回DOS INT 21H CODE ENDS END MAIN
乙机程序: (接收) CODE SEGMENT MAIN:
MOV DX, PORTCTL
MOV AL, 10001000B; A口方式0输入,C口高四位输入,低四位输出 OUT DX, AL MOV AL, 01H OUT DX, AL; 令ACK=1 MOV CX, 03FFH; 1K数据 MOV AX, OFFSET data MOV SI, AX RECEIVE: MOV DX, PORTCTL
MOV AL, 01H
OUT DX, AL; 令ACK=1 TEST AL, 10H JNZ RECEIVE MOV DX, PORTA IN AL, DX; 接收数据 MOV [SI], AL
MOV DX, PORTCTL MOV AL, 00H
OUT DX, AL; 发送ACK信号 INC SI
LOOP RECEIVE
MOV AH, 4CH; 返回DOS系统 INT 21H CODE ENDS END MAIN
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo0.com 版权所有 湘ICP备2023021991号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务