微机实验5
微机实验报告

微机实验报告第⼀次实验1.写出完成下列功能的指令序列(1)传送20H到AL寄存器MOV AL , 20H(2)将(AL)*2 MOV AL , 02H MUL AL (3)传送25H到BL寄存器MOV BL , 25H (4)(AL)*BL MUL BL问最后结果(AX)=?AX=0940H2.分别写出完成下列指令要求的指令(1)将BX的低4位清零AND BX , F0H(2)将AX的⾼4位置1 OR AX , F0H(3)将DX的低4位取反;XOR DX , 0FH(4)将CX的中间⼋位清零AND CX , 0FF0H(5)将AX中与BX中的对应位不相同的位均置1 XOR AX , BX3.上机运⾏下⾯指令序列,分析运⾏后(AX)=?mov cl , 8sar ax ,cldec axmov cx ,8mul cxax=210.9h4. 4.设DS=当前段地址,BX=0300H,SI=0002H,请⽤DEBUG的命令将存储器偏移地址300-304H连续单元装⼊0AH0BH0CH0DH0EH。
在DEBUG状态下送⼊下⾯的程序,并⽤单步执⾏的⽅法,分析每条指令原源地址的形成过程?当数据传送完毕时,AX中的内容是什么?8.编程:求两个数的平均值。
这两个数分别放在X单元和Y单元中,⽽平均值放在Z单元中。
即Z=(X+Y)/2 data segmentx db 2y db 6z db ?data endscode segmentassume cs:code, ds;datastart:mov ax, datamov ds,axmov al, xmov ah,0add al,ymov bl,2div blint 21hcode endsend start9.输⼊下⾯源程序,并对程序进⾏会变,连接,调式并说明程序的功能。
data segment number dw 0168hdata endscode segmentassume cs;code, ds: dataorg 0100hstart:mov ax, datamov ds, axmov dx,0mov bx, 0001hmov di, 8000hmov si, 0mov ax, numbermov cx, 16next;test ax, bxjz continueor dx, diinc sicontinue:ror di, 1mov ah,4chint 21hcode endsend start1.编写程序: 求1+2+3+…..+100的和data segment number db 01hdata endscode segmentassume cs:code , ds:datastart:mov ax , datamov ds , axmov ax , datamov bx , numbermov ax , 0mov cx , 64hnext:add ax ,bxinc bxloop nextmov ah , 4chint 21hcode endsend start2.在内存中tab为⾸的地⽅存有1-9的平⽅值,从键盘输⼊⼀个数(1-9),将该数存⼊X单元,⽴⽅值存⼊XXX单元中data segmenttab db 0,1,4,9,16,25,36,49,64,81x db 10dup(?)xxx db 10dup(?)data endscode segmentassume cs:code ,ds: datastart:mov ax ,datamov ds , ax mov ax , datamov cx ,09hnext:mov ah , 1int 21hand ah ,0fhmov bx ,ahmov si , offset tabmov sp , offset xmov di , offset xxxmov dx , byte ptr[bx+si]mov al, blmul dxmov [bx+di] ,axmov [sp+bx] , bxmov ah , 4chint 21hcode endsend start第⼆次实验顺序程序设计从键盘输⼊两个1位⼗进制数,求这两个数的和,并将结果显⽰在屏幕上data segment infor1 db 'please input the first data (<10):$'infor2 db 0ah,0dh,'please input the second data (<10):$'infor3 db 0ah,0dh,'the result is:$'data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov dx,offset infor1mov ah,9int 21hmov ah,1int 21hand al,0fhmov ah,00000000000000000000mov bl,almov dx,offset infor2int 21hmov ah,1int 21hand ax,000fhadd al,blaaaor ax,3030hpush axmov dx,offset infor3 mov ah,9int 21hpop axmov dl,ahpush axmov ah,2int 21hpop axmov dl,almov ah,2int 21hmov ah,4chint 21hcode endsend startresult db 0ah,0dh,'cube result is :$' data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov dx,offset numbermov ah,9int 21hmov ah,1int 21hand ax,000fhmov bx,axmul blmul blmov cl,64hdiv clor al,30hpush axmov dx,offset resultmov ah,9int 21hpop axmov dl,alpush axmov ah,2int 21hpop axmov cl,0ahmov al,ahmov ah,0div clor ax,3030hpush axmov ah,2int 21hpop axmov dl,ahmov ah,2int 21hmov ah,4chint 21hcode endsend start分⽀程序设计1.某程序可从键盘接收命令(0-5),分别专项6个⼦程序,⼦程序⼊⼝地址分别为p0-p5,编制程序,⽤跳转表实现分⽀结构程序设计,记录实验结果data segmentmessage db 'please input key (0-5):$'crmessage db 0ah,0dh,'$'errormessage db 'you hit error key !',0ah,0dhdb 'please try again(0-5):$'message0 db 'you hit the key 0',0ah,0dh,'$'message1 db 'you hit the key 1',0ah,0dh,'$'message2 db 'you hit the key 2',0ah,0dh,'$'message3 db 'you hit the key 3',0ah,0dh,'$'message4 db 'you hit the key 4',0ah,0dh,'$'message5 db 'you hit the key 5',0ah,0dh,'$'code segmentassume cs:code,ds:data start:mov ax,datamov ds,axmov ah,9lea dx,messageint 21htryagain:mov ah,1int 21hmov bl,almov ah,9mov dx,offset crmessage int 21hcmp bl,'0'jz key0cmp bl,'1'jz key1cmp bl,'2'jz key2cmp bl,'3'jz key3cmp bl,'4'jz key4cmp bl,'5'jz key5error:mov ah,9mov dx,offset errormessage int 21hjmp tryagainkey0:lea dx,message0mov ah,9int 21hjmp exitkey1:lea dx,message1 mov ah,9int 21hjmp exitkey2:lea dx,message2 mov ah,9int 21hjmp exitkey3:lea dx,message3 mov ah,9int 21hjmp exitkey4:lea dx,message4 mov ah,9int 21hjmp exitkey5:lea dx,message5 mov ah,9int 21hexit:mov ah,4chint 21hcode endsend start第三次实验循环程序设计1.从⾃然数1开始累加,直到累加和⼤于1000为⽌,统计被累加的⾃然数的个数,并把统计的个数送⼊N单元,把累加和送⼊SUM单元。
微机原理及接口技术实验

