西电微机原理实验报告_第1页
西电微机原理实验报告_第2页
西电微机原理实验报告_第3页
西电微机原理实验报告_第4页
西电微机原理实验报告_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

..微机系统实验报告班级:031214学号:03121370__孔玲玲地点:E-II-312时间:第二批..实验一汇编语言编程实验一、实验目的掌握汇编语言的编程方法掌握DOS功能调用的使用方法掌握汇编语言程序的调试运行过程二、实验设备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=返回码四、实验步骤运行QTHPCI软件,根据实验内容编写程序,参考程序流程如图3-1-1所示。使用"项目"菜单中的"编译"或"编译连接"命令对实验程序进行编译、连接。"调试"菜单中的"进行调试"命令进入Debug调试,观察调试过程中数据传输指令执行后各寄存器及数据区的内容。按F9连续运行。更改数据区的数据,考察程序的正确性。实验程序DATASEGMENTBUFFERDB'03121370konglingling:',0AH,0DH,'$'BUFFER2DB'aAbBcC','$'BUFFER3DB0AH,0DH,'$'DATAENDSCODESEGMENT ASSUMECS:CODE,DS:DATASTART: MOVAX,DATA MOVDS,AX movah,09h movDX,OFFSETBUFFER int21h MOV SI,OFFSETBUFFER2lab1: cmpBYTEPTR[SI],'$' jelab2 MOV AL,DS:[SI] AND AL,0F0H ;取高4位 MOV CL,4 SHR AL,CL CMP AL,0AH ;是否是A以上的数 C2 ADD AL,07H C2: ADD AL,30H MOV DL,AL ;showcharacter MOV AH,02H INT 21H MOV AL,DS:[SI] AND AL,0FH ;取低4位 CMP AL,0AH C3 ADD AL,07HC3: ADD AL,30H MOV DL,AL ;showcharacter MOV AH,02H INT 21H addSI,1 jmplab1lab2: movah,09h movDX,OFFSETBUFFER3 int21h movah,01h int21h cmpal,'q' jelab3 mov BL,AL AND AL,0F0H ;取高4位 MOV CL,4 SHR AL,CL CMP AL,0AH ;是否是A以上的数 C4 ADD AL,07H C4: ADD AL,30H MOV DL,AL ;showcharacter MOV AH,02H INT 21H MOVAL,BL AND AL,0FH ;取低4位 CMP AL,0AH C5 ADD AL,07HC5: ADD AL,30H MOV DL,AL ;showcharacter MOV AH,02H INT 21H jmplab2 lab3: movah,4ch int21hCODEENDSendSTART实验结果实验二数码转换实验一、实验目的掌握不同进制数及编码相互转换的程序设计方法。掌握运算类指令编程及调试方法。掌握循环程序的设计方法。二、实验设备PC机一台。三、实验内容及说明重复从键盘输入不超过5位的十进制数,按回车键结束输入;将该十进制数转换成二进制数;结果以2进制数的形式显示在屏幕上;如果输入非数字字符,则报告出错信息,重新输入;直到输入"Q"或‘q’时程序运行结束。键盘输入一字符串,以空格结束,统计其中数字字符的个数,并在屏幕显示。考核方式:完成实验内容〔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*10+Dn-1*10+Dn-2*10+…+D1*10+D0由上式可归纳出十进制数转换为二进制数的方法:从二进制数的最高位Dn开始做乘10加次位的操作。依此类推,则可求出二进制数结果。表3-3-1数码转换对应关系十六进制BCD码二进制机器码ASCII码七段码共阳共阴00000000030H40H3FH10001000131H79H06H20010001032H24H5BH30011001133H30H4FH40100010034H19H66H50101010135H12H6DH60110011036H02H7DH70111011137H78H07H81000100038H00H7FH91001100139H18H67HA10141H08H77HB101142H03H7CHC110043H46H39HD110144H21H5EHE111045H06H79HF111146H0EH71H实验程序; PAGE 60,132;本实验将输入的ASCII码转换为二进制,要求输入位数小于5DATA SEGMENTMES DB 0AH,0DH,'TheAsciicodeofDecimalcodeare:$'MSG1DB0AH,0DH,0AH,0DH,0AH,0DH,'PleaseInput<Exit:q/Q>:$'MSG2DB0AH,0DH,'Input:$'MSG3DB0AH,0DH,'InputError,Pleaseinputagain!',0AH,0DH,'$';BINDB2DUP<0>BUF DB 30H,30H,30H,31H,35H DB 10HDUP<0>N DW 0DATA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV ES,AX MOV DI,OFFSETBUF CLC MOVDX,OFFSETMSG1MOVAH,09H;显示字符串INT21HMOV DX,OFFSETMSG2 MOV AH,09H INT 21HA1: MOV AH,01H ;接收键盘输入 INT 21H CMPAL,'Q'JZEXITCMPAL,'q'JZEXIT CMPAL,39H JAERROR INC N STOSB ;将输入数据存放在BUF缓冲区中 CMP AL,13 JNE A1 MOV CX,N DEC CX MOV BX,000AH MOV SI,OFFSETBUF MOV AH,0 MOV DX,0 LODSB CMP CX,1 JE A3 SUB AL,30H ;将BUF中数据转换为二——十进制数 DEC CXA2: IMUL BX MOV DX,AX LODSB MOV AH,0A3: SUB AL,30H ADD AX,DX LOOP A2 MOV [SI],AX MOV DX,OFFSETMES MOV AH,09H INT 21H INC SI ;显示高字节 CALL SHOW DEC SI ;显示低字节 CALL SHOW MOVN,0 LOOPSTARTSHOW PROC NEAR MOV AL,DS:[SI] AND AL,0F0H ;取高4位 MOV CL,4 SHR AL,CL CMP AL,0AH ;是否是A以上的数 C2 ADD AL,07H C2: ADD AL,30H MOV DL,AL ;showcharacter MOV AH,06H INT 21H MOV AL,DS:[SI] AND AL,0FH ;取低4位 CMP AL,0AH C3 ADD AL,07HC3: ADD AL,30H MOV DL,AL ;showcharacter MOV AH,06H INT 21H RETSHOW ENDPEXIT:MOVAX,4C00HINT21HERROR:MOV DX,OFFSETMSG3 MOV AH,09H INT 21H JMPSTARTCODE ENDS END START实验结果实验三基本IO口扩展实验一、实验目的了解TTL芯片扩展简单I/O口的方法,掌握数据输入输出程序编制的方法。二、实验内容说明74LS244是一种三态输出的8总线缓冲驱动器,无锁存功能,当G为低电平时,Ai信号传送到Yi,当为高电平时,Yi处于禁止高阻状态。其引脚图如下:74LS273是一种带清除功能的8D触发器,1D~8D为数据输入端,1Q~8Q为数据输出端,正脉冲触发,低电平清除,常用作8位地址锁存器。其引脚图如下:本实验要求用74LS244作为输入口,读取开关状态,并将此状态通过74LS273连接到发光二极管显示。具体实验内容如下:当开关Yi为低电平时对应的发光二极管点亮,Yi为高电平时对应的发光二极管灭。当开关Yi全为高电平时,发光二极管Qi从左至右轮流点亮。当开关Yi全为低电平时,发光二极管Qi从右至左轮流点亮。自主设计控制及显示模式,完成编程调试,演示实验结果。编程方法见IO〔样例程序.txt.<在编译环境下程序名后缀为.asm且不能含有汉字>考核方式:完成实验内容〔1〔2〔3通过。完成实验内容〔4优秀三、实验原理图图3-2-174LS244与74LS273扩展I/O口原理图实验连线图:图3-2-2扩展I/O口连线图四、实验步骤〔1实验连线:244的CS——ISA总线接口模块的0000H,Y7—Y0——开关K1—K8。273的CS——ISA总线接口模块的0020H,Q7—Q0——发光二极管L1—L8。该模块的WR、RD分别连到ISA总线接口模块的IOWR、IORD。该模块的数据〔AD0~AD7连到ISA总线接口模块的数据〔LD0~LD7。〔2编写实验程序,编译链接,运行程序〔3拨动开关,观察发光二极管的变化。五、实验程序1、笨方法实现〔主要代码:START:MOVAX,MY_DATAMOVDS,AXMOVAX,MY_STACKMOVSS,AXLOP:MOVDX,0DF00HINAL,DXCMPAL,00HJEC0CMPAL,0FFHJEC3;JEEXITMOVDX,0DF20HOUTDX,ALJMPLOPC0:MOVAL,0FEHJMPC1C3:MOVAL,07FHJMPC2C1:;ROLAL,1;MOVDX,0DF20H;OUTDX,AL;CALLDELAY;CALLBREAK;JEC1;CMPAL,0FEH;JEEXIT;JMPC1;MOVAL,0FCHMOVDX,0DF20HOUTDX,ALCALLDELAYCALLBREAKMOVAL,0FDHMOVDX,0DF20HOUTDX,ALCALLDELAYCALLBREAKMOVAL,0FBHMOVDX,0DF20HOUTDX,ALCALLDELAYCALLBREAKMOVAL,0F7HMOVDX,0DF20HOUTDX,ALCALLDELAYCALLBREAKMOVAL,0EFHMOVDX,0DF20HOUTDX,ALCALLDELAYCALLBREAKMOVAL,0DFHMOVDX,0DF20HOUTDX,ALCALLDELAYCALLBREAKMOVAL,0BFHMOVDX,0DF20HOUTDX,ALCALLDELAYCALLBREAKMOVAL,07FHMOVDX,0DF20HOUTDX,ALCALLDELAYCALLBREAKMOVAL,0FFHMOVDX,0DF20HOUTDX,ALCALLDELAYCALLBREAKCALLDELAYCALLBREAKJMPLOP;CALLDELAY;CALLBREAKINAL,DXCMPAL,080HJMPEXITC2: MOVDX,0DF20HOUTDX,ALCALLDELAYCALLBREAKMOVAL,0BFHMOVDX,0DF20HOUTDX,ALCALLDELAYCALLBREAKMOVAL,0DFHMOVDX,0DF20HOUTDX,ALCALLDELAYCALLBREAKMOVAL,0EFHMOVDX,0DF20HOUTDX,ALCALLDELAYCALLBREAKMOVAL,0F7HMOVDX,0DF20HOUTDX,ALCALLDELAYCALLBREAKMOVAL,0FBHMOVDX,0DF20HOUTDX,ALCALLDELAYCALLBREAKMOVAL,0FDHMOVDX,0DF20HOUTDX,ALCALLDELAYCALLBREAKMOVAL,0FEHMOVDX,0DF20HOUTDX,ALCALLDELAYCALLBREAKMOVAL,0FFHMOVDX,0DF20HOUTDX,ALCALLDELAYCALLBREAKCALLDELAYCALLBREAKJMPLOPINAL,DXCMPAL,080HJMPEXITEXIT:MOVAH,4CHINT21H循环左移右移实现:主要代码:〔1右移:LOP:MOVDX,0DF00HINAL,DXCMPAL,0FFHJEC0;JEEXITMOVDX,0DF20HOUTDX,ALJMPLOPC0:MOVAL,07FHJMPC1C1:RORAL,1MOVDX,0DF20HOUTDX,ALCALLDELAYcallbreak;CMPAL,0FEH;JEEXITJMPC1INAL,DXCMPAL,080HJMPEXIT〔2循环左移:LOP:MOVDX,0DF00HINAL,DXCMPAL,00HJEC0;JEEXITMOVDX,0DF20HOUTDX,ALJMPLOPC0:MOVAL,0FEHJMPC1C1:ROlAL,1MOVDX,0DF20HOUTDX,ALCALLDELAYcallbreak;CMPAL,0FEH;JEEXITJMPC1INAL,DXCMPAL,080HJMPEXIT实验四可编程并行接口8255实验一、实验目的了解可编程并行接口芯片8255的内部结构、工作方式、初始化编程及应用。二、实验内容流水灯实验:利用8255的A口、B口循环点亮发光二极管。交通灯实验:利用8255的A口模拟交通信号灯。I/O输入输出实验:利用8255的A口读取开关状态,8255的B口把状态送发光二极管显示。通过开关控制交通红绿灯的亮灭。通过开关控制流水灯的循环方向和循环方式。考核方式:完成实验内容〔1〔2〔3其中之一通过,完成实验内容〔4或〔5优秀。三、实验说明1、8255A的内部结构〔1数据总线缓冲器:这是一个双向三态的8位数据缓冲器,它是8255A与微机系统数据总线的接口。输入输出的数据、CPU输出的控制字以及CPU输入的状态信息都是通过这个缓冲器传送的。〔2三个端口A,B和C:A端口包含一个8位数据输出锁存器和缓冲器,一个8位数据输入锁存器。B端口包含一个8位数据输入/输出锁存器和缓冲器,一个8位数据输入缓冲器。C端口包含一个8位数据输出锁存器及缓冲器,一个8位数据输入缓冲器〔输入没有锁存器。〔3A组和B组控制电路:这是两组根据CPU输出的控制字控制8255工作方式的电路,它们对于CPU而言,共用一个端口地址相同的控制字寄存器,接收CPU输出的一字节方式控制字或对C口按位复位字命令。方式控制字的高5位决定A组工作方式,低3位决定B组的工作方式。对C口按位复位命令字可对C口的每一位实现置位或复位。A组控制电路控制A口和C口上半部,B组控制电路控制B口和C口下半部。〔4读写控制逻辑:用来控制把CPU输出的控制字或数据送至相应端口,也由它来控制把状态信息或输入数据通过相应的端口送到CPU。2、8255A的工作方式方式0—基本输入输出方式;方式1—选通输入输出方式;方式2—双向选通输入输出方式图6-3-18255方式1的状态字图6-3-28255方式2的状态字。图6-3-18255方式1的状态字图6-3-28255方式2的状态字3、8255A的状态字4、8255A的控制字表6-3-38255A方式控制字1D6D5D4D3D2D1D0特征位A组方式00=方式001=方式11X=方式2A口0=输出1=输入C口高4位0=输出1=输入B组方式0=方式01=方式1B口0=输出1=输入C口低4位0=输出1=输入表6-3-4按位置位/复位控制字0D6D5D4D3D2D1D0特征位不用位选择000=C口0位……111=C口7位0=复位1=置位四、实验原理图图6-3-5可编程并行接口8255电路五、实验步骤1、流水灯实验实验连线该模块的WR、RD分别连到ISA总线接口模块的IOWR、IORD。该模块的数据〔AD0~AD7、地址线〔A0~A7分别连到ISA总线接口模块的数据〔LD0~LD7、地址线〔LA0~LA7。8255模块选通线CE连到ISA总线接口模块的0000H。8255的PA0~PA7连到发光二极管的L0~L7;8255的PB0~PB7连到发光二极管的L8~L15。运行程序,观察发光二极管。图6-3-图6-3-6流水灯实验2、交通灯实验实验连线:该模块的WR、RD分别连到ISA总线接口模块的IOWR、IORD。该模块的数据〔AD0~AD7、地址线〔A0~A7分别连到ISA总线接口模块的数据〔LD0~LD7、地址线〔LA0~LA7。8255模块选通线CE连到ISA总线接口模块的0000H。8255的PA0-L7、PA1-L6、PA2-L5、PA3-L3、PA4-L2、PA5-L1。〔2运行程序,观察发光二极管。图6-3-7交通灯实验图6-3-7交通灯实验3、I/O输入输出实验实验连线该模块的WR、RD分别连到ISA总线接口模块的IOWR、IORD。该模块的数据〔AD0~AD7、地址线〔A0~A7分别连到ISA总线接口模块的数据〔LD0~LD7、地址线〔LA0~LA7。8255模块选通线CE连到ISA总线接口模块的0000H。8255的PA0~PA7接开关K0~K7,8255的PB0~PB7接发光二极管L0~L7。图6-3-8图6-3-8I/O输入输出实验实验程序主要程序:;*****************************************************************************; /*初始状态全为红灯*/;*****************************************************************************;ST0 PROC NEAR MOV AL,1BH OUT DX,AL CALL DELAY RETST0 ENDp ; ;*****************************************************************************; /*南北为绿灯,东西为红灯子程序*/;*****************************************************************************; ST1 PROC NEAR MOV DX,P8255_A MOV AL,33H OUT DX,AL CALL DELAY CALLBREAK CALL DELAY CALLBREAK CALL DELAY CALLBREAK RETST1 ENDp ; ;*****************************************************************************; /*南北红灯闪烁,东西为红灯子程序*/;*****************************************************************************; ST2 PROC NEAR MOV CX,5H ST20: MOV AL,2BH OUT DX,AL CALL DELAY MOV AL,3BH OUT DX,Al CALL DELAY LOOP ST20 RETST2 ENDp ; ;*****************************************************************************; /*南北为红灯,东西为绿灯子程序*/;*****************************************************************************;ST3 PROC NEAR MOV AL,1EH OUT DX,AL CALL DELAY CALLBREAK CALL DELAY CALLBREAK CALL DELAY CALLBREAK RETST3 ENDp ; ;*****************************************************************************; /*南北为红灯,东西黄灯闪烁子程序*/;*****************************************************************************; ST4 PROC NEAR MOV CX,5H ST40: MOV AL,1DH OUT DX,AL CALL DELAY MOV AL,1FH OUT DX,AL CALL DELAY LOOP ST40 RETST4 ENDp实验五可编程定时器/计数器8254〔8253实验一、实验目的〔1掌握8254定时/计数器的编程方法。〔2学习8254的几种工作方式。〔3了解计数器的硬件连接及时序关系。二、实验内容〔1将32Hz的晶振频率作为8254的时钟输入,利用定时器8254产生1Hz的方波,用发光二极管显示输出结果〔发光二极管闪烁。〔2开关控制结束程序执行,发光二极管熄灭。〔3开关控制发光二极管闪烁的速度〔输出不同频率的方波。考核方式:完成实验内容〔1〔2通过,完成实验内容〔3优秀。三、实验原理1.8254工作原理8254是一种可编程的定时器/计数器芯片,它具有3个独立的16位计数器通道,每个计数器都可以按照二进制或二-十进制计数,每个计数器都有6种工作方式,计数频率可高达10MHz,芯片所有的输入输出都与TTL兼容。计数器都有6种工作方式:方式0—计数过程结束时中断;方式1—可编程的单拍脉冲;方式2—频率发生器;方式3—方波发生器;方式4—软件触发;方式5—硬件触发。6种工作方式主要有5点不同:一是启动计数器的触发方式和时刻不同;二是计数过程中门控信号GATE对计数操作的影响不同;三是OUT输出的波形不同;四是在计数过程中重新写入计数初值对计数过程的影响不同;五是计数过程结束,减法计数器是否恢复计数初值并自动重复计数过程的不同。8254管脚图:图3-3-图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后,输出变为高电平,此高电平信号一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论