东南大学微机原理实验报告三、四

《微机实验及课程设计》实验报告 学号 080121

东南大学

《微机实验及课程设计》

实验报告

实验三 I/O与存储器 实验四(一)简单输入输出 实验四(二)中断

姓 名: 学 号: 080121 专 业: 自动化 实 验 室: 计算机硬件技术 实验时间:20xx年04月15日 报告时间: 20xx年04月20日

评定成绩: 审阅教师:

《微机实验及课程设计》实验报告 学号 080121

一. 实验目的与内容

实验三

实验目的:

1)了解掌握TPC实验系统的基本原理和组成结构,学会测试检查TPC-PCI总线转接卡地址;

2)正确掌握I/O地址译码电路的工作原理,学会动态调试程序DEBUG/TD的直接I/O操作方法;

3)学会利用I/O指令单步调试检查硬件接口功能,学会利用示波器检测I/O指令执行时总线情况;

4)进一步熟悉8086/8088及PC机的分段存储特性,了解存储器扩展原理,完成编程及测试。

实验内容:

1)观察了解TPC-2003A实验系统的基本原理和组成结构,测试基本单元电路功能,熟悉各部分辅助电路的使用;

2)通过Win/XP控制台硬件信息或测试程序检查TPC-PCI总线转接卡地址,并记录;

3)按图3.3-5的I/O地址译码测试参考电路连线,分析电路原理,分别利用动态调试程序直接I/O操作功能和单步功能测试;

4)编程利用片选负脉冲控制指示灯(如L7)闪烁发光(亮、灭、亮、灭、??),时间间隔通过软件延时实现;

5)修改延时参数,使亮(约1秒)与灭的时间间隔分别为1秒、5秒和8秒,记录延时程序对应参数BX,CX。

实验四(一)

实验目的:

1)进一步掌握TPC实验装置的基本原理和组成结构;

2)掌握利用I/O指令单步调试检查硬件接口功能,学会利用示波器检测I/O指令执行时总线情况;

3)掌握简单并行输入输出接口的工作原理及使用方法,进一步熟悉掌握输入输出单元的功能和使用。

实验内容:

1

《微机实验及课程设计》实验报告 学号 080121

1)按图3.4-1简单并行输出接口参考电路图连接线路(74LS273 插通用插座,74LS32用实验台上的“或门”)。74LS273为八D触发器,8个D输入端分别接数据总线D0~D7,8个Q输出端接LED显示电路L0~L7;

2)编程从键盘输入一个字符或数字,将其ASCⅡ码通过这个输出接口输出,根据8个发光二极管发光情况验证正确性;

3)按图3.4-2简单并行输入接口参考电路图连接电路(74LS244插通用插座,74LS32用实验台上的“或门”)。74LS244为八缓冲器,8个数据输入端分别接逻辑电平开关输出K0~K7,8个数据输出端分别接数据总线D0~D7;

4)用逻辑电平开关K0~K7预置一字母的ASCⅡ码,编程输入这个ASCⅡ码,并将其对应字母在屏幕上显示出来。(标准ASCII码的范围为20H~FFH);

实验四(二)

实验目的:

1)掌握PC机中断处理系统的基本原理;

2)学会编写中断服务程序;

实验内容:

实验电路如图所示,直接用手动单脉冲作为中断请求信号(只需连一根导线),要求没按一次开关产生一次中断,在屏幕上显示一次“TPC pci card Interrupt”,中断8次后退出程序。

二. 基本实验原理

实验三

(一)基本原理

译码输出端Y0~Y7在实验台上“I/O地址”输出端引出,每个输出端包含8个地址: Y0:280H~287H,Y1:288H~28FH,?? 当CPU执行I/ O指令且地址在280H~2BFH范围内,译码器选中,必有一根译码线输出负脉冲。利用译码器输出负脉冲,利用这个负脉冲控制L7闪烁发光(亮、灭、亮、灭、??),时间间隔通过软件延时实现。

(二)实验接线图

2

《微机实验及课程设计》实验报告 学号 080121

(三)流程图

实验四(一)

东南大学微机原理实验报告三四

东南大学微机原理实验报告三四

3

《微机实验及课程设计》实验报告 学号 080121