微机原理及接口技术实验一、实验目的本实验旨在通过学习微机原理和接口技术,了解和掌握微机系统的基本原理和接口技术的应用,培养学生对微机系统的认识和实践操作能力。
二、实验内容1. 微型计算机系统设计与搭建2. 微机输入输出接口技术应用实验3. 微机总线技术应用实验4. 微机存储器技术应用实验5. 微型计算机中断和DMA技术应用实验三、实验原理1. 微型计算机系统设计与搭建微型计算机主要由中央处理器、存储器、输入输出设备和总线组成。
本实验通过选择适当的芯片、电路连接和控制程序设计,实现一个基本的微型计算机系统。
2. 微机输入输出接口技术应用实验输入输出是微型计算机的重要组成部分,通过实验学习各种输入输出接口的原理和使用方法,并进行实际应用。
3. 微机总线技术应用实验总线是微型计算机各个部件之间传送数据和控制信息的公共通信路径。
通过实验学习总线的分类、结构和时序要求,掌握总线的实际应用。
4. 微机存储器技术应用实验存储器是微型计算机中存储数据和程序的重要设备。
通过实验学习不同类型存储器的原理和应用,掌握存储器的选择和使用。
5. 微型计算机中断和DMA技术应用实验中断和直接存储器访问(DMA)是微型计算机连接外部设备的重要技术。
通过实验学习中断和DMA的工作原理,掌握中断和DMA的应用方法。
四、实验步骤1. 根据实验要求,设计并搭建微型计算机系统;2. 连接输入输出设备,并编写控制程序;3. 进行输入输出接口技术应用实验,如串行通信、并行通信等;4. 进行总线技术应用实验,如总线传输数据测试等;5. 进行存储器技术应用实验,如读写存储器数据等;6. 进行中断和DMA技术应用实验,如中断服务程序编写等;7. 完成相关实验报告并进行总结。
五、实验设备和材料1. 微型计算机实验箱、电源适配器;2. 8051单片机、存储器芯片、输入输出芯片,如74HC164等;3. LED数码管、LCD液晶显示器、键盘、计算器等输入输出设备;4. 可编程芯片编程器、逻辑分析仪等实验设备。
微机原理实验---并行接口实验

