ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:121.48KB ,
资源ID:12731550      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12731550.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(微机原理与接口实验报告.docx)为本站会员(b****0)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

微机原理与接口实验报告.docx

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

2、 7)调试:D:TD xxx.exe 4. 实验代码:在屏幕上显示Hello World!Stack segment stackDw 32 dup(0)Stack endsData segmentOBUF DB Hello World! $Data endpCode segmentAssume ss:stack,ds:data,cs:codeBegin proc farPush dsSub ax,axPush axMov ax,dataMov ds,axMOV DX,OFFSET OBUFMOV AH,9INT 21HRetBegin endpCode endsEnd begin5. 实验结果

3、:屏幕上显示Hello World !6. 上机试题1)从键盘输入一个2位无符号的16进制数(00HFFH),然后在显示器上同时以二 进制和十进制形式显示出来。例如: Please input N(00H-FFH): 9B N = 9Bh = 10011011B = 155 实验代码:stack segment stack dw 32 dup(0)stack endsdata segmentENDL DB 0DH,0AH,$ ;回车换行IBUF_HEX DB 3,0,3 DUP(0)OBUF_BIN DB 10 DUP($)OBUF_BCD DB 4 DUP($)STR_IN_HEX DB P

4、lease input N (00HFFH):$STR_OUT1 DB N = $STR_OUT2 DB = $data endscode segmentbegin proc far assume ss:stack, cs:code, ds:data push ds sub ax,ax push ax ;保存psp地址 mov ax,data mov ds,ax MOV DX,OFFSET STR_IN_HEX ;提示用户输入十六进制数,如9B MOV AH,9 INT 21H MOV DX,OFFSET IBUF_HEX ;接收输入的十六进制数 MOV AH,10 INT 21H MOV D

5、X,OFFSET ENDL ;回车换行 MOV AH,9 INT 21H MOV DX,OFFSET STR_OUT1 ;输出N = MOV AH,9 INT 21H MOV SI,OFFSET IBUF_HEX+2 MOV CL,IBUF_HEX+1 MOV CH,0 PUSH SI ;保存字符串的首地址 ADD SI,CX MOV BYTE PTR SI,$ ;在输入的字符串末尾加上结束符 POP SI MOV DX,SI ;输出输入的十六进制数,如9BH MOV AH,9 INT 21H MOV DL,H MOV AH,2 INT 21H MOV DX,OFFSET STR_OUT2 ;

6、输出 = MOV AH,9 INT 21H CALL hex2bin; 调用子函数,将输入的十六进制数转为二进制值 PUSH AX ;AL压栈,留给指令CALL bcdout使用 CALL binout ;把AL二进制值按二进制格式输出 MOV DX,OFFSET STR_OUT2 ;输出 = MOV AH,9 INT 21H POP AX CALL bcdout ;把AL二进制值按十进制格式输出 MOV DX,OFFSET ENDL MOV AH,9 INT 21H ;回车换行 retbegin endp;十六进制数-二进制数 如: 输入:FF 处理:AL=FFHhex2bin proc M

7、OV CL,IBUF_HEX+1 ;保存输入字符个数 MOV CH,0 MOV SI,OFFSET IBUF_HEX+2 MOV AX,0hex2bin_AGAIN: MOV DL,16 ;乘数为16 MUL DL 乘积保存在AX中 MOV BL,SI CMP BL,A JB hex2bin_SMALLER SUB BL,07Hhex2bin_SMALLER: SUB BL,30H ADD AL,BL INC SI LOOP hex2bin_AGAIN rethex2bin endp binout proc ;二进制数 -二进制格式输出 MOV BYTE PTR OBUF_BIN+8,B MO

8、V DI,OFFSET OBUF_BIN MOV AH,0 MOV CX,8 ;设置LOOP循环次数binout_NEXT: MOV DL,0 SHL AL,1 ADC DL,30H ;将每一位转为ASCII码 MOV DI,DL ;保存转换后的ASCII码 INC DI LOOP binout_NEXT ;cx值为8,循环8次 MOV DX,OFFSET OBUF_BIN ;输出处理结果 MOV AH,9 INT 21H ret ;返回调用binout endp bcdout proc ;二进制数 -十进制数输出 MOV DI,OFFSET OBUF_BCD+2 MOV AH,0 MOV C

