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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

微机原理及应用实验指导书汇编语言资料.docx

1、微机原理及应用实验指导书汇编语言资料实验一8251A串行通讯一、实验目的1.了解串行通讯的基本原理2.掌握串行接口芯片8251的工作原理和编程方法二、实验内容1、按图4连接好电路,(8251插通用插座)其中8253计数器用于产生8251的发送和接收时钟,TXD和RXD连在一起。2、编程:从键盘输入一个字符,将其ASCII码加1后发送出去,再接收回来在屏幕上显示,实现自发自收。三、硬件接线图与程序流程图硬件连接图:流程图:四、实验源程序DATASEGMENTSTRINGDBPLEASEINPUTACHARACTER:,0DH,0AH,$DATAENDSSTACKSEGMENTSTACKSTACK

2、 DB100DUP(?)STACKENDSCODESEGMENT ASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATA MOVDS,AX MOVDX,0283H MOVAL,16H00010110 OUTDX,AL MOV DX,0280H;设置8253A计数器0的初值 MOVAL,34H; OUTDX,AL MOV DX,02B9H;初始化8251 MOVAL,40H CALLOUT1 MOVAL,4EH;01001110方式控制字 CALLOUT1 MOVAL,27H;00100111向8251命令控制字,允许其发送和接收 CALLOUT1 MOVD

3、X,SEGSTRING MOVDS,DX MOVDX,OFFSETSTRING MOVAH,09H INT21HWAIT1:MOVDX,02B9H INAL,DX TEST AL,01H;发送是否准备好 JZWAIT1 MOVAH,01H INT21H CMPAL,1BH JZEXIT INCAL MOVDX,02B8H OUTDX,AL;发送 MOVCX,0040HLOP1:LOOPLOP1NEXT:MOVDX,02B9H INAL,DX TESTAL,02H;检查接收是否准备好 JZNEXT MOVDX,02B8H INAL,DX;准备好,接收 MOVDL,AL MOVAH,02H INT

4、21H JMPWAIT1EXIT:MOVAH,4CH INT21HOUT1PROCNEAR;向端口输出一字节的子程序 OUTDX,AL PUSHCX MOVCX,0040HLOP2:LOOPLOP2 POPCX RETOUT1ENDPCODEENDS ENDSTART五、实验结果运行程序,屏幕显示提示输入,输入一个字符后同时显示这个字符的ASCII码值加一的ASCII码所代表的字符,例如输入1,显示2.六、实验总结本次试验主要是对串行接口芯片8251的理解与运用。模拟的是两台计算机之间的通信,所以适合使用异步通信方式。通过这次实验,我学习了串口通信的相关知识,也学习了8251芯片的使用方法。作

5、为串行通信接口,时序是非常重要的,输入输出之间的时间差必须控制得合适,否则就不能正常收发,这可以通过软件编程实现,当时序不符合时,可插入等待时间,即软件延时来解决。实验完成后对8251的工作原理有了更加深入的理解,也对异步通信和同步通信的区别与特点有了更加生动的认识。实验二8255可编程并行接口(方式0)一、实验目的掌握8255方式0的工作原理及使用方法2、实验内容(1)实验电路如图6,8255C口接逻辑电平开关K0K7,A口接LED显示电路L0L7(2)编程从8255C口输入数据,再从A口输出数据三、源程序:DATASEGMENTDATAENDSSTACKSEGMENTSTACKSTACK

6、DB100DUP(?)STACKENDSCODESEGMENT ASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATA MOVDS,AX MOVDX,28BH;8255初始化,10001001,C口输入,A口输出 MOVAL,89H OUTDX,ALLOOP1:MOV DX,28AH;C口输入 IN AL,DX MOV DX,288H;A口输出 OUT DX,AL MOV AL,01H JNT 16H JNZ EXIT;ZF=0说明有按键输入,故退出 JMP LOOP1EXIT:MOV AX,4COOH INT 21HCODE ENDS END START