微机原理实验---并行接口实验
并行接口(Parallel Port)是一种广泛使用的计算机外围设备接口。
它通常用于连接打印机、扫描仪、摄像头等设备,以实现数据的传输和控制。
本实验旨在教授学生使用并行接口实现数据输入和输出的基本功能,以提高学生对计算机外围设备的理解和应用能力。
具体实验步骤如下:
材料及设备:
1. 一台计算机
2. 并行数据线(Parallel Data Cable)
3. 并口测试器(Parallel Port Tester)
4. 8位开关(8-bit Switch)
5. LED 灯(LED Light)
实验步骤:
1. 将并行数据线连接至计算机的并行接口,并将另一端连接至并口测试器。
2. 使用并口测试器测试并行接口是否正常。
若测试失败,可检查并行接口是否损坏或驱动程序是否正确安装。
3. 将 8 位开关连接至并口测试器的数据输出端,连接正确后,将 8 位开关的位置设置为 0。
4. 运行实验程序,将数据从计算机输出至并口测试器。
5. 将 LED 灯连接至并口测试器的数据输入端,将计算机输入的数据传输至 LED 灯并输出。
微机原理实验-外部中断实验

下面是赠送的几篇网络励志文章需要的便宜可以好好阅读下,不需要的朋友可以下载后编辑删除!!谢谢!!出路出路,走出去才有路“出路出路,走出去才有路。
”这是我妈常说的一句话,每当我面临困难及有畏难情绪的时候,我妈就用这句话来鼓励我。
一定有很多人想说:“这还在北京混个什么劲儿啊!”但他每天都乐呵呵的,就算把快递送错了也乐呵呵的。
某天,他突然递给我一堆其他公司的快递单跟我说:“我开了家快递公司,你看得上我就用我家的吧。
”我有点惊愕,有一种“哎呦喂,张老板好,今天还能三蹦子顺我吗”的感慨。
之后我却很少见他来,我以为是他孩子出生了休假去了。
再然后,我就只能见到单子见不到他了。
某天,我问起他们公司的快递员,小伙子说老板去上海了,在上海开了家新公司。
我很杞人忧天地问他:“那上海的市场不激烈吗?新快递怎么驻足啊!”小伙子嘿嘿一笑说:“我们老板肯定有办法呗!他都过去好几个月了,据说干得很不错呢!”“那老婆孩子呢?孩子不是刚生还很小吗?”“过去了,一起去上海了!”那个瞬间,我回头看了一眼办公室里坐着的各种愁眉苦脸的同事,并且举起手机黑屏幕照了一下我自己的脸,一股“人生已经如此的艰难,有些事情就不要拆穿”的气息冉冉升起。
并不是说都跳槽出去开公司才厉害,在公司瞪着眼睛看屏幕就是没发展,我是想说,只有勇气才能让自己作出改变。
《拒绝平庸》里有一句话:很多时候我们为什么嫉妒别人的成功?正是因为知道做成一件事不容易又不愿意去做,然后又对自己的懒惰和无能产生愤怒,只能靠嫉妒和诋毁来平衡。
其实走出去不一定非要走到什么地方去,而是更强调改变自己不满意的现状。
有人问我那你常说要坚持,天天跑出去怎么坚持?其实要坚持的是一种信仰,而不是一个地方,如果你觉得一个地方让你活得特别难受,工作得特别憋屈,除了吐槽和压抑没别的想法,那就要考虑走出去。
就像歌词里说的:“梦想失败了,那就换一个梦想。
”不能说外面都是大好前程,但肯定你会认识新的人,有新的机会,甚至改头换面重新做人。
实训5-组装微型计算机实训报告

实训5-组装微型计算机实训报告
项目背景
本实训是为了让学生了解并掌握如何组装微型计算机,并对计算机的硬件进行安装和配置。
实训过程
1. 材料准备
- CPU
- 主板
- 内存
- 硬盘
- 显卡
- 显示器
- 键盘和鼠标
- 电源
- 机箱
2. 组装计算机
- 将主板安装到机箱上,并连接各个接口
- 安装CPU,注意插槽的对应
- 插入内存条,确保正确安装并插入到对应插槽
- 安装硬盘,并连接数据线和电源线
- 安装显卡,注意插槽的对应
- 连接显示器、键盘和鼠标
- 连接电源线,确保电源连接到主板和其他设备上- 关闭机箱,并固定螺丝
3. 软件配置
- 启动计算机,并进入BIOS界面
- 根据提示,设置启动顺序为首先从光盘或U盘启动- 安装操作系统,按照提示完成安装过程
- 安装驱动程序,确保各个硬件都能正常工作
- 安装其他常用软件和工具
4. 测试和验证
- 启动计算机,检查各个硬件是否正常工作
- 进行性能测试,如CPU和内存的负载测试
- 确认计算机可以正常运行和使用
总结
通过本实训,我们学习了如何组装微型计算机,了解了计算机各个硬件的安装和配置过程。
这对于我们进一步理解计算机的内部结构和操作系统的安装有很大帮助。
同时,我们掌握了解决硬件故障和安装驱动程序的能力,提高了对计算机的维护和操作能力。
微机实验5七段数码管显示实验

