您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > 03091424刘洋微机实验报告
西安电子科技大学实验报告课程名称微机原理成绩实验学时评语:指导教师:年月日班级:030914学号:03091424姓名:刘洋地点:EII509时间:周五晚实验一汇编语言编程实验实验目的(1)掌握汇编语言的编程方法(2)掌握DOS功能调用的使用方法(3)掌握汇编语言程序的调试运行过程实验设备PC机一台。实验内容(1)将指定数据区的字符串数据以ASCII码形式显示在屏幕上,并通过DOS功能调用完成必要提示信息的显示。(2)在屏幕上显示自己的学号姓名信息。(3)循环从键盘读入字符并回显在屏幕上,然后显示出对应字符的ASCII码,直到输入”Q”或“q”时结束。(4)自主设计输入显示信息,完成编程与调试,演示实验结果。考核方式:完成实验内容(1)(2)(3)通过,完成实验内容(4)优秀。实验中使用的DOS功能调用:INT21H表3-1-1显示实验中可使用DOS功能调用AH值功能调用参数结果1键盘输入并回显AL=输出字符2显示单个字符(带Ctrl+Break检查)DL=输出字符光标在字符后面6显示单个字符(无Ctrl+Break检查)DL=输出字符光标在字符后面8从键盘上读一个字符AL=字符的ASCII码9显示字符串DS:DX=串地址,‘$’为结束字符光标跟在串后面4CH返回DOS系统AL=返回码实验步骤(1)运行QTHPCI软件,根据实验内容编写程序,参考程序流程如图3-1-1所示。(2)使用“项目”菜单中的“编译”或“编译连接”命令对实验程序进行编译、连接。(3)“调试”菜单中的“进行调试”命令进入Debug调试,观察调试过程中数据传输指令执行后各寄存器及数据区的内容。按F9连续运行。(4)更改数据区的数据,考察程序的正确性。实验代码:DATASEGMENTMESDB'03091424liuyang',0AH,0DH,'$'MSG1DB0AH,0DH,'Ifyouwanttoquitpleasepress...q/Q...$'SDDB'q'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATAstart:MOVAX,DATAMOVDS,AXMOVDX,OFFSETMES;showmessageMOVAH,09HINT21HMOVSI,OFFSETSDGA:MOVDS:[SI],ALMOVAL,DS:[SI]ANDAL,0F0H;取高4位MOVCL,4SHRAL,CLCMPAL,0AH;是否是A以上的数JBC2ADDAL,07HC2:ADDAL,30HMOVDL,AL;showcharacterMOVAH,02HINT21HMOVAL,DS:[SI]ANDAL,0FH;取低4位CMPAL,0AHJBC3ADDAL,07HC3:ADDAL,30HMOVDL,AL;showcharacterMOVAH,02HINT21HMOVDX,OFFSETMSG1MOVAH,09HINT21HLOP:MOVAH,08HINT21HCMPAL,51HJEexitCMPAL,71HJEexitJMPGAJMPLOPEXIT:MOVAX,4C00H;gobacktodosINT21HCODEENDSendstart实验二数码转换实验实验目的(1)掌握不同进制数及编码相互转换的程序设计方法。(2)掌握运算类指令编程及调试方法。(3)掌握循环程序的设计方法。实验设备PC机一台。实验内容及说明(1)重复从键盘输入不超过5位的十进制数,按回车键结束输入;(2)将该十进制数转换成二进制数;结果以2进制数的形式显示在屏幕上;(3)如果输入非数字字符,则报告出错信息,重新输入;(4)直到输入“Q”或‘q’时程序运行结束。(5)键盘输入一字符串,以空格结束,统计其中数字字符的个数,并在屏幕显示。考核方式:完成实验内容(1)(2)(3)(4)通过,完成实验内容(5)优秀。转换过程参考流程如图3-2-2所示。十进制数可以表示为:Dn*10n+Dn-1*10n-1+…+D0*100=Di*10i其中Di代表十进制数1、2、3、…、9、0。上式可以转换为:Di*10i=(((Dn*10n+Dn-1)*10+Dn-2)*10+…+D1)*10+D0由上式可归纳出十进制数转换为二进制数的方法:从二进制数的最高位Dn开始做乘10加次位的操作。依此类推,则可求出二进制数结果。表3-3-1数码转换对应关系十六进制BCD码二进制机器码ASCII码七段码共阳共阴00000000030H40H3FH10001000131H79H06H20010001032H24H5BH30011001133H30H4FH40100010034H19H66H50101010135H12H6DH60110011036H02H7DH70111011137H78H07H81000100038H00H7FH91001100139H18H67HA10141H08H77HB101142H03H7CHC110043H46H39HD110144H21H5EHE111045H06H79HF111146H0EH71H实验代码:DATASEGMENTMESDB0AH,0DH,'result:$'ERRORMESDB0AH,0DH,'ERROR!Inputanumber!:$'MSG1DB0AH,0DH,'input(pressq/Qtoexit):$''BUFDB30H,30H,30H,31H,35H,35H,36H,37HDB20HDUP(0)NDW0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVES,AXMOVDI,OFFSETBUFCLCA1:MOVAH,01HINT21HINCNCMPAL,'Q'JEexitCMPAL,'q'JEexitCMPAL,30HJBErrorInfoCMPAL,39HJAErrorInfoSTOSBJMPA1A0:MOVCX,NDECCXMOVBX,000AHMOVSI,OFFSETBUFMOVAH,0HMOVDX,0HLODSBCMPCX,1HJEA3SUBAL,30H;十进制DECCXA2:IMULBXMOVDX,AXLODSBMOVAH,0A3:SUBAL,30HADDAX,DXLOOPA2MOV[SI],AXMOVDX,OFFSETMESMOVAH,09HINT21HINCSI;显示高字节CALLSHOWDECSI;显示低字节CALLSHOWLOP:CMPAL,'Q'JEexitCMPAL,'q'JEexitCMPAL,'c'MOVDX,OFFSETMSG1MOVAH,09HINT21HANDN,00HJMPSTARTJEexitEXIT:MOVAX,4C00HINT21HErrorInfo:CMPN,1JEFALTCMPAL,13JEA0MOVDX,OFFSETERRORMESMOVAH,09HINT21HANDN,00HJMPA1FALT:MOVDX,OFFSETERRORMESMOVAH,09HINT21HANDN,00HJMPA1SHOWPROCNEARMOVAL,DS:[SI]ANDAL,0F0H;取高4位MOVCL,4SHRAL,CLCMPAL,0AH;是否是A以上的数JBC2ADDAL,07HC2:ADDAL,30HMOVDL,AL;showcharacterMOVAH,02HINT21HMOVAL,DS:[SI]ANDAL,0FH;取低4位CMPAL,0AHJBC3ADDAL,07HC3:ADDAL,30HMOVDL,AL;showcharacterMOVAH,02HINT21HRETSHOWENDPCODEENDSENDSTART实验三可编程定时器/计数器8254(8253)实验实验目的(1)掌握8254定时/计数器的编程方法。(2)学习8254的几种工作方式。(3)了解计数器的硬件连接及时序关系。实验内容(1)将32Hz的晶振频率作为8254的时钟输入,利用定时器8254产生1Hz的方波,用发光二极管显示输出结果(发光二极管闪烁)。(2)开关控制结束程序执行,发光二极管熄灭。(3)开关控制发光二极管闪烁的速度(输出不同频率的方波)。考核方式:完成实验内容(1)(2)通过,完成实验内容(3)优秀。实验原理1.8254工作原理8254是一种可编程的定时器/计数器芯片,它具有3个独立的16位计数器通道,每个计数器都可以按照二进制或二-十进制计数,每个计数器都有6种工作方式,计数频率可高达24MHz,芯片所有的输入输出都与TTL兼容。计数器都有6种工作方式:方式0—计数过程结束时中断;方式1—可编程的单拍脉冲;方式2—频率发生器;方式3—方波发生器;方式4—软件触发;方式5—硬件触发。6种工作方式主要有5点不同:一是启动计数器的触发方式和时刻不同;二是计数过程中门控信号GATE对计数操作的影响不同;三是OUT输出的波形不同;四是在计数过程中重新写入计数初值对计数过程的影响不同;五是计数过程结束,减法计数器是否恢复计数初值并自动重复计数过程的不同。8254管脚图:图3-3-1可编程定时器/计数器8254管脚图2.8254工作方式和编程根据片选信号CS及地址线A1、A0,8254具有四个端口地址。当A1A0=00时,选中的为0通道计数器;A1A0=01时,选中的为1通道计数器;A1A0为10时,选中的为2通道计数器;A1A0=11时,选中控制字寄存器。8253通道及操作地址分配如下表所示:CSRDWRA1A0操作00100读计数器000101读计数器100110读计数器200111无操作(禁止读)01000计数常数写入计数器001001计数常数写入计数器101010计数常数写入计数器201011写入方式控制字1XXXX禁止(三态)011XX不操作通过对控制字符寄存器写入控制字可设定8254的某一个通道的六种工作方式,其格式如下:D7D6D5D4D3D2D1D0SC1SC0RL1RL0M2M1M0BCDSC1、SC0用来选择计数器通道:SC1SC0选择通道00选中0通道计数器01选中1通道计数器10选中2通道计数器11非法RL1、RL0用来选择读计数值及向计数器送入数据的方式:RL1RL0读/输入选择00计数器锁存01只读/输入低字节10只读/输入高字节11先读/输入低字节,后读/输入高字节M2、M1、M0用来选择工作方式:M2M1M0工作方式000方式0001方式1X10方式2X11方式3100方式4101方式5BCD用来选择二进制计数及十进制计数。当此位为0时,为16位二进制计数器;当此位为1时,为4位二-十进制计数器。方式0为计数结束申请中断的方式。当方式控制字写入后,输出为低电平。在写入计数值后,计数器开始计数。计数器减到0后,输出变为高电平,此高电平信号一直维持到写入新的控制字,或写入新的计数值为止。此时可利用计数到0时,输出由低电平变为高电平的信号申请中断。如果在计数过程中写入新的计数值,则在写入第一个字节时中止计数,写入第二个字节时启动新的计数。方式1为单脉冲发生方式。输出的负脉冲宽度由计数值决定。在设定工作方式和写入计数值之后,输出为高电平。门控信号的上升沿使输出变为低电平,并开始计数。当计数结束时,输出为高电平,当门控信号为高电平时,计数器从最初计数值启动。由于计数器写入控制字后输出为高电平,当写入计数值后才开始并输出脉冲,因此也可通过写入计数值来实现软件同步。方式3为方波发生方式。类似于方式2,当计数值为偶数时,前N/2为高电平,后N/2为低电平。当计数值为奇数时,则(N+1)/2为高电平,(N-1)/2为低电平。方式4为软件触发脉冲方式。在写入控制字后,输出为高电平,写入计数值后开始计数。计数结束产生一个负脉冲,宽度为一个时钟周期。计数期间若写入新的计数值,不影响当前周期,但影响下一个计数周期。在计数期间如门控信号变为低电平,计数停止。方式5为硬件触发选通方式。写入控制字和计数值后,输出保持高电平,在门控信号的上升沿开始计数,计数结
本文标题:03091424刘洋微机实验报告
链接地址:https://www.777doc.com/doc-4487836 .html