课程名称 微机原理与接口技术 实验班级 B13电子班 实验名称 I/O地址译码
学生姓名 学生学号 一、实验目的
掌握I/O地址译码电路的工作原理。 二、实验内容
实验电路如图1-1所示,图中线路两端有节点的信号线需要用户用实验导线连接起来,其中74LS74为D 触发器,可直接使用实验台上部系统板上的D 触发器。74LS138为地址译码器。译码输出端Y0-Y7在实验台中间系统板上引出,每个输出端包含8个地址,即:
Y0:280H~287H ; Y4:2A0H~2A7H; Y1:288H~28FH; Y 5:2A8H~2AFH; Y2:290H~297H; Y 6:2B0H~2B7H; Y3:298H~29FH; Y 7:2B8H~2BFH;
图1-1 I/O地址译码电路图 例如:执行下面两条程序 MOV DX, 2AOH OUT DX, AL
Y4输出一个负脉冲,执行下面两条指令 MOV DX,2A8H
OUT DX,AL Y5输出一个负脉冲。 计算出的地址=查找出的PCI 卡的基址+偏移量
三、源程序
ioport equ 0ef00h-0280h ;强制定义inport 表示0ef00h-0280h outport1 equ ioport+2a0h ;同上(执行结果编译时产生) outport2 equ ioport+2a8h ;同上
code segment ;定义code 段
assume cs:code ;让code 段成为代码段, start: ;代码段开始, 根据end 表示入口地址
mov dx,outport1 ;将outport1给dx(outport1的值就是上面equ 强制定 out dx,al ;将al 的值输出到dx 指向的端口, 必须用dx 做端口) call delay ;调延时子程序 mov dx,outport2 ;同上 out dx,al ;同上
call delay ;调延时子程序 mov ah,1 ;ah=1
int 16h ;16h软中断(功能调用)
je start ;循环, 测试z 标志位=0则跳否则不跳 mov ah,4ch ;ah=4ch int 21h ;功能号调用
delay proc near ;延时子程序
mov bx,2000 ;这段子程序不需要解释, 无太大作用, 实现靠指令执行 lll: mov cx,0 ll: loop ll dec bx jne lll ret
delay endp
code ends ;code段结束
end start ;代码结束start 为程序入口点
四、实验结果分析
通过本次实验上机,我了解和掌握了I/O地址译码电路的工作原理,熟练了汇编代码的编写、连接电路、通过代码控制电路,更了解到上机是检验学生理论知识和动手能力的很好的方式。