9、X,10bcdout_AGAIN: MOV DX,0 ;无符号数16位扩展为32位 DIV CX ;余数DX,商AX ADD DL,30H MOV DI,DL DEC DI OR AX,AX JNE bcdout_AGAIN INC DI MOV DX,DI MOV AH,9 INT 21H retbcdout endpcode endsend begin 2) 输入一个十进制的个位数,求出这个数的平方值,显示其十进制结果,要求有如下 提示信息。Please input a number :The result is :例如 please input a number: 8 the resul

10、t is: 64实验代码:stack segment stack ;定义堆栈段 dw 32 dup(0) ;分配64字节栈空间stack endsdata segment ;定义数据段ENDL DB 0DH,0AH,$ ;回车换行IBUF DB 2,0,2 DUP(0) ;定义输入缓冲区STR_IN DB Please input a number (0-9): $STR_OUT DB The result is: $SQUARE_TABLE DB 0$ 1$ 4$ 9$16$25$36$49$64$81$ ;定义平方表data ends code segment ;定义代码段begin pr

11、oc far assume ss:stck,cs:code,ds:data push ds sub ax,ax push ax ;保存psp地址 mov ax,data mov ds,ax RUNTEST: MOV DX,OFFSET STR_IN ;提示用户输入 MOV AH,9 INT 21H MOV DX,OFFSET IBUF ;接收用户输入 MOV AH,10 INT 21H MOV DX,OFFSET ENDL ;回车换行 MOV AH,9 INT 21H MOV AL,IBUF+2 SUB AL,30H ;得到实际数值 MOV CL,3 MUL CL MOV DI,OFFSET

12、SQUARE_TABLE ;指向自定义的平方表 ADD DI,AX PUSH AX MOV DX,OFFSET STR_OUT MOV AH,9 INT 21H POP AX CMP AX,12 JB NEXT MOV DL,20H MOV AH,2 INT 21HNEXT: MOV DX,DI MOV AH,9 INT 21H MOV DX,OFFSET ENDL ;回车换行 MOV AH,9 INT 21H JMP RUNTEST ;不限次数测试 ret ;返回调用begin endpcode endsend begin ;程序主函数入口7. Hello.exe实验运行过程中的内存映像图如

13、下:PSP(100HB)堆栈段(40HB)数据段(10HB)代码段(20HB) DS 0b540h 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

14、 cs=b690 ip=0100. TD也是用于调试的工具,可以单步走,查看内存映像图,是调试程序的重要 方法。8. 实验心得:汇编语言与C语言有着很大区别,汇编语言用助记符表示所执行的操作,代码写起来较C语言复杂很多。而且汇编语言的调试也比较麻烦,没有C语言那样强大的编译软件。 学习汇编语言得不断上机实践,只有通过不断的练习,才能熟悉这门语言。在 不断的练习中也能够发现各种问题,培养解决问题的能力。特别是汇编语言得调试, 的一步一步来,调试不过关对汇编语言得学习会造成很大障碍。 汇编语言的学习对于我理解程序在内存中的执行过程以及一个源文件怎么变成计算可以执行的文件有了很大帮助。我对程序的分段

15、,物理地址以及虚地址也有了更好的理解。第二部分 硬件实验实验三 实验装置的检测1. 实验内容:运行检测程序,进行接口检测,获取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

16、ends end begin3. 注意事项: 每台机器所分配的端口地址有所不同,要根据实际情况选通端口, 所以需要查看各自的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主要检测在示波器中是否有负脉冲输出实验四 基

17、本输入输出混合接口1. 实验目的:1)掌握基本输入接口的设计方法。 2)掌握基本输出接口的设计方法。 3)掌握I/O地址译码的方法2. 实验原理:当用74LS244、74LS273组成一个I/O接口电路时,输入端口地址和输出 端口地址可以为同一个地址。为了区别数据时输入还是输出,可以用 IOR 、IOW和IOY3信号共同控制。由IOY3和IOR产生读选通信号, 有IOY3和IOW产生写选通信号。3. 实验内容:要求编制一个循环程序,用74LS244和74LS273设计一个输入输出接口, 将从74LS244的输入数据从74LS273的输出发光二极管上对应显示出来。 改变输入,输出立即跟着改变,按

