实验1:8255并行接口实验

实验内容
基础部分
1、编写一个基本输入输出程序,使8255的A口为输入,B口为输出,完成拨动开关到数据灯的数据传输。要求:数据灯的显示随开关动态变化。
拓展部分
在基础实验上增加如下功能:若开关K7~K0均为高电平,则程序退出。
2、当K0为高电平时,数据灯高4位亮;当K0为低电平时,数据灯低4位亮。
3、当K1K0=00时,数据灯全部熄灭;当K1K0=01时,数据灯低4位亮;当K1K0=10时,数据灯高4位亮;当K1K0=11时,数据灯全亮。

代码
1

;Select chip-select IOY0
A8255 EQU 0600H
B8255 EQU 0602H
C8255 EQU 0604H
CON8255 EQU 0606H

CODE SEGMENT
	ASSUME CS:CODE
START:	
	MOV DX,CON8255
	MOV AL,90H    ;A--IN,B--OUT
	OUT DX,AL
	
MAIN:
	MOV DX,A8255  ;Read from port A
	IN AL,DX
	MOV DX,B8255  ;Send to port B
	OUT DX,AL	
	JMP MAIN	
	
CODE ENDS
	END START	

2

;Select chip-select IOY0
A8255 EQU 0600H
B8255 EQU 0602H
C8255 EQU 0604H
CON8255 EQU 0606H

CODE SEGMENT
	ASSUME CS:CODE
START:	
	MOV DX,CON8255
	MOV AL,90H    ;A--IN;B--OUT
	OUT DX,AL
	
MAIN:
	MOV DX,A8255  
	IN AL,DX      ;Read A
	CMP AL,0FFH   ;Judge whether all of the bits are high
	JZ EXIT       ;If so,just quit; 
	AND AL,01H    ;Let other bits 0 except K0
	CMP AL,1H
	JNZ X1
	MOV AL,0F0H   ;If input is 1,let high 4 bits light up
	JMP OUTPUT
X1:
	MOV AL,0FH    ;or let low 4 bits light up
OUTPUT:
	MOV DX,B8255
	OUT DX,AL			
	JMP MAIN	
	
EXIT:             ;quit
	MOV AH,4CH
	INT 21H
	
CODE ENDS
	END START	

3

A8255 EQU 0600H
B8255 EQU 0602H
C8255 EQU 0604H
CON8255 EQU 0606H

CODE SEGMENT
	ASSUME CS:CODE
START:	
	MOV DX,CON8255
	MOV AL,90H    ;A--IN,B--OUT
	OUT DX,AL
	
MAIN:
	MOV DX,A8255
	IN AL,DX
	CMP AL,0FFH
	JZ EXIT   
	AND AL,03H  ;let other bits 0 except K0,K1
	CMP AL,0H
	JNZ X1
	MOV AL,00H
	JMP OUTPUT
X1:
	CMP AL,1H
	JNZ X2
	MOV AL,0FH
	JMP OUTPUT
X2:
	CMP AL,2H
	JNZ X3
	MOV AL,0F0H
	JMP OUTPUT
X3:
	MOV AL,0FFH
OUTPUT:
	MOV DX,B8255
	OUT DX,AL			
	JMP MAIN	
	
EXIT:
	MOV AH,4CH
	INT 21H
	
CODE ENDS
	END START	
  • 14
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这里是一个简单的 8086 汇编语言程序,用于控制 8255 并行接口进行实验: ``` ;8255并行接口实验 ;端口地址定义 port_a equ 0a000h ;8255的端口A port_b equ 0a001h ;8255的端口B port_c equ 0a002h ;8255的端口C control_word equ 0a003h ;8255的控制字 ;数据段定义 data segment msg1 db '8255并行接口实验', '$' msg2 db '输入0-255之间的数,按回车键结束', '$' msg3 db '输出数据为:$' num db 0 temp db 0 data ends ;代码段定义 code segment start: ;初始化控制字 mov al, 82h ;将控制字的值放入AL寄存器 out control_word, al ;输出控制字到控制字端口 ;显示欢迎信息 mov ah, 09h ;设置功能号为09h,显示字符串 lea dx, msg1 ;将msg1的首地址放入DX寄存器 int 21h ;调用DOS中断21h,显示msg1 ;显示输入提示信息 mov ah, 09h ;设置功能号为09h,显示字符串 lea dx, msg2 ;将msg2的首地址放入DX寄存器 int 21h ;调用DOS中断21h,显示msg2 ;读取用户输入的数字 mov ah, 01h ;设置功能号为01h,等待用户输入 int 21h ;调用DOS中断21h,等待用户输入 sub al, 30h ;将输入的字符转换为数字 mov temp, al ;将转换后的数字存入temp变量 mov ah, 02h ;设置功能号为02h,显示字符 mov dl, al ;将输入的数字存入DL寄存器 int 21h ;调用DOS中断21h,显示输入的数字 ;读取用户输入的数字 mov ah, 01h ;设置功能号为01h,等待用户输入 int 21h ;调用DOS中断21h,等待用户输入 sub al, 30h ;将输入的字符转换为数字 mov num, al ;将转换后的数字存入num变量 mov ah, 02h ;设置功能号为02h,显示字符 mov dl, al ;将输入的数字存入DL寄存器 int 21h ;调用DOS中断21h,显示输入的数字 ;将输入的数字存入端口A mov al, temp ;将temp变量中的数值放入AL寄存器 out port_a, al ;将AL寄存器中的数值输出到端口A ;将输入的数字存入端口B mov al, num ;将num变量中的数值放入AL寄存器 out port_b, al ;将AL寄存器中的数值输出到端口B ;从端口C读取数据并显示 in al, port_c ;从端口C读取数据 mov ah, 09h ;设置功能号为09h,显示字符串 lea dx, msg3 ;将msg3的首地址放入DX寄存器 int 21h ;调用DOS中断21h,显示msg3 mov dl, al ;将读取的数据存入DL寄存器 add dl, 30h ;将数字转换为字符 mov ah, 02h ;设置功能号为02h,显示字符 int 21h ;调用DOS中断21h,显示读取的数据 ;程序结束 mov ah, 4ch ;设置功能号为4ch,程序结束 int 21h ;调用DOS中断21h code ends end start ``` 这个程序首先初始化了 8255 并行接口的控制字,然后显示欢迎信息和输入提示信息,并等待用户输入两个数字。接着,程序将输入的数字存入 8255 的端口 A 和端口 B,然后从端口 C 读取数据并显示出来。最后,程序结束。 需要注意的是,这个程序只是一个简单的示例,仅用于演示如何使用 8255 并行接口。实际的应用场景可能更加复杂,需要根据具体情况进行修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值