微机实验5七段数码管显示实验一、实验目的1、掌握七段LED数码管的结构及工作原理。
2、掌握共阴极LED数码管连接方法、及其静态和动态显示方法。
3、进一步掌握并行接口芯片8255A的使用方法。
二、实验设备微型计算机、单片机仿真器、实验仪;实验连线(若干)。
三、实验原理如图4.9-1所示,LED数码管由7个发光二极管组成,此外,还有一个圆点型发光二极管(在图中以dp表示),用于显示小数点。
通过七段发光二极管亮暗的不同组合,可以显示多种数字、字母以及其它符号。
LED数码管中的发光二极管共有两种连接方法:共阴极接法图4.9-1共阳极接法1)共阴极接法:把发光二极管的阴极连在一起构成公共阴极。
使用时公共阴极接地,这样阳极端输入高电平的段发光二极管就导通点亮,而输入低电平的则不点亮。
实验中使用的LED显示器为共阴极接法2)共阳极接法:把发光二极管的阳极连在一起构成公共阳极。
使用时公共阳极接+5V。
这样阴极端输入低电平的段发光二极管就导通点亮,而输入高电平的则不点亮。
为了显示数字或符号,要为LED显示器提供代码,因为这些代码是为显示字形的,因此称之为字形代码。
七段发光二极管,再加上一个小数点位,共计八段。
因此提供给LED显示器的字形代码正好一个字节。
若a、b、c、d、e、f、g、dp8个显示段依次对应一个字节的低位到高位,即D0、D1、D2、D3、D4、D5、D6、D7,则用共阴极LED数码管显示十六进制数时所需的字形代码如表4.9-1所示。
表4.9-1共阴极LED数码管字形代码四、实验内容动态显示:按图18连接好电路,将8255的A口分别与七段数码管a~g相连,S1接位码驱动,S0接8255C口的PC1,PC0。
编程在两位七段数码管上动态显示00~99,若键盘有键按下则返回DOS。
五、程序代码tackegmenttack'tack'dw32dup(0)tackenddataegmentio8255aequ288hio8255cequ28ahleddb3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh;段码buffer1db0,0;存放要显示的十位和个位bzdw;位码dataendcodeegmentaumec:code,d:datatart:mova某,datamovd,a某movd某,28bh;将8255设为A口输出moval,80houtd某,almovdi,offetbuffer1;设di为显示缓冲区loop1:movc某,0300h;循环次数loop2:movbh,02lll:movbyteptrbz,bhpuhdidecdiadddi,bzmovbl,[di];bl为要显示的数popdimovbh,0movi,offetledaddi,b某moval,byteptr[i]movd某,io8255coutd某,almoval,byteptrbzmovd某,io8255coutd某,alpuhc某movc某,100delay:loopdelaypopc某moval,00houtd某,almovbh,byteptrbzhrbh,1jnzllllooploop2mova某,wordptr[di]cmpah,09jnzetcmpal,09jnzetmova某,0000mov[di],almov[di+1],ahjmploop1et:movah,01int16h jnee某itmova某,wordptr[di]incalaaa;置led数码表偏移地址为SI;求出对应的led数码;自8255A的口输出;使相应的数码管亮;延时;循环延时;有键按下则转e某itmov[di],al;al为十位mov[di+1],ah;ah中为个位jmploop1 e某it:movd某,io8255amoval,0;关掉数码管显示outd某,almovah,4ch;返回int21hcodeendendtart六、实验总结通过本次试验,我基本上掌握了数码管显示的程序流程,学会编写一些程序调用相应的相应的子程序,显示所需内容,了解了动态扫描显示的程序执行过程,结合定时器的设置和中断的返回,来实现最基本的百分秒显示,从而完成时钟显示,由此,结合前面所学的知识,巩固了数码管显示的知识,增强了我的程序调试能力,为下一步的学习打下了坚实基础。
实验5 金属相图的绘制

