汇编(外部设备与输入输出)

计算机人机交互需要暂时中断当前程序,处理交互信息再继续执行
一般直接用dos的int 21h功能或bios功能控制,不许io指令
外部设备通过IO接口部件与cpu相连,io接口部件应有三种寄存器,数据,状态和控制寄存器,把这些寄存器称为端口(port)
用端口地址识别端口,80x86微机中端口与存储器地址完全分开, 独立编址
端口号为00h~ffh时直接用in/out写入读出,端口号大于ffh时,即超出8位二进制时,需用dx寄存器间接寻址

i/o的数据传送控制方式
无条件传送:外设的数据传送可以随时进行不需要cpu查询外设的状态后再决定时,可以直接用in、out指令实现传输,外设必须处于准备就绪的状态,否则会传输失败


扬声器:61h端口d1位和定时器2的out引脚作为一个与门的2个输入端,与门的输出端经放大器连接扬声器。有两种方法使扬声器发声,即与门的2个输入端其中一个作为控制端,设置为1(高电平),让另一个输入端交替出现1和0,可以使扬声器发声。如让61h端口的d1位按合适的频率交替出现1和0,可以使扬声器发声

code segment
assume cs:code
sound proc far
f=9999h
time=9999h
start:
push ds
mov ax,0
push ax
mov cx,f     //延时初值,控制脉冲宽度
mov dx,time       //音长初值,控制脉冲个数
in al,61h      //读入61h
and al,11111100b             //保持高6位不变
trig:
xor al,2                 //d1位取反
out 61h,al              //d1位交替出现1和0,送61h端口
mov cx,f                //延时初值
delay:
loop delay               //延时控制,加大脉冲宽度
dec dx                     //脉冲计数
jne trig                     //控制音长
ret
sound endp
code ends
end start
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值