7、4、实验结果拨动K0K7,对应的L0-L7亮,有按键输入则退出5、实验总结8255芯片需要设置好控制字,然后进行读写控制操作。实验三8253可编程定时器/计数器一、实验目的掌握8253的基本工作原理和编程方法二、实验内容按图7虚线连接电路,将计数器0设置为方式0,计数器初值为N(N0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0变高电平)。按图8连接电路,将计数器0、计数器1分别设置为方式3,计数初值设为1000,用逻辑笔观察OUT1输出电平的变化(频率1HZ)。三、编程提示 1、8253控制寄存器地址 283H 计数器

8、0地址 280H 计数器1地址 281H CLK0连接时钟 1MHZ 2、参考流程图四、实验代码1、图7电路的实验代码CODE SEGMENT ;段定义开始(CODE段) ASSUME CS:CODE ;规定CODE为代码段START:MOV AL,10H ;设置控制字00010000(计数器0,方式0,写两个字节,二进制计数) MOV DX,283H ;把控制寄存器地址放在DX寄存器中 OUT DX,AL ;将AL的值送入DX端口 MOV DX,280H ;把计数器0地址放在DX寄存器中 MOV AL,0FH ;将0FH存入AL寄存器 OUT DX,AL ;将此时AL的值送入DX端口LP1:

9、 IN AL,DX ;从DX端口读入8位,放在AL寄存器中 CALL DISP ;调用DISP PUSH DX ;将DX内容保存到堆栈段 MOV AH,06H ;将06H存入AH,为了下句调用21中断 MOV DL,0FFH ;将0FFH存入DL INT 21H ;调用21中断 POP DX ;将DX的内容推出栈段 JZ LP1 ;如果DX的内容是0,就跳转到LP1 MOV AH,4CH ;将4CH存入AH,为了下句调用21中断 INT 21H ;调用21中断DISP PROC NEAR ;定义一个名为DISP的子程序 PUSH DX ;把DX的内容保存到堆栈段中 AND AL,0FH ;将A

10、L寄存器的内容与0FH进行“与”运算,再把结果存入AL中 MOV DL,AL ;将AL的值送入DL寄存器 CMP DL,9 ;比较DL中的值与9的大小 JLE NUM ;如果DL的值小于或等于9时,则跳转到NUM ADD DL,7 ;将DL的值与7进行相加后,再送入DL中NUM: ADD DL,30H ;将DL的值与30H进行相加后,再送入DL中 MOV AH,02H ;将02H存入AH INT 21H ;调用DOS21中断 MOV DL,0DH ;结合“MOV AH,02H”就是说输出0DH INT 21H ;调用中断指令 MOV DL,0AH ;结合“MOV AH,02H”就是说输出0AH

11、 INT 21H ;调用DOS21中断 POP DX ;将DX的内容推出栈段 RET ;子程序在功能完成后返回调用程序继续执行 DISP ENDP ;子程序结束 CODE ENDS ;代码段结束 END START ;程序结束2、图8电路的实验代码CODE SEGMENT ;段定义开始(CODE段) ASSUME CS:CODE ;规定CODE为代码段START:MOV DX,283H ;把控制寄存器地址放在DX寄存器中 MOV AL,36H ;设置控制字00110110(计数器0,方式3,写两个字节,二进制计数) OUT DX,AL ;将AL的值送入DX端口 MOV AX,1000H ;该语

12、句是立即寻址方式,就是把1000H这个数赋给AX MOV DX,280H ;把计数器0地址放在DX寄存器中 OUT DX,AL ;将AL的值送入DX端口 MOV AL,AH ;将AX的高8位存入AL寄存器中 OUT DX,AL ;将此时AL的值送入DX端口 MOV DX,283H ;把端口地址放在DX寄存器中 MOV AL,76H ;设置控制字01110110(计数器1,方式3,写两个字节,二进制计数) OUT DX,AL ;将AL的值送入DX端口 MOV AX,1000H ;把1000H赋给AX MOV DX,281H ;把端口地址放在DX寄存器中 OUT DX,AL ;将AX的低8位送入D