五、数据处理
1、将实验数据记录于表5-1中。
表5-1实验数据记录表
时间/min
0
1
2
3
4
…
温度/℃
样品1
样品2
样品3
样品4
样品5
样品6
2、在同一直角坐标系中以T对t分别绘出每个样品的步冷曲线。
3、由步冷曲线找出每个样品的转折温度和平台温度,填到表5-2中。
石蜡油;
铅(化学纯)
四、实验步骤
1、配制样品。
用感量为0.1g的天平配制含Sn质量分数分别为0、0.20、0.40、0.60、0.80、1.00的Pb-Sn混合物各100g,分别装入编号为1~6的硬质试管中,再加入少许石蜡油(约5mL),以防止加热过程中金属被空气氧化。
2、设置仪器。
打开电源,预热2min,按照以下参数设置仪器:
a b
图5-1简单低共熔系统步冷曲线(a)及其固-液相图(b)
(1)体系均匀冷却过程中,若无相变发生,则温度随时间均匀的降低。(2)若有相变发生,由于相变过程中会产生相变热,使得温度随时间的下降速度将减慢,步冷曲线就出现转折。当熔液继续冷却到熔液的组成达到最低共熔混合物的组成时,开始有最低共熔混合物析出,在最低共熔混合物完全凝固以前,体系温度保持不变,步冷曲线出现平台。当熔液完全凝固后,体系又无相变发生,温度随时间又均匀的下降。
由此可知,对组成一定的二组分低共熔混合物体系,可以根据步冷曲线,判断有固体析出时的转折温度和最低共熔混合物析出时的平台温度。如果作出一系列组成不同的体系的步冷曲线,从中找出各转折点即能画出二组分体系最简单的T-x相图。
三、仪器试剂
微机原理及接口技术实验指导书