18、下键盘上的任一键,立即停止输入和 输出。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 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. 实验结果和总结: 改

19、变开关状态,发光二极管会作出相应的亮灭,实验正确。实验过程中,若Y0-Y7所有端口均无选通信号,一般可能是74LS138译码器电源未接好,或不符合译码器使能条件,或是74LS138损坏。若选通信号与Y0、Y1端口不对应,则是C、B、A端输入地址线错接或开路、或短路。C、B、A三端输入地址线应有脉冲信号输出,若全为0或全为1,则不正常。实验五 模数转换器ADC08091. 实验目的:掌握模/数转换的原理及接口设计 掌握8为A/D转换芯片ADC0808/0809的使用方法。 掌握延时、查询和中断数据传送方式。2. 实验原理: 各种型号的ADC芯片都具有数据输出信号,启动A/D转换信号和转换结束信

20、号。首先,计算机启动A/D转换;待转换结束后,ADC送出转换结束信号通知计算 机;计算机用输出指令从ADC的数据输出引线读取转换数据。 由于ADC0808/0809芯片内部集成了数据锁存三态缓冲器,其数据输出线D7D0 可以直接和计算机的数据总线相连,所以ADC0808/0809与微机的接口的设计主要是 对模拟通道的选择、转换启动的控制和读转换结果的控制等方面的设计。 ADC0808/0809于微机的接口可分为三种方式:延时方式、中断方式、查询方式。 本次实验只用到延时方式:启动转换后等待100us(ADC0808/0809转换时间), 再读取转换结果。3. 实验内容:用延时的方式分别采集+5

21、V、0V各点的电压数据,并将采集的数据(FFH、 00H)送显示器显示。4. 实验电路图:5. 6. 实验代码: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

22、 /调整BX的赋值可调整延时时间长短 MOV 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 A

23、DD AL,7LNADD7: ADD AL,30H MOV BX,AL MOV DX,OFFSET OBUF MOV AH,9 INT 21H retcode ends end begin7. 实验结果和总结:实验现象:当IN0接高电平时,运行程序,CRT显示FFH,当IN0接低电平时,运行程序,CRT显示00H,实验正确。连ADC0809芯片引脚接线时一定要注意REF-与GND接地,REF+与ACC接电源。Start和ALE引脚要接到一起,实验书上给的图有错误。我们没有发74LS02或非门,可以用74LS32或门加非门代替,实验效果一样。实验中注意等待时间的选取,书中给出CLK时钟输入的最高

24、频率为640KHz,且ADC0809启动转换后延时时间为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

26、AL PUSH AX MOV AH,0BH INT 21H CMP AL,0 POP AX JZ AGAIN retbegin endpcode ends end begin6. 实验结果和总结: 实验现象:从示波器上观察,可看到相应的波形。 程序每循环一次DAC0832的输入数字量增1.,因此实际上锯齿波的上升是由 256个小阶梯构成的,但由于小阶梯很小,所以宏观上看就是线性增长的锯齿波。 可通过循环程序段的机器周期计算出锯齿波的周期。并可根据需要,通过延时 的办法来改变锯齿波的周期。当延时时间较短时,可用指令LOOP $来实现:当延时 较长时,可以使用一个延时子程序,也可以使用定时器来定时

27、。 程序中的数字量的变化范围是从0-255,因此得到的锯齿波是满幅的。如果要 得到非满幅的锯齿波,可通过计算求得的数字量的初值和终值,然后在程序中通过 置初值潘终值的办法即可实现。实验七 PCI 中断实验1. 实验目的:掌握PCI中断的设计方法。 掌握可编程中断控制器8259A的使用方法。2. 实验原理:本实验使用TD-PIT实验装置提供的中断请求信号IRQ(下降沿有效),用KK1的负脉冲作为中断源,在进入中断前、中断过程中和完成中断后分别在屏幕上显示不同的提示字符串。使用实验装置提供的IRQ信号,除了要操作PC的可编程中断控制器8259A外,还需要操作实验装置PCI扩展卡上的与PCI中断有关的寄存器。通过操作上述寄存器,才可以实现中断的初始化和中断清楚等。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,0

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1