(一) 实验接线图

(二)流程图

实验四(二)

(一) 基本原理

PC机用户可使用的硬件中断只有可屏蔽中断,由8259

东南大学微机原理实验报告三四

东南大学微机原理实验报告三四

中断控制管理器。中断控制器 4

《微机实验及课程设计》实验报告 学号 080121

用于接收外部中断请求信号,经过优先级别判断等处理后向CPU发出可屏蔽中断请求。IBMPC、PC/XT机内有一片8259中断控制器对外可提供8个中断源:

中断源 中断类型号 中断功能

IRQ0 08H 时钟

IRQ1 09H 键盘

IRQ2 0AH 保留

IRQ3 0BH 串行口2

IRQ4 0CH 串行口1

IRQ5 0DH 硬盘

IRQ6 0EH 软盘

IRQ7 0FH 并型打印机

三. 方案实现与测试

实验三

(一)查看并替换TPC扩展卡I/O和存储基地址

1)参照实验指导书安装接口卡及其驱动程序;

2)启动微机并打开“控制面板”-〉“系统”-〉“设备管理器”,找到“微机原理教学实验系统”;打开“TPC”,点击“资源”看到占用的存储和中断资源,找到两个输入/输出范围,其中一个范围大小是0ffH的是PCI接口芯片上的设置寄存器组占用的I/O地址空间,另一个范围大小是7fH的是TPC设备的I/O地址;

东南大学微机原理实验报告三四

5

《微机实验及课程设计》实验报告 学号 080121

3) 用记录下的实际基址值替换每个汇编程序头中的定义行中的值,并重新编译链接 代码为:

Ioport equ 0EC00h-0280h

outport1 equ ioport+2a0h

outport2 equ ioport+2a8h

(二)I/0译码测试实验电路

1)将试验箱安装好,并按原理图搭接译码电路。

2) 执行下面两条指令:

MOV DX, 0EC20H

OUT DX, AL

Y4输出一个负脉冲,灯亮

执行下面两条指令:

MOV DX, 0EC28H

东南大学微机原理实验报告三四

OUT DX, AL

6

《微机实验及课程设计》实验报告 学号 080121

Y5输出一个负脉冲,灯灭

3)动态调试程序DEBUG/TD的直接I/O操作方法(OUTPUT):

1.命令行方式比较简单,启动debug,在命令符-后键入-o EC20 20回车,其中20H为输出量,EC20H为端口地址。执行完第一句灯亮,执行第二句灯灭

2.TD模式下,启动TD,将光标置于代码区右击可得到代码区的局部菜单,选中I/O选项将出现菜单,选择Out byte,在编辑菜单中输入要输出的地址以及输出内容,格式为:输出地址,内容。例如要使译码电路Y5输出一个负脉冲,可键入相应内容如下图所示:

东南大学微机原理实验报告三四

东南大学微机原理实验报告三四

7

《微机实验及课程设计》实验报告 学号 080121

3.通过让Y4,Y5交替输出负脉冲,观察L7的亮灭变化,总结I/O地址译码电路原理,尝试编写程序利用这个负脉冲控制L7闪烁发光,时间间隔通过软件延时实现。

程序主要算法:

利用delay子程序进行延时操作,控制LED的亮灭。

delay proc near

mov bx,2000

K1: mov cx, 0

K2: Loop K2

Dec bx

jne K1

ret

delay endp

实验四(一)

(一) 动态调试程序DEBUG/TD的直接I/O操作方法(Input)(按图3.4-2接线)。

1.TD模式下,启动TD(全屏模式),将光标置于代码区右击后可得到代码区局部菜单,选中I/O选项将出现菜单:

2.选择in byte,在编辑菜单中输入所要读入数据的地址,确认后即可得到该地址的数据的内容,要读74ls244的当前输出端的数据,可在编辑菜单中输入: 0C800-280+2A0H 如下图所示

东南大学微机原理实验报告三四

8

《微机实验及课程设计》实验报告 学号 080121

3.确认后即可得到74Ls244输入端的数据

(二)实验电路中并行输出接口的地址为2A8H,并行输入接口的地址为2A0H,通过上述并行接口电路输出数据需要三条指令:

MOV AL,数据字节