微机原理及接口技术实验指导书书写实验名称时请按下表内容填写:实验一、熟悉实验运行环境实验一、实验目的1、熟悉汇编语言程序的调试环境2、掌握部分DEBUG命令二、实验内容编写一个汇编语言程序,计算1+2+3+…+99+100,并将结果存入SUM字单元。
通过调试程序熟悉汇编语言的上机操作过程及部分命令。
三、上机操作过程1、建立ASM文件(编辑源程序)使用编辑程序EDIT在磁盘上建立源程序EX.ASM例如:D:\MASM>EDIT EX.ASM用MASM程序产生OBJ文件源文件建立后,就要用汇编程序对源文件汇编,汇编后产生二进制的目标文件(OBJ文件)例如:D:\MASM>MASM EX3 、用LINK程序产生EXE文件汇编程序已产生出二进制的目标文件(OBJ),但OBJ文件并不是可执行文件,还必须使用连接程序(LINK)把目标文件转换为可执行的EXE文件例如:D:\MASM>LINK EX4、调试运行在建立了EXE文件后,就可以直接从DOS执行程序。
如果用户程序有错误或者没有直接将结果在终端上显示出来,程序执行完之后无法看见正确的结果。
那么怎么知道程序执行的结果是正确的呢?此外,大部分程序必须经过调试阶段才能纠正程序执行中的错误,得到正确的结果。
这里就要使用调试程序。
例如:D:\MASM>DEBUG EX.EXE①R命令显示或修改寄存器中的内容例如:_R BXBX 0369:059E不作修改,直接回车;否则键入修改内容,并回车②U命令反汇编a、_U[地址] 从指定地址开始,反汇编32个字节。
如果地址省略,则从上一个U命令的最后一条指令的下一个单元开始显示32个字节b、_U[范围] 对指定范围的内存单元进行反汇编例如:_U 04BA:0100 0108③T命令单步执行命令(一次执行一条指令)例如:从代码段的0000H处开始单步执行_R IPIP XXXX: 0000_T④G命令执行命令(执行多条指令)_G 地址1 地址2表示从地址1开始执行指令到地址2结束例如:从代码段的0000H处开始连续执行指令,知道0013H处_R IPIP XXXX: 0000_G 0013⑤D命令显示内存单元的内容a、_D 地址b、_D 范围例如:显示数据段中0000H开始的若干个字节单元的内容_D DS:0000例如:显示数据段中0000H到0010H各字节单元的内容_D DS:0000 0010⑥E命令修改存储单元的内容例如:修改数据段0002H字节单元的内容为0FFH_E DS:0002XXXX:0002 XX FF⑦Q命令退出DEBUG程序实验二、分支程序设计一、实验目的1、掌握分支程序的结构形式2、掌握分支程序的设计方法 二、实验内容1、计算分段函数,X 为8位带符号数2、算法分析先将X 的范围确定在-10≤x ≤20之内,除此之外结果全为0,然后计算X+5,再根据结果的符号求绝对值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
东南大学《微机实验及课程设计》实验报告实验五 8253 计数器/定时器姓名:孟广婵学号: 22010203专业:测控技术与仪器实验室:计算机硬件技术实验时间: 2012年05月17日报告时间: 2012年05月18日评定成绩:审阅教师:一. 实验目的1)掌握计数器/定时器 8253 的基本工作原理和编程应用方法;2)了解掌握 8253 的计数器/定时器典型应用方法二. 实验内容必做:5-1 将计数器0设置为方式0,计数初值为N(小于等于0FH),用手动的方式逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化。
(参考程序p63)5-2 将计数器0、1分别设置在方式3,计数初值设为1000,用逻辑笔观察OUT0电平的变化。
(参考程序p64)选做:5-3 在实验2的基础上,利用输出的1Hz的方波接入计数器2,设置计数器2初值为4,根据键盘输入的数字(0~5)来设置计数器2的工作方式,并将GATE2信号进行相应的连接(接+5V或接单脉冲)用逻辑笔观察OUT2电平的变化。
要求可以响应键盘的连续变化,直到按ESC键退出。
5-4 在实验2的基础上,将8253计数器1的工作方式改为方式0,输出OUT1接入8255的PA0,PC0连接任意一个发光二级管,8255A的CS接288H。
编程使得发光二极管亮5秒,灭2秒,一直循环直到按任意键退出。
(提示:PA0查询OUT1输出电平,PC0输出开关量控制二极管发光)三.实验原理与接线5-1 参考图 3.6-1 虚线连接电路,将计数器 0 设置为方式 0,计数器初值为 N(N≤0FH) ,用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察 OUT0 电平变化(当输入 N+1 个脉冲后OUT0 变高电平)8253的CS接280H8253的GATE0接+5V8253的CLK0接单脉冲1或28253的OUT0接逻辑笔(高电平LED12亮,低电平LED13亮)5-2 按图 3.6-2连接电路,将计数器 0、计数器 1 分别设置为方式3,计数初值设为 1000,用逻辑笔观察OUT1 输出电平的变化(频率1Hz)8253的CS接280H8253的GATE0和GATE1接+5V8253的CLK0接1MHz8253的OUT0接CLK18253的OUT1接逻辑笔编辑提示:1、8253定时器0地址 280h8253定时器1地址 281h8253定时器2地址 282h8253控制口地址 283h2、实验参考程序中的口地址和代号是随意的,看程序的时候要注意。
四.实验源程序(主要部分)和流程图源程序:5-1 将计数器0设置为方式0,计数初值为N(小于等于0FH),用手动的方式逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化。
(参考程序p63)ioport equ 0b800H-0280H ;tpc卡中设备的io地址io8253a equ ioport+283H ; 8253控制寄存器地址io8253b equ ioport+280H ;计数器0地址stacks segment stackdb 100 dup (?)stacks endscode segmentassume cs:code,ss:stacksmain proc farstart: mov ax,stacksmov ss,axmov al,10h ;设置8253通道0为工作方式0,二进制计数mov dx,io8253aout dx,almov dx,io8253b ;送计数初值为0FHmov al,0fhout dx,alZZZ: in al,dx ;读计数初值call disp ;调显示子程序push dxmov ah,06hmov dl,0ffhint 21hpop dxjz ZZZmov ah,4ch ;退出int 21hmain endpdisp proc near ;显示子程序push dxand al,0fh ;首先取低四位mov dl,alcmp dl,9 ;判断是否<=9jle num ;若是则为'0'-'9',ASCII码加30Hadd dl,7 ;否则为'A'-'F',ASCII码加37Hnum: add dl,30hmov ah,02h ;显示int 21hmov dl,0dh ;加回车符int 21hmov dl,0ah ;加换行符int 21hpop dxret ;子程序返回disp endpcode endsend start5-2 将计数器0、1分别设置在方式3,计数初值设为1000,用逻辑笔观察OUT0电平的变化。
(参考程序p64)ioport equ 0b800h-0280h ;tpc卡中设备的io地址io8253a equ ioport+280h ;计数器0地址io8253b equ ioport+281h ;计数器1地址io8253c equ ioport+283h ; 8253控制寄存器地址stacks segment stackdb 100 dup (?)stacks endscode segmentassume cs:code,ss:stacksmain proc farstart: mov ax,stacksmov ss,axmov dx,io8253c ;向8253写控制字mov al,36h ;使0通道为工作方式3out dx,almov ax,1000 ;写入循环计数初值1000mov dx,io8253aout dx,al ;先写入低字节mov al,ahout dx,al ;后写入高字节mov dx,io8253cmov al,76h ;设8253通道1工作方式2out dx,almov ax,1000 ;写入循环计数初值1000mov dx,io8253bout dx,al ;先写低字节mov al,ahout dx,al ;后写高字节mov ah,4ch ;程序退出int 21hmain endpcode endsend start选做:6-3 静态显示:用逻辑电平开关预置某个数字(0~9)的ASCII码,将该数据用8255的C口读入,并用A口输出,并在数码管显示出来;如果预置的ASCII码不是数字(0~9),数码管显示E字母。
ioport equ 0d400h-0280h ;tpc卡中设备的io地址io8255a equ ioport+288h ;8255A口地址io8255b equ ioport+28bh ;8255控制寄存器端口地址io8255c equ ioport+28ah ;8255C口地址stacks segment stackdb 100 dup (?)stacks endscode segmentassume cs:code,ss:stacksstart: mov ax,stacksmov ss,axmov dx,io8255b ;设8255为C口输入,A口输出mov al,8bhout dx,alinout: mov dx,io8255c ;从C口输入一数据 in al,dxmov dx,io8255a ;从A口输出刚才自C口out dx,al ;所输入的数据mov dl,0ffh ;判断是否有按键mov ah,06hint 21hjz inout ;若无,则继续自C口输入,A口输出 mov ah,4ch ;否则返回DOSint 21hmain endpcode endsend start5-3 在实验2的基础上,利用输出的1Hz的方波接入计数器2,设置计数器2初值为4,根据键盘输入的数字(0~5)来设置计数器2的工作方式,并将GATE2信号进行相应的连接(接+5V或接单脉冲)用逻辑笔观察OUT2电平的变化。
要求可以响应键盘的连续变化,直到按ESC键退出。
ioport equ 0b800h-0280h ;tpc卡中设备的io地址io8253a equ ioport+280h ;计数器0地址io8253b equ ioport+281h ;计数器1地址io8253d equ ioport+282h ;计数器2地址io8253c equ ioport+283h ; 8253控制寄存器地址data segmentstring db 90h,92h,94h,96h,98h,9ahdata endsstacks segment stackdb 100 dup (?)stacks endscode segmentassume cs:code,ds:data,ss:stacksstart: mov ax,stacksmov ss,axmov ax,datamov ds,axmov dx,io8253c ;向8253写控制字mov al,36h ;使0通道为工作方式3out dx,almov ax,400 ;写入循环计数初值1000 mov dx,io8253aout dx,al ;先写入低字节mov al,ahout dx,al ;后写入高字节mov dx,io8253cmov al,76h ;设8253通道1工作方式2 out dx,almov ax,400 ;写入循环计数初值400mov dx,io8253bout dx,al ;先写低字节mov al,ahout dx,al ;后写高字节mov dx,io8253cmov al,96hout dx,almov ax,04mov dx,io8253dout dx,alzz: mov ah,1int 21hsub al,30hmov dx,io8253cmov si,offset stringmov ah,0add si,axmov al,byte ptr [si]out dx,almov ax,04mov dx,io8253dout dx,aljmp zzmov ah,4chint 21hmain endpcode endsend start流程图:五. 实验结果以及遇到的问题和解决办法实验六的目的主要是通过实验对芯片8253的工作机理有了更加清楚地认识,对其实现中断控制有了一定的了解。
必做和选作一共四个实验,感觉是相通的,逐步递进,参考书本上面的程序,进行编程接线,完成了前三个实验。
过程中也出现了一些小问题,例如方式不能良好转换等问题,但是通过与同学的讨论,在同学与老师的帮助下,最终仍是完成了试验任务。
本次实验了解计算机内部芯片工作机理,为整个硬件架构体系的了解奠定了一定的基础。