微机原理:查询式数据传送(输入输出)实验

查询式输入输出实验
一、实验目的

  1. 掌握I/O数据传送的基本原理;
  2. 熟悉查询式数据输入输出的基本原理和接口电路设计方法。
  3. 掌握查询式数据传送的程序设计方法。

二、实验内容

1.查询式数据输出实验
利用查询方式,将buffer单元开始的10个字节数,逐个输出到43AH 端口,并保证外设正确接收。设状态端口为43BH,D0位为0时表示数据输出缓冲区为空。

2.查询式数据输入实验
利用查询方式,从端口43AH获取来自外设的数据,并以十六进制方式显示,其状态端口43BH的D1为数据缓冲区状态标志,D1=1表示输入缓冲区满。

三、实验保障

PC 微机、汇编程序调试工具软件
春软微机原理虚拟实验系统之“查询输出装置”和“查询输入装置”单元电路

四﹑实验原理
查询式输出的接口电路如图4-10-1。在输出设备空闲时,cpu执行输出指令,将数据送入锁存器,同时将触发器置1,通知输出设备接收数据。当输出设备取得数据后,便发出ACK信号,使"BUSY"信号为0,作为程序状态查询信号,允许再次输出数据。
在这里插入图片描述

图4-10-1 查询式输出接口电路
查询式输入的接口电路如图4-10-2。输入设备发送数据的同时发出STB选通信号,置ready信号表示输入缓冲区满,程序查询到该信号后,即可将数据读入,读入数据的同时清除ready信号,输入设备即可再准备下一个数据输入。

图4-10-2 查询式输入接口电路

五、实验步骤

1.查询式数据输出实验步骤

(1)运行“春软微机原理虚拟实验系统”,打开“查询输出装置”单元电路。如图4-10-3。

图4-10-3 查询式输出装置接口电路
(2)编写查询式输出汇编语言程序。
(3)编辑汇编语言程序,然后进行汇编、链接。
(4)打开电源开关,运行程序,观察输出设备接收的数据是否正确。

2.查询式数据输入实验步骤

(1)打开“查询输入装置”单元电路。如图4-10-4。

图4-10-4 查询式输入装置接口电路

(2)编写查询式输入汇编语言程序。
(3)编辑汇编语言程序,然后进行汇编、链接。
(4)打开电源开关,运行程序,观察屏幕上显示的数据是否与输入设备发送的数据相同。

六、参考例程

(1)例程框图如图4-10-5。	 

图4-10-5 查询式输出例程框图
(2)查询式数据输出例程

data segment
buffer db 1,2,3,4,5,6,7,8,9,10
data ends
code segment
assume cs:code,ds:data
go: mov ax,data
mov ds,ax
lea si,buffer
mov cx,10
l1: mov dx,43bH
in al,dx ; 读状态端口
test al,00000001b
jnz l1
mov al,[si]
mov dx,43ah
out dx,al ; 数据输出
inc si
loop l1
mov ah,4ch
int 21h
code ends
end go

(3)查询式数据输入例程	 

data segment
buffer db ?,?," " ; 显 示 缓 冲 区 p o r t d a t a e q u 43 a H p o r t s t a t u s e q u 43 b H s d b " P r e s s a n y k e y t o e x i t . . . " , 0 d h , 0 a h , " " ;显示缓冲区 port_data equ 43aH port_status equ 43bH s db " Press any key to exit...",0dh,0ah," ";portdataequ43aHportstatusequ43bHsdb"Pressanykeytoexit...",0dh,0ah,""
data ends
code segment
assume cs:code,ds:data
go: mov ax,data
mov ds,ax
mov dx,offset s ;显示提示
mov ah,9
int 21h
mov cx,10
L1: mov ah,0bh
int 21h ;检测有无按键
cmp al,0FFh
jz Exit
MOV DX,port_status
IN AL,DX ; 读状态端口
TEST AL,00000010B
JZ L1
MOV DX,port_data
IN AL,DX ; 读取数据
mov si,offset buffer
mov ah,al
and al,0fh ; 低4位
cmp al,10
jnc L2 ; 不小于10
add al,48 ; A~F转ASCII码
jmp L3
L2: add al,55 ; 0~9转ASCII码
L3: mov [si+1],al
mov al,ah
mov cl,4
shr al,cl
and al,0fh ; 高4位
cmp al,10 ; 小于10
jnc L4
add al,48
jmp L5
L4: add al,55
L5: mov [si],al
mov dx,offset buffer ;显示数据
mov ah,9
int 21h
jmp L1
exit: mov ah,4ch
int 21h
code ends
end go

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值