MOV DX,0C428 ;C400-280H+2A8H

OUT DX,AL

通过上述并行接口输入数据需要2条指令:

MOV DX,0C420 ;C400-280H+2A0H

IN AL, DX

(三)编写程序让其显示开关电平所输入的ASCII码对应的数据值

编写程序如下:

ioport equ 0EC00h-0280h tpc卡中设备的io地址 ls244

equ ioport+2a0h ;译码地址Y4片选ls244

stacks segment stack

db 100 dup (?)

stacks ends

code segment

assume cs:code,ss:stacks

东南大学微机原理实验报告三四

main proc far

9

《微机实验及课程设计》实验报告 学号 080121

start:

movax,stacks

movss,ax

mov dx,ls244 ;从2A0输入一个数据 in al,dx

movdl,al ;将所读数据保存在DL中 mov ah,02

int 21h

mov dl,0dh ;显示回车符

int 21h

mov dl,0ah ;显示换行符

int 21h

mov ah,06 ;是否有键按下

mov dl,0ffh

int 21h

jnz exit

je start ;若无,则转start

exit:

mov ah,4ch ;返回DOS

int 21h

main endp

code ends

end start

东南大学微机原理实验报告三四

10

《微机实验及课程设计》实验报告 学号 080121

实验四(二 )

实验现象:

实验源程序:

;386以上微机适用

;纯dos下才能使用

;tasm4.1或以上编译

;*********************;

;* 中断 *;

;*********************;

data segment

int_vect EQU 071H ;中断0-7的向量为:08h-0fh,中断8-15的向量为:70h-77h irq_mask_2_7 equ 011111011b

2位为零

irq_mask_9_15 equ 011111101b ;中断0-7时全一,中断8-15时从低至高相应位为零 ioport_cent equ 0d800h ;tpc 卡中9054芯片的io地址

csreg dw ?

ipreg dw ? ;旧中断向量保存空间

irq_times dw 00h ;中断计数

东南大学微机原理实验报告三四

msg1 db 0dh,0ah,'TPC pci card Interrupt',0dh,0ah,'$'

11 ;中断掩码,中断0-7时从低至高相应位为零,中断8-15时第

《微机实验及课程设计》实验报告 学号 080121

msg2 db 0dh,0ah,'Press any key to exit!',0dh,0ah,'$'

msg3 db 0dh,0ah,'Press DMC to interrupt 10 times and exit!',0dh,0ah,'$' data ends

stacks segment

db 100 dup (?)

stacks ends

code segment

assume cs:code,ds:data,ss:stacks,es:data

start:

;Enable Local Interrupt Input

.386

cli

mov ax,data

mov ds,ax

mov es,ax

mov ax,stacks

mov ss,ax

mov dx,ioport_cent+68h ;设置 tpc 卡中9054芯片io口,使能中断

in ax,dx

or ax,0900h

out dx,ax

mov al,int_vect ;保存原中断向量

mov ah,35h

int 21h

12 mov ax,es mov csreg,ax mov ipreg,bx

《微机实验及课程设计》实验报告 学号 080121

mov ax,cs ;设置新中断向量

mov ds,ax mov dx,offset int_proc mov al,int_vect mov ah,25h

int 21h

in al, 21h ;设置中断掩码 and al, irq_mask_2_7

out 21h, al

in al, 0a1h

and al, irq_mask_9_15

out 0a1h, al

mov ax,data

mov ds,ax

mov dx,offset msg2

mov ah,09h int 21h

mov dx,offset msg3

loop1:

cmp irq_times,0

jz exit

mov ah,09h int 21h mov irq_times,0ah sti ;等待中断并判断中断10次后退出 mov ah,1 int 16h 13

《微机实验及课程设计》实验报告 学号 080121

jnz exit

jmp loop1

exit: cli ;按任意键退出

mov bl, irq_mask_2_7 ;恢复中断掩码 not bl

in al, 21h

or al, bl

out 21h, al

mov bl, irq_mask_9_15

not bl

in al, 0a1h

or al, bl

out 0a1h, al

mov dx,ipreg ;

mov ax,csreg

mov ds,ax

mov ah,25h

mov al,int_vect

int 21h

mov dx,ioport_cent+68h ;

in ax,dx

