




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第一篇汇编语言程序设计实验一汇编语言上机操作比较字符串1-1实验二循环程序设计建立学生名次表1-5实验三显示器界面设计光标轨迹程序1-8实验四键盘界面设计键盘输入程序1-10实验五算术程序设计判断闰年程序1-22第二篇微机硬件实验系统实验一简单I/O口扩展实验2-1实验二8255并行口实验2-实验三8253定时器/计数器接口实验2-实验四8250串口实验2-实验五存储器扩展实验2-实验六8259中断控制器实验2-实验七基于定时中断的实时控制综合实验2-附录1ASCII码表3-1附录2常用BIOS中断调用3-2附录3INT21HDOS系统功能调用3-5附录4PCIBIOS中断调用INT1AH3-
2、11附录5汉字字符集表3-13附录6DEBUG主要命令3-21第一篇汇编语言实验一汇编语言上机操作比较字符串实验项目名称:比较字符串实验项目性质:普通所属课程名称:微机原理与应用实验计划学时:2一、实验目的1 、学习程序设计的基本方法和技能;2、熟练掌握汇编语言设计、编写、调试和运行;二、实验内容和要求2 、汇编语言上机操作方法编写程序,比较两个字符串STRING侪口STRING新含字符是否相同,若相同则在屏幕上显示MATCH,否则显示NOTMATCH。3 、系统操作练习三、实验主要仪器设备和材料计算机四、实验方法、步骤及结构测试1、建立ASMfc件1)在Windows系统环境下,调用写字板编
3、辑程序,建立汇编语言ASM®文件。2)在Dos系统环境下,调用EDIT编辑器建立汇编语言ASM源文件。;ProgramTitleGoesHereComparestring;Datasegment;definedatasegmentString1dbMovethecursorbackward.String2dbMovethecursorbackward.Mess1dbMatch.,13,10,$Mess1dbMatch.,13,10,$Dataends*Programsegment;definecodesegmentMainprocfarAssumecs:program,ds:data
4、,es:dataStart:;startingexecutionaddressPushds;setupstackforreturnSubax,axPushaxMovax,data;datasegmentaddressMovds,axMOVes,ax;mainpartofprogramgoeshereLeasi,string1Leasi,string2CldMovcx,25RepzcmpsbJzMATCHLeadx,mess2JmpshortdispMatch:Leadx,mess1Disp:Movah,09;reture to DOS;end of main part of program;e
5、nd of code segmentInt21hRetMainendpProgramendsEndstart;endassembly写完后保存文件名为:*.asm2、用汇编程序MASMt源文件“*asm”汇编产生目标文件*.obj。1)在Windows环境,点击mas似:件,输入*asm的文件名。2)在Dos环境,输入命令:C:masm>masm*.asm/TheIBMPersonalComputerMACROAssemblerVersion1.00(C)CopyrightIBMCorp1981WarningSevereErrorError00如汇编过程出错则在屏幕上显示出错信息。3、用
6、连接程序Link产生可执行文件”*.exe”.1)在Windows环境,点击Link文件,输入*obj文件名。2)在Dos环境,输入命令:C:masm>link*obj/IBM5550MultistationLinker2.00(C)CopyrightIBMCorp1983Warning:NoSTACKsegmengtTherewas1arrordetected4、执行程序1)在Windows环境,点击*.exe文件运行程序。2)在Dos环境,输入命令:C:masm>*exe/此时在屏幕上可显示程序的运行结果。屏幕显示:Match(或NOTMATCH)5、用DEBU阖试程序输入命令
7、:C:masm>debug*exe/幕上显示提示符:-G/(运行命令)MATCH.PROGRAMTERMINATEDNORMALLY-U(反汇编命令),屏幕上显示程序如示U/19F3:00001E19F3:00012BC019F3:00035019F3:0004B8EE1919F3:00078ED819F3:00098EC019F3:000B8D360000 LEA8D3E1900 LEA19F3:000F19F3:0013FC19F3:0014B9190019F3:0017F319F3:0018A619F3:0019740619F3:001B19F3:001F-U19F3:002119
8、F3:00258D163B00 LEAEB04JMP8D163200 LEAB409MOVCD21INT19F3:002719F3:0029CB19F3:002AFF7501PUSH DS SUB AX,AX PUSH AX MOV AX,19EE MOV DS,AX MOV ES,AXSI,0000 DI,1900CLDMOV CX,0019 REPZCMPSBJZ 0021DX,003B 0025DX,0032 AH,09 21RETF将断点设置在程序的主要部分运行以前,运行输入的程序为:-G0B/AX=19EEBX=0000CX=007ADX=0000SP=FFFCBP=0000SI=0
9、000DI=0000DS=19EEES=19EESS=19EECS=19F3IP=000BNVUPDIPLZRNAPENC19F3:000B8D360000LEASI,0000DS:0000=6F4D根据其中指示的DS寄存器内容查看数据段的情况如下:-D0/19EE:00004D6F766520746865-20637572736F7220Movethecursor19EE:00106261636B77617264-2E4d6f7665207468backward.Moveth19EE:00206520637572736F72-206261636b776172ecursorbackwar19E
10、E:0030642E4D617463682E-0d0a244E6F206D61d.Match$Noma19EE:0040746368210D0A2400-0000000000000000tch!.$19EE:00501E2BC050B8EE198E-D88EC08D3600008D.+P8N.X.619EE:00603E1900FCB91900F3-A674068D163B00EB>.19.S&T;.K19EE:0070048D163200B409CD-21CBFF7501405A222.4.M!K.u.Z''可用E命令修改数据区的字符串,操作如下:-E29/19
11、EE:002962.6661.6F63.726B.7777.6161.7272.6419EE:003064.2E2E.20再次用D命令查看修改结果:-D0/19EE:00004D6F766520746865-20637572736F7220Movethecursor19EE:00106261636B77617264-2E4d6f7665207468backward.Moveth19EE:00206520637572736F72-20666F7277617264ecursorforkward19EE:00302e204D617463682E-0d0a244E6F206D61.Match$Noma
12、19EE:0040746368210D0A2400-0000000000000000tch!.$19EE:00501E2BC050B8EE198E-D88EC08D3600008D.+P8N.X.619EE:00603E1900FCB91900F3-A674068D163B00EB>.19.S&T;.K19EE:0070048D163200B409CD-21CBFF7501405A222.4.M!K.u.Z''用G命令运行程序,结果为:-G/Nomatch!Programterminatednormally用Q命令退出程序:-Q/至此,程序调试完毕。(DEBU函令
13、详见附录2)五、实验报告要求分析程序功能,汇编语言的集成环境,调试程序过程中遇到的问题。六、思考题1、汇编语言的集成环境有几个主要环节?2、将程序中的指令JZMATCHY为JNZMATCH程序结果如何?为什么?3、将内存DATA俾元开始的0-15共16个数传送到DATA2单元开始的数据区中。实验项目名称: 实验项目性质:普通 所属课程名称:微机原理与应用 实验计划学时:实验二建立学生名次表RANK建立学生名次表RANK普通微机原理与应用2一、实验目的1、学习循环程序的设计方法;2、熟练掌握程序的调试方法;二、实验内容和要求本程序采用两重循环来实现,内层对应学生的名次计算,外层解决所有学生的名次
14、;以GRADE为首地址的10个字保存学生的成绩,RANK为地址的10个字填入学生的名次。本程序对应的寄存器分配情况说明如下:AX:存放当前被测学生的成绩;BX:存放当前被测学生的相对地址指针;CX:内循环计数值;DX:当前被测学生的名次计数值;SI:内循环测试时的地址指针;DI:外循环计数值;三、实验主要仪器设备和材料计算机一台四、实验方法、步骤及结构测试1、实验参考程序如下:;programtitlegoeshere-rank;Datasegment;definedatasegmentGratedw88,75,95,63,98,78,87,73,90,60Rankdw10dup(?)Data
15、ends;Programsegment;definecodesegmentMainprocfarAssumecs:program,ds:dataStart:Pushds;setupstackforretureSubax,axPushaxMovax,dataMovds,axMovdi,10Movbx,0Loop1:Movax,gradebxMovdx,0Movcx,10Leasi,gradeNext:Cmpax,siJgno_countIncdxNo_count:Addsi,2LoopnextMovrankbx,dxAddbx,2DecdiJneloop1RetMainendpProgramen
16、dsEndstart2、程序框图开始3、程序执行C:>debug*exe/-U19F3:0000 19F3:000119F3:0003 19F3:0004 19F3:0007 19F3:0009 19F3:000C 19F3:000F19F3:0013 19F3:0016 19F3:0019 19F3:001D 19F3:001F1E 2BC0 50 B8EE19 8ED8BF0A00 BB0000PUSH SUBPUSH MOVMOV MOVMOV8B870000 MOVBA0000 MOVB90A00 MOV 8D360000 LEA3B047F01CMPJGDSAX,AXAXAX,
17、19F0DS,AXDI,000ABX,0000AX,BX+0000DX,0000CX,000A SI,0000 AX,SI 0022-U19F3:002142INCDX19F3:002283C602ADDSI,+0219F3:0025E2F6LOOP001D19F3:002789971400MOVBX+0014,DX19F3:002B83C302ADDBX,+0219F3:002E4FDECDI19F3:002F75DEJNZ000F19F3:0031CBRETF19F3:00325APOPDX19F3:003322C2ANDAL,DL19F3:003550PUSHAX-G09AX=19F0B
18、X=0000CX=0062DX=0000SP=FFFCBP=0000SI=0000DI=0000DS=19F0ES=19E0SS=19F0CS=19F3IP=000BNVUPDIPLZRNAPENC19F3:0009BF0A00MOVDI,000A-D0/19F0:000058004B005F003F00-62004E0057004900X.K._.?.b.N.V.I19EE:00105A003C0000000000-0000000000000000Z.<19EE:0020000000000000000000000000000000.+P8p.X?19EE:0030642E4D61746
19、3682E-0d0a244E6F206D61d.Match$Noma19EE:0040746368210D0A2400-0000000000000000tch!.$19EE:00501E2BC050B8EE198E-D88EC08D3600008D.+P8N.X.6-G31AX=003CBX=0014CX=0000DX=000ASP=FFFCBP=0000SI=0014DI=0000DS=19F0ES=19E0SS=19F0CS=19F3IP=0031NVUPDIPLZRNAPENC19F3:0031CBRETF-D019F0:000058004B005F003F00-62004E005700
20、4900X.K._?b.N.V.I19EE:00105A003c0004000700-0200090001000600Z.<19EE:00200500080003000A0000000000000000.+P8p.X?19EE:0030642E4D617463682E-0d0a244E6F206D61d.Match$Noma19EE:0040746368210D0A2400-0000000000000000tch!.$19EE:00501E2BC050B8EE198E-D88EC08D3600008D.+P8N.X.6五、实验报告要求1、画出程序框图并分析双重循环的结构;2、程序的结果为
21、16进制,可否改为10进制?六、思考题1、调试程序时,当用户数据设置好后,程序应运行到什么位置才能查看结果?2、程序的数据段定义为字单元,可否用字节来定义?实验三光标轨迹实验项目名称:判断闰年程序实验项目性质:普通所属课程名称:微机原理与应用实验计划学时:2一、实验目的1、学习显示器I/O程序设计方法;2、了解系统功能中断的设计方法;3、了解键盘光标键是如何控制;二、实验内容和要求1、用键盘上的TJ-一键控制光标的移动。2、按行号*列号的形式给方块字符(ASCII码为0BDH)在屏幕上定位,按T光标键使光标在屏幕上移动,光标的移动由方快字符组成的图形而在屏幕上保留下轨迹。三、实验主要仪器设备和
22、材料计算机四、实验方法、步骤及结构测试1、源程序如下:TITLEDRAW-ProgramtodrawonscreenwithRead_cequ0Key_romequ16hUpequ48hDownequ50hRightequ4dhLiftequ4bhBlockequ0dbhEsc1equ1bhVideosegmentat0b800h;defineextrasegWd_bufflabelwordV_buffdb25*80*2dup(?)VideoendsPro_namsegment;definecodesegmentMainprocfarAssumecs:pro_nam,es:videoStart
23、:Pushds;setupstackforreturnSubax,axPushaxMovax,videoMoves,axMovcx,80*25;clearscreenbywritingzerostoitMovbx,0Clear:Moves:wd_buff+bx,0700hIncbxIncbxLoopclearMovch,12d;setscreenpointertocenterofscreenMovcl,40dGet_char:Movah,read_cIntkey_romCmpal,esc1JzexitMoval,ahCmpal,upJnznot_upDecchNot_upCmpal,downJ
24、nznot_dowdIncchNot_down:Cmpal,rightJnznot_rightIncclNot_right:Cmpal,leftJnzlite_itDecclLite_it:Moval,160dMulchMovbl,clRolbl,1Movbh,0Addbx,axMoval,blockMoves:v_buff+bx,alJmpget_charExit:RetMainendpPro_namendsEndstart2、程序说明:该程序首先定义了一个附加段VIDEO,并用AT伪操作将该段的段地址指定为00B800H,0B800H是彩色显示器的显示缓冲区的入口地址。程序分为三段,第一段
25、完成清除屏幕的工作,程序从偏移地址0开始,向显存的所有单元(25*80)写入数据0700H,其中07H为正常属性代码,00H为ASCII码;第二段程序用BIOSINT16H功能从键盘读取字符,然后根据按动光标控制键增减行号(CH)、列号(CL)。第三段是在当前行号和列号的位置写入方块字符(0DBH),行号列号使用转换公式为:(BX)=行号*80*2+列号*2然后利用间接寻址方式直接将方块符写入存储单元中;运行这个程序,当任意按动T7光标键,光标的移动就由方块符组成的图形保留下来了;五、实验报告要求1、显示器是如何定义窗口的大小的?2、在文本方式下,什么是属性值?六、思考题1、光标轨迹运行到边界
26、后,为什么光标会闪烁和改变颜色?若要光标不变,应如何修改程序?实验四键盘程序设计实验实验项目名称:键盘处理演示程序实验项目性质:普通所属课程名称:微机原理与应用实验计划学时:2一、实验目的1、 、学习键盘I/O口程序设计方法;2、了解系统功能中断的设计方法;二、实验内容和要求1、在PC机中,对键盘的管理是通过中断机构和8255可编程外围接口芯片来实现的。2、 8255芯片中有两个端口PA(60H)、PB(61H),在这个硬件接口的基础上,系统BIOS中已配备了键盘的服务功能,因此用户可调用键盘的DOSBIOS功能编程。3、 完成对键盘的中断检测,把键盘的83个键的扫描码转换成相应的ASCII字
27、符码。三、实验主要仪器设备和材料计算机四、实验方法、步骤及结构测试1、源程序如下:TITLEkbdio.asm-KeyboardI/OsupportprogramStacksegmentparastackstackdb256dup(0)StackendsDatasegmentparapublicdataBufferdb16hdup(0)Bufpt1dw0Bufpt2dw0Kbflagdb0Promptdb-kbd_ioprogrambegin-,0dh,0ah,$Scantabdb0,0,1234567890-=,8,0dbqwertyuiop,0dh,0dbasdfghjkl;,0,0,0,
28、0dbzxcvbnm,./,0,0,0db,0,0,0,0,0,0,0,0,0,0,0,0,0db789-456+1230.EvenOldcs9dw?Oldip9dw?DataendsCodesegmentparapubliccodeStartprocfarAssumecs:code,ds:dataPushds;saveforreturnMovax,0PushaxMovax,data;setDStodatasegMovds,axCliMoval,09;saveinterruptvectorofKBDBIOSroutingMovah,35hInt21hMovoldcs9,esMovoldip9,
29、bxPushds;setinterruptvectorofkbintMovdx,offsetkbintMovax,segkbintMovds,axMoval,09Movah,25hInt21hPopdsInal,21h;setkbdinterruptmaskbitAndal,0fdhOut21h,alMovdx,offsetpromptMovah,9Int21hStiForever:Callkbget;waitenterakeyTestkbflag,80hJnzendintPushaxCalldispchar;displaythecharacterPopaxCmpal,0dhJnzforeve
30、rMoval,0ahCalldispchar;displayCR/LFJmpforever;loopforcontinueEndint:Movdx,oldip0;interruptvectorMovax,oldcs9Movds,axMoval,09hMovah,25hInt21hRetStartendpKbgetprocnearPushbxCli;interruptbackoffMovbx,bufpy1;getpointertoheadCmpbx,bufpt2;testemptyofbufferJnzkbget2;no,fetchacharacterCmpkbflag,0Jnzkbget3St
31、i;allowaninterrupttooccurPopbxJmpkbget;loopuntilsomethinginbufKbget2:Moval,buffer+bx;getasciicodeIncbx;incabufferpoiterCmpJcMovbx,16kbget3bx,0;atendofbuffer;no,continue;resettobufbeginningKbget3:Movbufpt1,bx;storevalueinvariablePopbxRetKbgetendpKbintprocfar;keyboardinterruptroutinePushbxPushaxInal,6
32、0h;readinthecharacterPushax;saveitInal,61h;getthecontrolporOral,80;setacknowledgebitforkbdOut61h,alAndal,7fh;resetacknowledgebitOut61h,alPopax;recoverscancodeTestal,80h;ispressorreleasecode?Jnzkbint2;isreleasecode,returnMovbx,offsetscantabXlatscantab;asciicodetoALCmpal,0Jnzkbint4Movkbflag,80hJmpkbin
33、t2Kbint4:Movbx,bufpt2;buffertailpointerMovbuffer+bx,al;asciifillinbufferIncbxCmpbx,16;isendofbuffer?Jckbint3;noMovbx,0;resettobufbeginningKbint3:Cmpbx,bufpt1;isbufferfull?Jzkbint2;yes,losecharacterMovbufpt2,bx;savebuftailpointerKbint2:CliMoval,20hOut20h,alPopaxPopbxStiIretKbintendpDispcharprocnearPu
34、shbxMovbx,0Movah,0ehInt10hPopbxRetDispcharendpCodeendsEndstart;endofinterrupt;interruptreturn;(AL)=displayingchar;callvideoroutine;endofcodesegment2、程序说明主程序START键盘中断向量的保存、设置与恢复;设置中断屏蔽位并开中断;从缓冲区读取键入字符并显示在屏幕上。子程序KBGET检测并等待键盘中断,如有键盘输入,则从缓冲区取出字符并进行队列管理。键盘中断处理程序KBINT:从输入口PA(60H)读入按键的扫描码并返回应答信号;对通码进行转换,将转
35、换后的ASCII码存入队列尾。显示子程序DISPCHAR调用BIOS显示功能(INT10H)显示键入的字符。五、实验报告要求1 、分析程序结构;2 、09号中断的任务是什么?3、键盘队列有几种工作状态?六、思考题1、该程序的键盘属什么编码方式?2、键盘缓冲区占用多少单元?实验五运算类程序设计(一)实验项目名称:判断闰年程序实验项目性质:普通所属课程名称:微机原理与应用实验计划学时:2一、实验目的1 、了解加、减、乘、除算术运算的编程方法;2、了解变量传送的方式,如何访问存贮单元;二、实验内容和要求2 、是汇编语言程序设计的重要组成部分,在实际应用中,不论是简单的还是复杂的程序,都或多或少要用到
36、一些算术运算,这些算术运算大多数是加、减、乘、除和乘方等;所以,用汇编语言编写算术运算程序。3 、用汇编语言编写判断某年是否为闰年,年份从键盘输入,通过运行计算后,输出相应信息。三、实验主要仪器和材料计算机四、实验方法、步骤及结构测试1、利用DOS21H中断类型的10号键盘功能调用,将从键盘接收的年份数值型字符串按字节存入缓冲区;将字符串中的每个字符转换为对应的十进制数值(利用09这十个数的ASCII码值比其本身大30H的关系),通过判断某年是否为润年的表达式,判断输出是否为润年的信息。4 、程序框图如图6-1:图6-1判断是否为闰年的程序框图3、源程序如图6-2:DatasegmentInf
37、ondb0dh,0ah,'Pleaseinputayear:$Ydb0dh,oah,'thisisaleapyear!$Ndb0dh,0ah,'thisisnotaleapyear!$wdw0bufdb8db?db8dup(?)dataendsstacksegmentstackdb200dup(0)stackendscodesegmentassumeds:data,ss:stack,cs:codestart:movax,datamovds,axleadx,infonmovah,9int21hleadx,bufmovah,10int21hmovcl,buf+1leadi,
38、buf+2calldatacatecallifyearsjcalleadx,nmovah,9int21hjmpexital:leadx,ymovah,9int21hexit:movah,4chint21hdatacateprocnearpushcxdeccx; 在屏幕上显示提示信息; 从键盘输入年份字符串; 将数值转换为 ASCII 码字符子程序leasi,buf+2tt1:incsilooptt1popcxmovdh,30hmovbl,10movax,111:pushaxSubbyteptrsi,dhMulbyteptrsiAddw,axPopaxMulblDecsiLoopRet11Dat
39、acateendpIfyearsprocnearPushbxPushcxPushdxMovax,wMovcx,axMovdx,0Movbx,4DivbxCmpdx,0Jnzlab1Movax,cxMovbx,100DivbxCmpdx,0Jnzlab2Movax,cxMovbx,400DivbxCmpdx,0Jzlab2Lab1:clcJmplab3Lab2:stccxbxLab3:popdxPopPopRetIfyearsendpCodeendsEndstart图62程序流程图4、程序运行结果如图63Pleaseinoutayear:1996Thisisaleapyear!C:MASM>
40、;ifleapPleaseinoutayear:2003Thisisnotaleapyear!C:MASM>图63程序运行结果五、实验报告要求1、分析程序是如何实现判断是否为润年?2、小结汇编语言实现算术运算的方法。六、思考题1、写出实验中的判断闰年的表达公式。运算类程序设计(二)第二篇硬件部分实验一简单I/O口扩展实验项目名称:简单I/O口扩展实验项目性质:普通所属课程名称:微机原理与应用实验计划学时:21、 实验目的1、熟悉74LS273,74LS244的应用接口方法。2、掌握用锁存器、三态门扩展简单并行输入、输出口的方法。2、 实验内容和要求1、用逻辑电平开关作为74LS244的输
41、入,用发光二极管作为74LS273的输出编写程序,使得逻辑电平开关的输入状态从发光二极管显示出来。2、实验原理图:实验主要仪器设备和材料1、EL实验箱2、计算机3、导线若干4、 实验方法、步骤及结果测试1、将74LS244的输入SI0SI7分别与逻辑电平开关电路的K1K8相连,从I/O地址片选信号CS0与U10的片选信号相连。2、将74LS273的输出SO0SO7分别与发光二极管电路的L1L8相连,从I/O地址片选信号CS1与U8片选信号相连。3、编程并运行。4、拨动开关,其变化反应到发光二极管上,当开关的状态对应发光二极管的点亮或熄灭。5、程序框图6、参考程序;Assumecs:codeCo
42、desegmentpublicOrg100hStart:movdx,04a0hInal,dxmovdx,04b0houtdx,aljmpstartcodeendsednstart5、 实验报告要求1、画出实验原理图2、掌握输入输出接口的编程原理和方法。6、 思考题1、本程序是采用什么控制方法2、若采用查询方式编程,应如何修改程序实验二8255并行口实验实验项目名称:8255并行口实验实验项目性质:普通所属课程名称:微机原理与应用实验计划学时:21、 实验目的1 、掌握8255的编程原理;2 、掌握8255并行接口方法;2、 实验内容和要求1、8255的A口作输入口,与逻辑电平开关K1K8相连;
43、8255的B口作为输出口,与发光二极管L1L8相连;编写程序,使得逻辑电平开关的变化在发光二极管上显示出来。2、实验原理图三、实验主要仪器设备和材料1、EL实验箱2、计算机3、导线若干四、实验方法、步骤及结果测试1、8255的PA0PA7分别与逻辑电平开关的K1K8相连;PB0PB7分别与发光二极管电路的L1L8相连;从CS0与8255的片选端相连。2、编程并运行。3、拨动开关,观察发光二极管的变化,当开关某位合上时,对应的发光二极管点亮,断开时熄灭。4、程序框图5、参考程序Assumecs:codeCodesegmentpublicOrg100hStart:movdx,04a6hMovax,
44、90hOutdx,axStart1:movdx,04a0hInax,dxMovdx,04a2hOutdx,axJmpstart1CodeendsEndstart五、实验报告要求1 、比较用简单I/O口与8255接口的方法有什么区别?2 、分析8255采用选通工作方式是如何实现的?六、思考题1、本实验是实现什么数据传送方式?若改用查询方式传送数据,应该如何修改程序?实验三8253定时器/计数器实验项目名称:8253定时器/计数器实验项目性质:普通所属课程名称:微机原理与应用实验计划学时:2一、实验目的1 、掌握8253定时器/计数器的编程原理;2 、掌握8253计数器的接口方法;二、实验内容和要
45、求1、将8253计数器的0,1,2通道设置为模式3(方波方式),用示波器观察其输出波形。2、实验原理图如下:3 、8253的时钟端口CLK0、CLK1为6/16M,CLK2的时钟可以自行定义。三、实验主要仪器设备和材料1、EL实验箱2、计算机3、导线若干4、示波器四、实验方法、步骤及结果测试1、将CS0与8253的CS8253相连;2、将8253的OUT0、OUT1接示波器的信号端;3、示波器的地接实验箱的GND;4、实验源程序如下:Assumecs:codeCodesegmentpublicOgr100hStart:movdx,04a6h;8253控制端口地址Movax,36h;设置计数器0
46、工作方式3Outdx,axMovdx,04a0h;计数器0地址Movax,24h;设初值为0F424HOutdx,axMovax,0f4hOutdx,axmovdx,04a6h;8253控制端口地址Movax,76h;设置计数器1工作方式3Outdx,axMovdx,04a2hMovax,0ahOutdx,axMovax,0hOutdx,ax1地址0AHmovMovOutdx,04a6hax,0b6hdx,ax;8253控制端口地址;设置计数器2工作方式3Movdx,04a4h;计数器2地址Movax,04h;设初值为04HOutdx,axMovax,0hOutdx,axCodeendsEnd
47、start5、程序框图如下:五、实验报告要求1、掌握8253的内部结构,主要功能;2、分析8253计数器的计数方式?3、分析8253计数器的定时时间常数的计算方法?六、思考题1、若改用工作方式2(分频方式),计数初值为10,计数器0的输出波形怎样?2、要求定时时间为2分钟,定时系数是多少?(假设频率为6/16M)实验四8250串口实验实验项目名称:8250串口实验实验项目性质:普通所属课程名称:微机原理与应用实验计划学时:21、 实验目的1 、熟悉串行通信的原理和8250的工作原理;2、了解RS-232串行接口标准及连接方法;3、掌握8250芯片的编程方法;2、 实验内容和要求1、在PC机之间
48、实现串行通信,上位机每下传一个字符,下位机返回一个字符。2、上下位机波特率选用9600BIT。3、上下位机均用查询方式;4 、8250的端口地址为0480H起始的偶地址单元,时钟频率为1.8432MHz;5 、上位机的端口用COM1(或COM2的端口地址2F8H)端口地址3F8H;6、实验原理图三、实验主要仪器设备和材料1、EL实验箱2、计算机四、实验方法、步骤及结果测试1、用通信电缆连接EL实验箱和PC机;2、分别编写上下位机的程序;3 、在PC机上运行T6UP.EXE程序,选择串行口(COM1/COM2);4 、在PC机上输入字符,看是否有返回,退出按回车键;5、下位机源程序:Codese
49、gmentAssumecs:codeOrg100hStart:movbx,0480hMovdx,bxAdddx,6Movax,80hOutdx,axMovdx,bxMovax,0ch;设置波特率9600BITOutdx,ax;Adddx,2Movax,0hOutdx,ax;设置中断方式Adddx,4Movax,07Outdx,ax;设置线路控制寄存器Movdx,bxCrd:CallrecvCallsendJmpcrdRecv:Adddx,0ahRecv3:Inax,dxTestax,01hJnzrecv1Jmprecv3Recv1:Movdx,bxInax,dxRetSend:PushaxAdddx,0ahSend1:Inax,dxTestax,20hJnzrecv2Jmpsend1接收器数据是否就绪 , 就绪则转移;发送器是否空,空则转移Recv2:PopaxMovdx,bxOutdx,ax;发送数据RetCodeendsEndstart6、上位机源程序DatasegmentTt1dw0Ttt1dw0Comdw0Messag1dbpleasekeyincom(1,2):,$Messag2dbsend:,$Rcvstrdb255dup(?)Messag3dbreceive:,$DataendsCodesegmentAssumecs:code,d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论