阅读所需知识点
- 引脚名头上有一杠代表低电平有效
- CLK有个三角标代表上升沿工作
“简单并行输入”实验代码详细注解
start:
mov dx,2a0h ;将立即数送入dx寄存器,立即数由这条代码提供
in al,dx ;in为输入(CPU)指令,将地址为[dx]的设备内容输入到al寄存器中
mov dl,al ;将al寄存器内容保存到dl寄存器中
mov ah,02 ;;ah为21h中断模块入口,2为字符显示模块
int 21h ;执行21h中断2号模块,在屏幕中显示输入的字符,dl为显示字符入口
mov dl,0dh ;0dh代表回车符ASCII码
int 21h ;在屏幕中显示出回车符
mov dl,0ah ;0ah代表换行符ASCII码
int 21h ;在屏幕中显示出换行符
mov ah,1 ;设置功能模块
int 16h ;1号功能用来查询键盘缓冲区,对键盘扫描但不等待,并设置ZF标志。若有按键操作(即键盘缓冲区不空),则ZF=0,AL中存放的是输入的ASCII码,AH中存放输入字符的扩展码。若无键按下,则标志位ZF=1
je start ;无限循环以上代码直到有键按下
exit:
mov ah, 4ch
int 21h
“in al,dx”指令时序分析
-
T1时刻:A0~A19、BHE、ALE、M/IO信号有效,此时地址锁存器将地址信号锁存到地址总线上
-
T2时刻:ALE信号无效,地址锁存器不工作,但地址信号一直有效;D0-D15、DEN信号开始有效,DT/R为低电平,数据收发器准备读取数据工作
-
T3时刻:检测到IO端口的READY信号为高电平,开始从数据总线上接收数据(图中将右边B0-B7数据锁存到左边)
-
T4时刻:DEN信号失效,数据接收工作结束
“简单并行输出”实验电路图
实验工作原理:
- T1时刻,地址总线有02a0h(0000001010100000)电平信号,译码器中Y4会生效,但此时IOW和IOR为高电平,都无效,U2:A输出0,U1输出1,译码器不工作,Y4输出高电平,74LS32输出高电平(02a0h与Y4相连);
- T2时刻,IOR生效,U2:A输出1,U1输出0,译码器工作,Y4输出低电平,74LS32输出低电平,此时8缓冲器74LS244工作,将开关信息K0-K7锁存到右边;
- T3时刻,开关数据送入数据总线,被数据收发器接收保存到al寄存器中;
- T4时刻IOR失效,译码器不工作,Y4输出高电平,74LS32输出高电平,74LS244停止向数据总线传输数据。