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

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

  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的基本知识。 数据传送指的是将数据从一个地方传送到另一个地方。在微型计算机中,数据传送分为两种类型:内部数据传送和外部数据传送。 内部数据传送是指数据在微处理器内部传送,例如从寄存器到寄存器或从寄存器到内存。外部数据传送是指数据在微处理器和外部设备(如输入/输出设备、存储器等)之间传送。 在微型计算机实验1中,您需要了解以下内容: 1. 内部数据传送的指令和操作码 2. 外部数据传送的指令和操作码 3. 内存地址的编码方法 4. 数据传送的实现方法 在数据传送实验中,您需要编写程序来实现将数据从一个位置传送到另一个位置。此外,您还需要使用微型计算机实验箱中的设备(如键盘、显示器等)来进行输入输出。 下面是一个简单的数据传送实验示例代码: ``` ORG 100H ;程序起始地址 MOV AX, 1234H ;将数据1234H存放到AX寄存器中 MOV BX, AX ;将AX寄存器中的数据传送到BX寄存器中 MOV CX, 5678H ;将数据5678H存放到CX寄存器中 MOV [1000H], CX ;将CX寄存器中的数据传送到内存地址1000H中 MOV DX, [2000H] ;将内存地址2000H中的数据传送到DX寄存器中 HLT ;程序结束 ``` 在上面的示例代码中,我们使用了MOV指令来实现数据传送。MOV指令用于将数据从一个位置传送到另一个位置。在这个例子中,我们将数据存放到寄存器和内存中,并将数据从内存中传送到寄存器中。 在编写完代码后,您需要使用微型计算机实验箱来进行编译和运行。在运行程序时,您需要在键盘上输入数据,并在显示器上查看输出结果。 希望这些信息对您有所帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值