13、X端口 MOV AL,AH ;将AX的高8位存入AL寄存器中 OUT DX,AL ;将AL的值送入DX端口 MOV AH,4CH ;将4CH存入AH INT 21H ;调用DOS21中断CODE ENDS ;代码段结束 END START ;程序结束五、实验总结 通过实验,学会8253芯片和微机接口原理和方法,掌握8253定时器/计数器的基本工作原理、工作方式和编程原理,熟悉汇编代码的编写。实验中,连接电路,利用代码控制实验电路,深对课本理论的理解。实验四七段数码管1、实验目的掌握数码管显示数字的原理2、实验内容1.静态显示:按图10(A)连接好电路,将8255的A口PA0-PA6分别与七段数

14、码管的断码驱动输入端A-G相连,位码驱动输入端S1接+5V(选中),S0、DP接地(关闭)。编程从键盘输入一位十进制数字(0-9),在七段数码管上显示出来。2.动态显示:按图10(B)连接好电路,七段数码管段码连接不变,位码驱动输入端S1,S0接8255C口的PC1,PC0。编程在两个数码管上显示“56”3、流程图:3、源程序静态显示:DATASEGMENTIOPORTEQU0C800H-0280HIO8255AEQUIOPORT+288HIO8255BEQUIOPORT+28BHLEDDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHMESG1 DB 0DH,

15、0AH,INPUTANUM(0-9H):,0DH,0AH,$DATAENDSCODESEGMENT ASSUMECS:CODE,DS:DATASTART:MOVAX,DATA MOVDS,AX MOVDX,IO8255B;使8255的A口为输出方式 MOVAL,80H;10000000B,控制字PA以方式0输出 OUTDX,ALZBY:MOVDX,OFFSETMESG1显示提示信息 MOVAH,09HINT21H MOVAH,01;从键盘接收字符INT21H CMPAL,0;是否小于0 JLEXIT;如若小于0,则跳转到EXIT退出程序 CMPAL,9;是否大于9 JGEXIT;如若大于9,则

16、跳转到EXIT退出程序 SUBAL,30H;将所得字符的ASCII码减30H,数字键ASCII码同数值转换 MOVBX,OFFSETLED;BX为数码表的起始地址 XLAT;求出相应的段码 MOVDX,IO8255A;从8255的A口输出 OUTDX,AL JMPZBY;转ZBYEXIT:MOVAH,4CH;返回DOS INT21HCODEENDS ENDSTART动态显示:DATASEGMENTIOPORTEQU0C800H-0280HIO8255AEQUIOPORT+28AHIO8255BEQUIOPORT+28BHIO8255CEQUIOPORT+288HLEDDB3FH,06H,5BH

17、,4FH,66H,6DH,7DH,07H,7FH,6FH段码BUFFER1DB5,6;存放要显示的个位和十位BZDW;位码DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATA MOVDS,AX MOVDX,IO8255B;将8255设为A口输出 MOVAL,80H;10000000B,控制字PA以方式0输出 OUTDX,AL MOVDI,OFFSETBUFFER1;设DI为显示缓冲区LOOP2:MOVBH,02ZBY:MOVBYTEPTRBZ,BH PUSHDI DECDI ADDDI,BZ MOVBL,DI;BL为要显示的数 POP

18、DI MOVAL,0 MOVDX,IO8255A OUTDX,AL MOVCX,3000DELAY:LOOPDELAY延时 MOVBH,BYTEPTRBZ SHRBH,1 JNZZBY MOVDX,0FFH MOVAH,06 INT21H JELOOP2;有键按下则退出 MOVDX,IO8255A MOVAL,0;关掉数码管显示OUTDX,AL MOVAH,4CH;返回 INT21HCODEENDS ENDSTART四、运行结果:静态显示:在键盘上输入一个0-9的任意数字,会显示在数码管上动态显示:在程序中写入6,5,读取顺序是第一位是个位,第二位是十位,数码管上显示56.5、实验总结 静态显

19、示是从键盘获取一个数值,然后通过程序比较得出键盘输入的数字量,由PA端口输出到数码管上。而动态显示是将两个数字写入程序中,由程序读取数字然后按位输出到数码管上显示。原理说得简单,但是程序本身个人感觉还是相当复杂的,尤其动态显示,程序如何读取已输入的数字,以及读取数字的顺序都会影响到数码管的显示。静态显示过程中,我们碰到数码管一直显示8的状态,这并不是预期的效果。后来发现,由于在程序中用符号定义伪指令EQU将所要用到的算口地址用“IO8255A”定义,但在写程序的过程中又写进去了十六进制实际地址,导致出现问题,经过很长时间的调试方才解决。实验五 竞赛抢答器一、实验目的1、了解微机化竞赛抢答器的基

