版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、微机原理与接口实验实验报告第一部分 软件实验实验一、实验二1. 实验目的:熟悉软件环境,能够在Dos系统下编写汇编语言程序和汇编的全过程。2. 实验内容:DOS环境下汇编的快速入门3. 实验步骤:1)进入DOS环境(启动菜单中选择),然后进入最后一个盘中,如D盘: C:D:Enter建议大家的文件都建立在最后一个盘,如D盘,如果建在C:,计算机重启后会被系统自动删除。 2)运行鼠标驱动程序D:mouse 3)编辑汇编源文件:d:Edit xxx.asm 4)编译:d:Tasm xxx.asm 5)链接:D:tlink xxx.obj 6)运行.exe:D:xxx.exe 7)调试:D:TD x
2、xx.exe 4. 实验代码:在屏幕上显示Hello World!Stacksegment stackDw 32 dup(0)Stack endsDatasegmentOBUF DB Hello World! $DataendpCodesegmentAssume ss:stack,ds:data,cs:codeBeginproc farPush dsSub ax,axPush axMov ax,dataMov ds,axMOV DX,OFFSET OBUFMOV AH,9INT 21HRetBegin endpCode endsEnd begin5. 实验结果:屏幕上显示Hello World
3、 !6. 上机试题1)从键盘输入一个2位无符号的16进制数(00HFFH),然后在显示器上同时以二 进制和十进制形式显示出来。例如:Please input N(00H-FFH): 9BN = 9Bh = 10011011B = 155 实验代码:stack segment stack dw32dup(0)stackendsdatasegmentENDLDB0DH,0AH,'$'回车换行IBUF_HEXDB3,0,3 DUP(0)OBUF_BINDB10 DUP('$')OBUF_BCDDB4 DUP('$')STR_IN_HEXDB'P
4、lease input N (00HFFH):$'STR_OUT1DB 'N = $'STR_OUT2DB' = $'dataendscode segmentbegin proc farassume ss:stack, cs:code, ds:datapush dssub ax,axpush ax ;保存psp地址mov ax,datamov ds,axMOV DX,OFFSET STR_IN_HEX ;提示用户输入十六进制数,如9BMOV AH,9INT 21HMOV DX,OFFSET IBUF_HEX;接收输入的十六进制数MOV AH,10INT
5、21HMOV DX,OFFSET ENDL ;回车换行MOV AH,9INT 21HMOV DX,OFFSET STR_OUT1;输出'N = 'MOV AH,9INT 21HMOV SI,OFFSET IBUF_HEX+2MOV CL,IBUF_HEX+1MOV CH,0 PUSH SI;保存字符串的首地址ADDSI,CXMOV BYTE PTR SI,'$' ;在输入的字符串末尾加上结束符POP SIMOV DX,SI;输出输入的十六进制数,如9BHMOV AH,9INT 21HMOV DL,'H'MOV AH,2INT 21HMOV DX,
6、OFFSET STR_OUT2;输出' = 'MOV AH,9INT 21HCALL hex2bin; 调用子函数,将输入的十六进制数转为二进制值PUSH AX;AL压栈,留给指令CALL bcdout使用CALL binout;把AL二进制值按二进制格式输出MOV DX,OFFSET STR_OUT2;输出' = 'MOV AH,9INT 21HPOPAXCALL bcdout;把AL二进制值按十进制格式输出MOV DX,OFFSET ENDLMOV AH,9INT 21H;回车换行retbegin endp;十六进制数->二进制数如:输入:FF处理:A
7、L=FFHhex2binprocMOV CL,IBUF_HEX+1;保存输入字符个数MOV CH,0MOV SI,OFFSET IBUF_HEX+2MOV AX,0hex2bin_AGAIN:MOV DL,16;乘数为16MUL DL乘积保存在AX中MOV BL,SICMP BL,'A'JBhex2bin_SMALLERSUB BL,07Hhex2bin_SMALLER: SUB BL,30H ADD AL,BL INC SI LOOP hex2bin_AGAIN rethex2binendpbinoutproc;二进制数->二进制格式输出MOV BYTE PTR OBU
8、F_BIN+8,'B'MOV DI,OFFSET OBUF_BINMOV AH,0MOV CX,8;设置LOOP循环次数binout_NEXT:MOV DL,0SHL AL,1ADC DL,30H;将每一位转为ASCII码MOV DI,DL;保存转换后的ASCII码INC DILOOPbinout_NEXT;cx值为8,循环8次MOV DX,OFFSET OBUF_BIN;输出处理结果MOV AH,9INT 21Hret;返回调用binoutendpbcdoutproc ;二进制数->十进制数输出MOV DI,OFFSET OBUF_BCD+2MOV AH,0MOV CX
9、,10bcdout_AGAIN:MOV DX,0;无符号数16位扩展为32位DIV CX;余数DX,商AXADD DL,30HMOV DI,DLDEC DIOR AX,AXJNE bcdout_AGAININC DIMOV DX,DIMOV AH,9 INT 21Hretbcdoutendpcodeendsendbegin2) 输入一个十进制的个位数,求出这个数的平方值,显示其十进制结果,要求有如下 提示信息。Please input a number :The result is :例如 please input a number: 8 the result is: 64实验代码:stack
10、segment stack ;定义堆栈段dw 32 dup(0);分配64字节栈空间stackendsdatasegment;定义数据段ENDLDB 0DH,0AH,'$'回车换行IBUFDB2,0,2 DUP(0);定义输入缓冲区STR_IN DB'Please input a number (0-9): $'STR_OUTDB'The result is: $'SQUARE_TABLEDB' 0$ 1$ 4$ 9$16$25$36$49$64$81$'定义平方表dataendscode segment;定义代码段beginpr
11、ocfarassume ss:stck,cs:code,ds:datapush dssub ax,axpush ax;保存psp地址mov ax,datamov ds,axRUNTEST:MOV DX,OFFSET STR_IN;提示用户输入MOV AH,9INT 21HMOV DX,OFFSET IBUF;接收用户输入MOV AH,10INT 21HMOV DX,OFFSET ENDL;回车换行MOV AH,9INT 21HMOV AL,IBUF+2SUB AL,30H;得到实际数值MOV CL,3MUL CLMOV DI,OFFSET SQUARE_TABLE;指向自定义的平方表ADD D
12、I,AXPUSH AXMOV DX,OFFSET STR_OUT MOV AH,9INT 21HPOP AXCMP AX,12 JB NEXTMOV DL,20HMOV AH,2INT 21HNEXT: MOV DX,DIMOV AH,9INT 21HMOV DX,OFFSET ENDL;回车换行MOV AH,9INT 21HJMP RUNTEST;不限次数测试ret;返回调用beginendpcode endsendbegin;程序主函数入口7. Hello.exe实验运行过程中的内存映像图如下:PSP(100HB)堆栈段(40HB)数据段(10HB)代码段(20HB) DS 0b540h
13、SS 0b640h SP 0b680h CS:IP 0B690h 堆栈段 SS = DS + 100H/10H 数据段 DS = SS + 堆栈段长度/10H 代码段 CS = 用户DS + 数据段长度/10H 使用debug可以进行调试 Debug hello.asm -u 0b69:0100 1e push ds 0b69:0102 28c0 sub ax,ax 0b69:0103 50 push ax . . . . 可以看到以上是代码段的初始化工作 -r 查看寄存器的内容 ds=b540 cs=b690 ip=0100. TD也是用于调试的工具,可以单步走,查看内存映像图,是调试程序的
14、重要 方法。8. 实验心得:汇编语言与C语言有着很大区别,汇编语言用助记符表示所执行的操作,代码写起来较C语言复杂很多。而且汇编语言的调试也比较麻烦,没有C语言那样强大的编译软件。 学习汇编语言得不断上机实践,只有通过不断的练习,才能熟悉这门语言。在 不断的练习中也能够发现各种问题,培养解决问题的能力。特别是汇编语言得调试, 的一步一步来,调试不过关对汇编语言得学习会造成很大障碍。 汇编语言的学习对于我理解程序在内存中的执行过程以及一个源文件怎么变成计算可以执行的文件有了很大帮助。我对程序的分段,物理地址以及虚地址也有了更好的理解。第二部分 硬件实验实验三 实验装置的检测1. 实验内容:运行检
15、测程序,进行接口检测,获取PCI设备配置资源。2. 检测程序代码:stack segment dw 32dup(?)stack endscode segmentbegin proc far assume ss:stck,cs:code push ds sub ax,ax push ax Ag: mov dx,0e008h/送端口地址 In al,dx Mov al,0fh Out dx,al Mov ah,0bh Int 21h Cmp al,0 Jz ag Retbegin endpcode ends end begin3. 注意事项: 每台机器所分配的端口地址有所不同,要根据实际情况选通端
16、口, 所以需要查看各自的I/O地址,查看I/O地址方法: D:CHECK 当时做这个实验时,查看本机得到: IOYO:E000-E03F I0Y1:E040-E07F IOY2:E080-E0BF I0Y3:E0C0-E0FF 当我们检查IOYO、I0Y1、IOY2、I0Y3是否能够正常工作时,秩序 选通其中的一个端口,例如在上面的源程序中我选通的端口是0e008h, 就是在检测IOYO的输出是不是正常的。还需要检测IOW 、IOR 、 XD0-XD7主要检测在示波器中是否有负脉冲输出实验四 基本输入输出混合接口1. 实验目的:1)掌握基本输入接口的设计方法。 2)掌握基本输出接口的设计方法。
17、 3)掌握I/O地址译码的方法2. 实验原理:当用74LS244、74LS273组成一个I/O接口电路时,输入端口地址和输出 端口地址可以为同一个地址。为了区别数据时输入还是输出,可以用 IOR 、IOW和IOY3信号共同控制。由IOY3和IOR产生读选通信号, 有IOY3和IOW产生写选通信号。3. 实验内容:要求编制一个循环程序,用74LS244和74LS273设计一个输入输出接口, 将从74LS244的输入数据从74LS273的输出发光二极管上对应显示出来。 改变输入,输出立即跟着改变,按下键盘上的任一键,立即停止输入和 输出。4. 实验电路图:5. 实验代码:stack segment
18、 stack 'stack' dw 32 dup (0)stack endscode segmentbegin proc far assume ss:stack,cs:code push ds sub ax,ax push axAGAIN: MOV DX,0d800H IN AL,DX Mov dx,0d801h Out dx,al Mov ah,0bh Int 21h Cmp al,0 Jz AGAIN Ret Begin endpcode ends end begin6. 实验结果和总结: 改变开关状态,发光二极管会作出相应的亮灭,实验正确。实验过程中,若Y0-Y7所有端口
19、均无选通信号,一般可能是74LS138译码器电源未接好,或不符合译码器使能条件,或是74LS138损坏。若选通信号与Y0、Y1端口不对应,则是C、B、A端输入地址线错接或开路、或短路。C、B、A三端输入地址线应有脉冲信号输出,若全为0或全为1,则不正常。实验五 模数转换器ADC08091. 实验目的:掌握模/数转换的原理及接口设计 掌握8为A/D转换芯片ADC0808/0809的使用方法。 掌握延时、查询和中断数据传送方式。2. 实验原理: 各种型号的ADC芯片都具有数据输出信号,启动A/D转换信号和转换结束信号。首先,计算机启动A/D转换;待转换结束后,ADC送出转换结束信号通知计算机;计算
20、机用输出指令从ADC的数据输出引线读取转换数据。由于ADC0808/0809芯片内部集成了数据锁存三态缓冲器,其数据输出线D7D0可以直接和计算机的数据总线相连,所以ADC0808/0809与微机的接口的设计主要是对模拟通道的选择、转换启动的控制和读转换结果的控制等方面的设计。ADC0808/0809于微机的接口可分为三种方式:延时方式、中断方式、查询方式。本次实验只用到延时方式:启动转换后等待100us(ADC0808/0809转换时间),再读取转换结果。3. 实验内容:用延时的方式分别采集+5V、0V各点的电压数据,并将采集的数据(FFH、 00H)送显示器显示。4. 实验电路图:5. 实
21、验代码:stack segment stack 'stack' dw 32 dup(0)stack endsdata segmentOBUF DB 2 DUP(0),'H','$'data endscode segmentbegin proc far assume ss:stack,cs:code,ds:data push ds sub ax,ax push ax mov ax,data mov ds,axLOP : MOV DX,0e060H/送端口号地址 OUT DX,AL MOV BX,1000H /调整BX的赋值可调整延时时间长短 MOV
22、 CX,0 Call ag IN al,dx Mov ah,0bh ;1号功能调用,检测键盘上有无输入,如果 ;有输入,就中断程序 Int 21h Cmp al,0 Jz LOP RETbegin endpAG proc LOOP $ DEC BX JNZ AG IN AL,DX MOV BX,OFFSET OBUF MOV CL,4 MOV AH,0 SHL AX,CL SHR AL,CL CMP AH,0AH JB SD ADD AH,7SD : ADD AH,30H MOV BX,AH INC BX CMP AL,0AH JB LNADD7 ADD AL,7LNADD7: ADD AL,
23、30H MOV BX,AL MOV DX,OFFSET OBUF MOV AH,9 INT 21H retcode ends end begin6. 实验结果和总结:实验现象:当IN0接高电平时,运行程序,CRT显示FFH,当IN0接低电平时,运行程序,CRT显示00H,实验正确。连ADC0809芯片引脚接线时一定要注意REF-与GND接地,REF+与ACC接电源。Start和ALE引脚要接到一起,实验书上给的图有错误。我们没有发74LS02或非门,可以用74LS32或门加非门代替,实验效果一样。实验中注意等待时间的选取,书中给出CLK时钟输入的最高频率为640KHz,且ADC0809启动转换
24、后延时时间为100us。故等待时间需选择大于100us,可以选择500us左右。实验六 数模转换器DAC08321. 实验目的:掌握A/D转换原理。 熟悉A/D芯片接口设计方法。 掌握DAC0832芯片的使用方法。2. 实验原理:DAC0832是具有20条引线的双列直插式CMOS器件,内部具有两级数据寄存器,可完成8为D/A转换,电流输出。其结构和引脚入下图所示。由于DAC0832内部有输入寄存器和DAC寄存器,所以它不需要外加其他电路便可以与微机的数据总线直接相连。根据DAC0832的5个控制信号的不同连接方式,可知它有三种工作方式:直通工作方式、单缓冲工作方式、双缓冲工作方式。本次实验只用
25、到单缓冲工作方式:令其中一个寄存器工作在直通方式,另一个处于受控锁存状态。3. 实验内容:用DAC0832设计一个D/A转换接口电路,采用单缓冲工作方式,产生锯 齿波(方波和三角波类似故未写出)。4. 实验原理图:5. 实验代码:stack segment stack 'stack' dw 32 dup(0)stack endscode segmentbegin proc far assume ss:stack,cs:code push ds sub ax,ax push ax MOV DX,0D860HAGAIN: OUT DX,AL INC AL PUSH AX MOV A
26、H,0BH INT 21H CMP AL,0 POP AX JZ AGAIN retbegin endpcode ends end begin6. 实验结果和总结: 实验现象:从示波器上观察,可看到相应的波形。 程序每循环一次DAC0832的输入数字量增1.,因此实际上锯齿波的上升是由256个小阶梯构成的,但由于小阶梯很小,所以宏观上看就是线性增长的锯齿波。 可通过循环程序段的机器周期计算出锯齿波的周期。并可根据需要,通过延时的办法来改变锯齿波的周期。当延时时间较短时,可用指令LOOP $来实现:当延时较长时,可以使用一个延时子程序,也可以使用定时器来定时。 程序中的数字量的变化范围是从0-2
27、55,因此得到的锯齿波是满幅的。如果要得到非满幅的锯齿波,可通过计算求得的数字量的初值和终值,然后在程序中通过置初值潘终值的办法即可实现。实验七 PCI 中断实验1. 实验目的:掌握PCI中断的设计方法。 掌握可编程中断控制器8259A的使用方法。2. 实验原理:本实验使用TD-PIT实验装置提供的中断请求信号IRQ(下降沿有效),用KK1的负脉冲作为中断源,在进入中断前、中断过程中和完成中断后分别在屏幕上显示不同的提示字符串。使用实验装置提供的IRQ信号,除了要操作PC的可编程中断控制器8259A外,还需要操作实验装置PCI扩展卡上的与PCI中断有关的寄存器。通过操作上述寄存器,才可以实现中
28、断的初始化和中断清楚等。3. 实验内容:用KK1的负脉冲作为中断源,经过十次中断后结束程序,每次中断都应 在显示器上显示。4. 实验代码:Satck segment stack stack ;注意单引号在DOS环境下可能会是乱码。Dw 32 dup(?)Satck endsData segmentHh db 0dh,0ah,$Ic db interrupt count=,$S db 2 dup($)Obuf db wait int,0dh,0ah,$Data endsCode segmentBegin proc farAssume ss:stck,ds:data,cs:codeCliPush
29、dsSub ax,axPush axMov es,axMov ax, dataMov ds,axMov dx,0e438hMov al,00hOut dx,alMov dx,0e439hMov al,1fhOut dx,alMov dx,0e43ahMov al,3fhOut dx,alMov dx,0e43bhMov al,00hOut dx,alMov ax,offset adc_intMov es:02ch,axMov ax,seg adc_intMov es:02eh,axIn al,021hAnd al,0f7hOut 021h,alMov dx,offset obufMov ah,
30、9Int 21hStiMov cx,0Again:cmp cx,10Jne againIn al,021hOr al,8Out 021h,alRetBegin endpAdc_int proc nearMov dx,offset hhMov ah,9Int 21hMov dx,offset icMov ah,9Int 21hInc cxPush cxCmp cx,10Jb agnAdd cx,07hAgn: add cx,30hMov s0,clPop cxMov dx,offset sMov ah,9Int 21hmov dx,0d01fhin al,dxmov dx,0e43ahmov a
31、l,03fhout dx,almov al,62hout 0a0h,almov al,20hout 20h,aliretAdc_int endpcode endsend begin5. 实验结果和总结:实验现象:按下开关KK1十次后程序结束,退出中断。并且每次按下开关时显示屏上均有显示。PCI的中断初始化的过程包括初始化PCI办卡中断控制寄存器和8259A的中断初始化,前者需要向4个不同端口写入不同的数值。初始化过程一步也不能少,否则得不到正确的实验结果。实验八 8255实验1. 实验目的:熟悉并行接口芯片8255的引脚及其功能。 了解8255的三种工作方式。 掌握8255方式0、方式1的工作
32、原理与编程方法。2. 实验原理:8255芯片的结构端口A、B、C(为8位)都可以被选择作为输入输出,一般将A、B作为输入输出的数据端口,C分为两组,配合A、B使用,作为控制信号或者状态信号。A组和B组控制电路分别控制C的上半部分(PC7-PC4)和下半部分(PC3-PC0)数据总线缓冲器,与系统数据总线(D7-D0)相连读写控制逻辑,包括A0A1(端口选择)、CS(片选信号)、RD(读信号)、WR(写信号)、RESET(复位信号)8255的控制字方式选择控制字和按位复位/置位控制字8255的工作方式方式0:三个端口都可以作为输入输出,输出锁存,输入不能锁存方式1:选通I/O工作方式,PC5-PC3和A一组,PC2-PC0和B一组,PC6和PC7作为输入和输出使用。由D3来决定C的某些位作为控制状态信号。方式2:为方式1的输入和输出
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电磁场与电磁波课件2026-2027学年高二下学期物理人教版选择性必修第二册
- 2026年营养(士)模拟题附参考答案详解【培优】
- 油气长输管道防腐破损修复专用补伤片应用
- 2026年计算机知识每日一练试卷含答案详解【能力提升】
- 老年人狂犬病护理注意事项
- 翟四十肝硬化护理查房现病史
- 牙髓炎的疼痛管理与缓解技巧
- 2026年小学历史与文化知识竞赛通关题库含答案详解【模拟题】
- 2026年甜橙树曹文轩测试题及答案
- 2026年电气防爆测试题及答案
- 安全生产培训学校申请书范文
- 广东省汕头市龙湖实验中学2026届中考押题语文预测卷含解析
- 《HJ 212-2025 污染物自动监测监控系统数据传输技术要求》
- 2025年内蒙古自治区中考物理试题(原卷版)
- DZ/T 0216-2010煤层气资源/储量规范
- 车位包销合同协议模板
- 医务人员职业暴露预防及处理课件
- 专题04 绿色植物的蒸腾作用、光合作用和呼吸作用-5年(2020-2024)中考1年模拟地理真题分类汇编(广东专用)
- GB/T 2684-2025铸造用砂及混合料试验方法
- 集中空调通风系统应急预案
- 黑龙江省中职毕业生对口专业升高职院校招生统一考试英语卷
评论
0/150
提交评论