and ax,0f7ffh

out dx,ax

mov ax,4c00h

int 21h

恢复原中断向量 设置 tpc 卡中9054芯片io口,关闭中断

14

《微机实验及课程设计》实验报告 学号 080121

int_proc proc far

cli

push ax

push dx

push ds

dec irq_times

mov ax,data ;Interrupt to do

mov ds,ax

mov al,20h ;Send EOI

out 0a0h,al

out 20h,al

pop ds

pop dx

pop ax

sti

iret

int_proc endp

code ends

end start mov dx,offset msg1 mov ah,09h int 21h

四.提高与创新研究

实验三:

(1)如果用只访问一个I/O 地址(而不是二个I/O 地址)的方法来实现发光二极管闪烁发光,电路应怎样连接?画出电路图。(提示:将D 触发器连接成1 位的计数器)。编写相应的程序使发光二极管闪烁发光,并上机验证。

答:电路修改:将D触发器的Q非段与D端相连接,CD端接+5V。

程序:

15

《微机实验及课程设计》实验报告 学号 080121

Ioport equ 0ec00h-0280h tpc卡中设备的io地址

outport1 equ ioport+2a0h 译码输出端地址Y4

stacks segment stack

db 100 dup (?)

stacks ends

code segment

cs: code, ss: stacks

main proc far

start:

mov ax, stacks

mov ss, ax

mov dx,outport1

out dx, al

call delay 调延时子程序

mov ah,1

int 16h

je start

mov ah,4ch

int 21h

main endp

delay proc near 延时子程序

mov bx,2000

ZZZ:

mov cx,0

ZZ:

loop ZZ

dec bx

jne ZZZ

ret

delay endp

code ends

end start

实验四(一):

(1)利用基本实验(1)中输出锁存电路将L0~L7制成流水灯,流水方向由键盘控制,可随时切换,流水间隔时间也由键盘控制

设计思路:选择两个按键如“1”“2”分别控制流水灯的方向,至于控制流水间隔,我的想法是通过按一次键灯移位一次,这样由两个键控制了流水灯的方向和间隔,具体程序在之前的输出地程序中进行改动

编写程序:

ioport equ 0b800h-0280h tpc卡中设备的io地址ls273

equ ioport+2a8h ;译码输出端地址Y5片选ls273

stacks segment stack

db 100 dup (?)

stacks ends

16

《微机实验及课程设计》实验报告 学号 080121

code segment

assume cs: code, ss: stacks

main proc far

start:

mov ax, stacks

mov ss, ax

mov ah,2 ;回车符

mov dl,0dh

int 21h

mov ah,1 ;等待键盘输入 int 21h

cmp al,27 ;判断是否为ESC键

je exit ;若是则退出

mov dx,ls273 ;若不是,从2A8H输出其ASCII码

out dx, al

jmp start ;转start

exit:

mov ah,4ch ;返回DOS

int 21h

main endp

code ends

end start

五.分析与总结

实验三:

通过本实验,我们进一步掌握和了解I/O地址译码电路的工作原理,通过对I/O口的输出进行控制,从而使得D触发器的状态改变,小灯开始闪烁。。

总之,这次实验做得比较顺利,也很有收获,对于课本上讲授的I/O地址译码电路的工作原理有了更加深刻的认识和比较直观的感受。

实验四(一):

本次实验熟悉了并行输入输出电路,学会了用TD和DEBUG对I/O进行直接操作的方法,也通过编程实现实验要求加深了对于I/O操作的理解。

通过这部分的实践操作,我进一步掌握了TPC实验装置的基本原理和组成结构, 熟悉测试检查TPC-PCI总线转接卡地址、I/O地址译码电路的工作原理、动态调试程序直接I/O操作方法;掌握利用I/O指令单步调试检查硬件接口功能,学会利用示波器检测I/O指令执行时总线情况;掌握简单并行输入输出接口的工作原理及使用方法, 进一步熟悉掌握输入输出单元的功能和使用,同时也熟悉了对于软件的编写以及配合硬件的使用。

实验四(二):

本次实验是对中断有了本质的了解,知道如何运用硬件中断和软件中断,基本掌握了如何编写中断服务程序以及调用过程。

17

相关推荐