20、本原理。2、进一步学习使用并行接口。二、实验内容图12为竞赛抢答器(模拟)的原理图,逻辑开关K0K7代表竞赛抢答按钮07号,当某个逻辑电平开关置“”时,相当某组抢答按钮按下。在七段数码管上将其组号(07)显示出来,并使微机扬声器响一下电路图:流程图:3、源程序DATASEGMENTIO8255AEQU28AHIO8255BEQU28BHIO8255CEQU288HLEDDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H;数码表DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVDX,IO8255B

21、;设8255为A口输出,C口输入MOVAX,89HOUTDX,ALMOVBX,OFFSETLED;使BX指向段码管首址SSS:MOVDX,IO8255AINAL,DX;从8255的C口输入数据ORAL,AL;比较是否为0JESSS;若为0,则表明无键按下,转SSSMOVCL,0FFH;CL作计数器,初值为-1RR:SHRAL,1INCCLJNCRRMOVAL,CLXLATMOVDX,IO8255COUTDX,ALMOVDL,7;响铃ASCII码为07MOVAH,2INT21HWAI:MOVAH,1INT21HCMPAL,20H;是否为空格JNEEEE;不是,转EEEMOVAL,0;是,关灭灯M

22、OVDX,IO8255COUTDX,AL JMPSSSEEE:MOVAH,4CH;返回INT21HCODEENDSENDSTART4、实验现象逻辑开关K0K7代表竞赛抢答按钮07号,当某个逻辑电平开关置“”时,相当某组抢答按钮按下。在七段数码管上将其组号(07)显示出来,并使微机扬声器响一下。五、实验总结通过此次实验,首先我懂得了有关竞赛抢答器的知识,我们了解到,即使书本上的知识掌握得再好,在将它付诸实践时,还是会碰到各种各样的问题。这次课程设计就是一次对自己所学知识的总结与综合运用,使我们对这微机原理这门课程有了更深的了解同时也明白了实验不单是搞懂软件方面内容,也要注重硬件的配合及原理。这次

23、实验虽然程序不是自己编写,但我至少弄懂了大部分,收获良多。实验六 步进电机控制实验1、实验目的(1)了解步进电机控制的基本原理(2)掌握控制步进电机转动的编程方法2、实验内容1、按图14连接线路,利用8255输出脉冲序列,开关K0-K6控制步进电机转速,K7控制步进电机转向。8255CS接288H-28FH。PA0-PA3接BA-BD;PC0-PC7接KO-K7。2、编程:当K0-K7中的某一个开关为“1”是步进电机启动。K7向上拨电机正传,向下拨电机反转。实验原理图:流程图:3、源程序DATASEGMENTP55AEQU288H;定义P55A为8255A的端口地址P55CEQU28AH;定义

24、P55C为8255C的端口地址P55CTLEQU28BH;定义P55CTL为8255控制端口地址BUFDB0;定义一个字节数据(用来存放开关状态)MESDBK0-K6ARESPEEDCONTYOL,0AH,0DH DBK6ISTHELOWESTSPEED,0AH,0DH DBK0ISTHEHIGHESTSPEED,0AH,0DH DBK7ISTHEDIRECTIONCONTROL,0AH,0DH,$在屏幕上输出一段符号,DATAENDS;显示程序处于执行状态。CODESEGMENTASSUMECS:CODE,DS:DATASTART: MOVAX,CS MOVDS,AX MOVAX,DATA MOVDS,AX;程序的初始化,给DS,CS赋值 MOVDX,OFFSETMES MOVAH,09 INT21H;调用DOS功能,显示字符串 MOVDX,P55CTL MOVAL,90H OUTDX,AL;8255A初始化 MOVBUF,33H;BUF初始化为00110011BOUT1: MOVAL,BUF;将BUF值置入AL寄存器并输出MOVDX,P55C OUTDX,AL PUSHDX MOVAH,06H MOVDL,0FFH INT21H;判断是否有键按下 POPDX

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

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