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

下载本文档

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

文档简介

1、 西安电子科技大学 实验报告课程名称微机系统实验成绩实验学时16学时评语: 指导教师: 年 月 日班 级: 1303018 学 号:姓 名: 李胜东 地 点: EII-312 批 次: 第 批 时 间: 2015.11-2015.12 实验一 汇编语言编程实现1.实验目的(1)掌握汇编语言的编程方法(2)掌握DOS功能调用的使用方法(3)掌握汇编语言程序的调试运行过程2.实验内容(1)将指定数据区的字符串数据以ASCII码形式显示在屏幕上,并通过DOS功能调用完成必要提示信息的显示。(2)在屏幕上显示自己的学号姓名信息。(3)循环从键盘读入字符并回显在屏幕上,然后显示

2、出对应字符的ASCII码,直到输入”Q”或“q”时结束。实验中使用的DOS功能调用: INT 21H表3-1-1 显示实验中可使用DOS功能调用AH 值功 能调 用 参 数结 果1键盘输入并回显AL=输出字符2显示单个字符(带Ctrl+Break检查)DL=输出字符光标在字符后面6显示单个字符(无Ctrl+Break检查)DL=输出字符光标在字符后面8从键盘上读一个字符AL=字符的ASCII码9显示字符串DS:DX=串地址,$为结束字符光标跟在串后面4CH返回DOS系统AL=返回码3.实验步骤及原理(1)运行QTHPCI软件,根据实验内容编写程序,参考程序流程如下图所示。(2)使用“项目”菜单

3、中的“编译”或“编译连接”命令对实验程序进行编译、连接。(3)“调试”菜单中的“进行调试”命令进入Debug调试,观察调试过程中数据传输指令执行后各寄存器及数据区的内容。按F9连续运行。(4)更改数据区的数据,考察程序的正确性。4.实验源代码DATA SEGMENTNUMBERDB 'SNO#39;,0AH,'NAME:lishengdong',0DH,0AH,'$'0DH(回车)0AH(换行)24H($)结束MSG1DB 0AH,0DH,'If you want to leave,please input: q or

4、Q ',0AH,0DH,'$'MSG2DB 0AH,0DH,0AH,0DH,'Input: $'RESULTDB 0AH,0DH,'ASCII is: $'SDDB ' 'DATAENDSCODESEGMENT ASSUMECS:CODE,DS:DATASTART: MOV SI,OFFSET DATA MOV CX,5 A: MOV AL,DS:SI AND AL,0F0H CMP AL,0A0H JB A1 ADD AL,07H A1: SHR AL,1 SHR AL,1 SHR AL,1 SHR AL,1 OR AL

5、,30H MOV AH,02H MOV DL,AL INT 21H MOV AL,DS:SI AND AL,0FH CMP AL,0AH JB A2 ADD AL,07H A2: OR AL,30H MOV AH,02H MOV DL,AL INT 21H INC SI LOOP A MOV AX,DATA MOVDS,AXMOV DX,OFFSET NUMBER MOV AH,09HINT 21H MOV DX,OFFSET MSG1MOVAH,09HINT 21H C1:MOV DX,OFFSET MSG2 MOV AH,09H INT 21H MOV AH,01HINT 21HCMP A

6、L,'Q'JZ EXITCMP AL,'q'JZ EXITMOV SD,ALMOV DX,OFFSET RESULT MOV AH,09HINT 21H MOVSI,OFFSET SD MOVAL,DS:SIANDAL,0F0HMOVCL,4SHRAL,CLCMPAL,0AHJBC2ADDAL,07H C2:ADDAL,30HMOVDL,ALMOVAH,02HINT21HMOVAL,DS:SIANDAL,0FHCMPAL,0AHJBC3ADD AL,07HC3:ADDAL,30HMOVDL,ALMOVAH,02HINT21Hloop C1EXIT:MOVAX,4

7、C00HINT21HCODEENDSENDSTART实验二 数码转换实验1.实验目的(1)掌握不同进制数及编码相互转换的程序设计方法。(2)掌握运算类指令编程及调试方法。(3)掌握循环程序的设计方法。2.实验内容 (1). 重复从键盘输入不超过5位的十进制数,按回车键结束输入;(2).将该十进制数转换成二进制数;结果以2进制数的形式显示在屏幕上;(3). 如果输入非数字字符,则报告出错信息,重新输入;(4). 直到输入“Q”或q时程序运行结束。(5). 键盘输入一字符串,以空格结束,统计其中数字字符的个数,在屏幕显示3.实验原理 十进制数可以表示为:Dn*10n+Dn-1*10n-1+D0*1

8、00=S Di*10i 其中Di代表十进制数1、2、3、9、0。 上式可以转换为:S Di*10i=(Dn*10+Dn-1)*10+ Dn-2)*10+ D1)*10+ D0 由上式可归纳出十进制数转换为二进制数的方法:从十进制数的最高位Dn开始做乘10加次位的操作,依此类推,则可求出二进制数结果(1)运行QTHPCI软件,根据实验内容编写程序,参考程序流程如图3-1-1所示。(2)使用“项目”菜单中的“编译”或“编译连接”命令对实验程序进行编译、连接。(3)“调试”菜单中的“进行调试”命令进入Debug调试,观察调试过程中数据传输指令执行后各寄存器及数据区的内容。按F9连续运行(4)更改数据

9、区的数据,考察程序的正确性。(1) 表3-3-1 数码转换对应关系十六进制BCD码二进制机器码ASCII码七段码共阳共阴00000000030H40H3FH10001000131H79H06H20010001032H24H5BH30011001133H30H4FH40100010034H19H66H50101010135H12H6DH60110011036H02H7DH70111011137H78H07H81000100038H00H7FH91001100139H18H67HA10141H08H77HB101142H03H7CHC110043H46H39HD110144H21H5EHE1110

10、45H06H79HF111146H0EH71H (2)十进制ASCII码转换为二进制数流程图4.实验源代码MYSTACKSEGMENTPARA 'STACK' DB 100 DUP(?)MYSTACKENDSDATA SEGMENT PARA 'DATA'BUF DB 0AH,0DH,'Please input a number:$' B_X DB 10 QU DB 'If you want to leave,please input Q and q.',0DH,0AH,'$' ER DB 'ERROR I

11、NPUT',0DH,0AH,'$' SUM DB 41DATA ENDSCODE SEGMENT PARA 'CODE' ASSUME DS:DATA,SS:MYSTACK,CS:CODESTART : MOV AX,DATA MOV DS,AX LEA DX,BUF MOV AH,9 INT 21H LEA DX,QU MOV AH,9 INT 21H MOV BX,0 MOV AX,0INPUT: MOV AH,1 INT 21H CMP AL,0DH JZ BINARY CMP AL,'q' JZ EXIT CMP AL,'

12、Q' JZ EXIT CMP AL,'1' JB ERROR CMP AL,'9' JA ERROR CMP AL,1BH JE EXIT AND AL,0FH CBW XCHG AX,BX MUL B_X ADD BX,AX JMP INPUTBINARY: MOV AH,2 MOV DL,0AH INT 21H MOV CX,16DSIP: MOV DL,0 ROL BX,1 RCL DL,1 OR DL,30H MOV AH,02H INT 21H LOOP DSIP MOV DL,'B' MOV AH,2 INT 21HEXIT:

13、 INC SUM CMP SUM,'0' JNE START MOV AH,4CH INT 21H LOOP STARTERROR:LEA DX,ER MOV AH,9 INT 21H MOV CX,16 JMP INPUTCODE ENDS END START5.实验截图实验三 基本IO口扩展实验1、 实验目的1. 了解TTL芯片扩展简单I/O口的方法。2. 掌握数据输入输出程序编制的方法。二、实验内容本实验要求用74LS244作为输入口,读取开关状态,并将此状态通过74LS273连到发光二极管显示。具体实验内容如下:1.开关Yi为低电平时对应的发光二极管亮,Yi为高电平时对

14、应的发光二极管灭。2.当开关Yi全为高电平时,发光二极管Qi从左至右轮流点亮。3.当开关Yi全为低电平时,发光二极管Qi从右至左轮流点亮。4.自主设计控制及显示模式,完成编程调试,演示实验结果。三、实验原理 74LS244是一种三态输出的8总线缓冲驱动器,无锁存功能,当G为低电平,Ai信号传送到Yi,当为高电平时,Yi处于禁止高阻状态;  74LS273是一种带清除功能的8D触发器, 1D8D为数据输入端,1Q8Q为数据输出端,正脉冲触发,低电平清除,常用作8位地址锁存器。4、 实验原理图五、实验步骤1.按照实验连线图连接: 244的CS接到ISA总线接口模块的0000H,Y7Y0开

15、关K1K8。 273的CS接到ISA总线接口模块的0020H,Q7Q0发光二极管L1L8。 该模块的WR、RD分别连到ISA总线接口模块的IOWR、IORD。 该模块的数据(AD0AD7)连到ISA总线接口模块的数据(LD0LD7)。2.编写实验程序,编译链接,运行程序3. 拨动开关,观察发光二极管的变化。6、 实验源代码主要代码: (1)右移: 18 LOP: MOV DX,0DF00H IN AL,DX CMP AL,0FFH JE C0 ;JE EXIT MOV DX,0DF20H OUT DX,AL JMP LOP C0: MOV AL,07FH JMP C1 C1: ROR AL,1

16、 MOV DX,0DF20H OUT DX,AL CALL DELAY call break CMP AL,0FEH JE EXIT JMP C1 IN AL,DX CMP AL,080H JMP EXIT (2) 循环左移: LOP: MOV DX,0DF00H IN AL,DX CMP AL,00H JE C0 JE EXIT MOV DX,0DF20H OUT DX,AL JMP LOP C0: MOV AL,0FEH JMP C1 C1: ROl AL,1 MOV DX,0DF20H OUT DX,AL CALL DELAY call break CMP AL,0FEH JE EXIT

17、 JMP C1 IN AL,DX CMP AL,080H JMP EXIT 实验四 可编程并行口8255实验1.实验目的(1).了解可编程并行接口芯片8255的内部结构。(2).掌握工作方式、初始化编程及应用。2.实验内容(1).流水灯实验:利用8255的A口、B口循环点亮发光二极管。(2).交通灯实验:利用8255的A口模拟交通信号灯。(3).I/O输入输出实验:利用8255的A口读取开关状态,8255的B口把状态送发光二极管显示。完成实验内容(1)(2)(3)其中之一通过。3.实验说明及原理1、8255的内部结构(1)数据总线缓冲器:这是一个双向三态的8位数据缓冲器,它是8255A与微机系

18、统数据总线的接口。输入输出的数据、CPU输出的控制字以及CPU输入的状态信息都是通过这个缓冲器传送的。(2)三个端口A,B和C:A端口包含一个8位数据输出锁存器和缓冲器,一个8位数据输入锁存器。B端口包含一个8位数据输入/输出锁存器和缓冲器,一个8位数据输入缓冲器。C端口包含一个8位数据输出锁存器及缓冲器,一个8位数据输入缓冲器(输入没有锁存器)。(3)A组和B组控制电路:这是两组根据CPU输出的控制字控制8255工作方式的电路,它们对于CPU而言,共用一个端口地址相同的控制字寄存器,接收CPU输出的一字节方式控制字或对C口按位复位字命令。方式控制字的高5位决定A组工作方式,低3位决定B组的工

19、作方式。对C口按位复位命令字可对C口的每一位实现置位或复位。A组控制电路控制A口和C口上半部,B组控制电路控制B口和C口下半部。(4)读写控制逻辑:用来控制把CPU输出的控制字或数据送至相应端口,也由它来控制把状态信息或输入数据通过相应的端口送到CPU。2、8255A的工作方式方式0基本输入输出方式;方式1选通输入输出方式;方式2双向通输入输出方式3、8255A的状态字,如图6-3-1所示4、8255A的控制字,如图6-3-2所示4.实验原理图5.实验步骤流水灯实验(1) 实验连线Ø 该模块的WR、RD分别连到ISA总线接口模块的IOWR、IORD。Ø 该模块的数据(AD0

20、AD7)、地址线(A0A7)分别连到ISA总线接口模块的数据(LD0LD7)、地址线(LA0LA7)。Ø 8255模块选通线CE连到ISA总线接口模块的0000H。Ø 8255的PA0PA7连到发光二极管的L0L7;8255的PB0PB7连到发光二极管的L8L15。(2) 运行程序,观察发光二极管。 6.实验源代码主要代码: MOVRA,7FH MOVLB,0FEH READ1:MOVAX,80H;读取开关状态MOV DX,LS8255WOUT DX,AXMOV AL,RAROR AL,1MOV RA,AL ;循环右移的结果MOV DX,LS8255OUTDX,ALCALL

21、 DELAYCALLBREAKCALL DELAYCALLBREAKJMP READ1MY_PROCENDp;*;/*按任意键退出*/;* BREAK PROC NEAR;按任意键退出PUSHFPUSHAXPUSHDX MOV AH,06H MOV DL,0FFH INT 21H JE RETURNMOV AX,4C00H INT 21HRETURN:POPDXPOPAXPOPFRETBREAK ENDP;*;/*延时程序*/;*DELAY PROC NEAR;延时程序PUSHFPUSHDXPUSHCXMOV DX,DELAY_SETD1: MOV CX,-1D2: DEC CX JNZ D2

22、 DECDX JNZD1 POPCX POPDX POPF RETDELAY ENDpDELAY1 PROC NEAR;延时程序PUSHFPUSHDXPUSHCXMOV DX,DELAY_SET1D11: MOV CX,-1D22: DEC CX JNZ D2 DECDX JNZD1 POPCX POPDX POPF RETDELAY1 ENDpLED灯按照红绿灯运行的顺序闪烁。 READ1:MOVAX,80H;设置初始状态字MOV DX,LS8255WOUT DX,AXMOV DX,LS8255MOV AL,0DEHOUTDX,ALCALL DELAYCALLBREAKCALL DELAYC

23、ALLBREAKCALL DELAYCALLBREAKMOV AL,0BBHMOV DX,LS8255OUTDX,ALCALL DELAYCALLBREAKMOV AL,0EDHMOV DX,LS8255OUTDX,ALCALL DELAYCALLBREAKCALL DELAYCALLBREAKCALL DELAYCALLBREAKMOV AL,0BBHMOV DX,LS8255OUTDX,ALCALL DELAYCALLBREAKCALL DELAYCALLBREAKJMP READ1MY_PROCENDpBREAK PROC NEAR;按任意键退出PUSHFPUSHAXPUSHDX MOV

24、 AH,06H MOV DL,0FFH INT 21H JE RETURNMOV AX,4C00H INT 21HRETURN:POPDXPOPAXPOPFRETBREAK ENDPDELAY PROC NEAR;延时程序PUSHFPUSHDXPUSHCXMOV DX,DELAY_SETD1: MOV CX,-1D2: DEC CX JNZ D2 DECDX JNZD1 POPCX POPDX POPF RETDELAY ENDpMY_CODE ENDS实验五 可编程定时器/计数器8254实验1.实验目的(1)掌握8254定时/计数器的编程方法。(2)学习8254的几种工作方式。(3)了解计数

25、器的硬件连接及时序关系。2.实验内容(1)将32Hz的晶振频率作为8254 的时钟输入,利用定时器 8254 产生 1Hz 的方波,用发光二极管显示输出结果(发光二极管闪烁)。(2)开关控制结束程序执行,发光二极管熄灭。3.实验说明及原理(1) 8254工作原理8254是一种可编程的定时器/计数器芯片,它具有3个独立的16位计数器通道,每个计数器都可以按照二进制或二-十进制计数,每个计数器都有6种工作方式,计数频率可高达24MHz,芯片所有的输入输出都与TTL兼容。计数器都有6种工作方式:方式0计数过程结束时中断;方式1可编程的单拍脉冲;方式2频率发生器;方式3方波发生器;方式4软件触发;方式

26、5硬件触发。6种工作方式主要有5点不同:一是启动计数器的触发方式和时刻不同;二是计数过程中门控信号GATE对计数操作的影响不同;三是OUT输出的波形不同;四是在计数过程中重新写入计数初值对计数过程的影响不同;五是计数过程结束,减法计数器是否恢复计数初值并自动重复计数过程的不同。8254管脚图:(2)8254工作方式和编程根据片选信号CS及地址线A1、A0,8254具有四个端口地址。当A1A0=00时,选中的为0通道计数器;A1A0=01时,选中的为1通道计数器;A1A0为10时,选中的为2通道计数器;A1A0=11时,选中控制字寄存器。8253通道及操作地址分配如下表所示:CSRDWRA1A0

27、操作00100读计数器000101读计数器100110读计数器200111无操作(禁止读)01000计数常数写入计数器001001计数常数写入计数器101010计数常数写入计数器201011写入方式控制字1XXXX禁止(三态)011XX不操作通过对控制字符寄存器写入控制字可设定8254的某一个通道的六种工作方式,其格式如下:D7D6D5D4D3D2D1D0SC1SC0RL1RL0M2M1M0BCDSC1、SC0用来选择计数器通道:SC1SC0选择通道00选中0通道计数器01选中1通道计数器10选中2通道计数器11非法RL1、RL0用来选择读计数值及向计数器送入数据的方式:RL1RL0读/输入选

28、择00计数器锁存01只读/输入低字节10只读/输入高字节11先读/输入低字节,后读/输入高字节M2、M1、M0用来选择工作方式:M2M1M0工作方式000方式0001方式1X10方式2X11方式3100方式4101方式5BCD用来选择二进制计数及十进制计数。当此位为0时,为16位二进制计数器;当此位为1时,为4位二-十进制计数器。方式0为计数结束申请中断的方式。当方式控制字写入后,输出为低电平。在写入计数值后,计数器开始计数。计数器减到0后,输出变为高电平,此高电平信号一直维持到写入新的控制字,或写入新的计数值为止。此时可利用计数到0时,输出由低电平变为高电平的信号申请中断。如果在计数过程中写

29、入新的计数值,则在写入第一个字节时中止计数,写入第二个字节时启动新的计数。方式1为单脉冲发生方式。输出的负脉冲宽度由计数值决定。在设定工作方式和写入计数值之后,输出为高电平。门控信号的上升沿使输出变为低电平,并开始计数。当计数结束时,输出为高电平,当门控信号为高电平时,计数器从最初计数值启动。由于计数器写入控制字后输出为高电平,当写入计数值后才开始并输出脉冲,因此也可通过写入计数值来实现软件同步。方式3为方波发生方式。类似于方式2,当计数值为偶数时,前N/2为高电平,后N/2为低电平。当计数值为奇数时,则(N+1)/2为高电平,(N-1)/2为低电平。方式4为软件触发脉冲方式。在写入控制字后,

30、输出为高电平,写入计数值后开始计数。计数结束产生一个负脉冲,宽度为一个时钟周期。计数期间若写入新的计数值,不影响当前周期,但影响下一个计数周期。在计数期间如门控信号变为低电平,计数停止。方式5为硬件触发选通方式。写入控制字和计数值后,输出保持高电平,在门控信号的上升沿开始计数,计数结束产生一个时钟周期的负脉冲。在计数过程中可重新启动,在门控信号的上升沿重新计数。(3)8254编程方法对8254的编程分两部分:(1) 向控制字寄存器写入方式控制字。(2) 向规定的通道写入计数值。在写入计数值时,应向设定的通道写入。而且必须按控制字所规定的一个或两个字节的计数长度写入。由于在8254内部每个计数器

31、均有自己的方式控制字寄存器,因此在写入控制字及计数值时不一定按0通道、1通道、2通道的次序,而可按编程时的方便来决定。在将8254作为计数器时,可以在计数过程中将计数值读出来。读数时可按控制字规定的方式向该通道/读出一个字节或两个字节的计数值。为保证读数的正确性,可通过门控信号使其停止计数,或控制外部脉冲源禁止输入。控制的另一个办法是向控制字寄存器写入一锁存计数值的命令,使当前的计数值锁存下来。然后用读通计数值的方法将其读出。锁存计数操作的格式如下:SC1SC000xxxxSC1、SC0用来指定被锁存的计数器,分别为00、01、10。4.实验步骤(1) 按照实验内容设计实验连线图,正确连接线路

32、。(2) 编写实验程序,调试运行程序。(3) 观察发光二极管闪烁情况,修改程序使8254输出不同频率的方波信号。5.实验代码 MOVDX,P8254_MODE;写入方式控制字MOVAL,37H;计数器0,先读写低位,后读写高位,OUTDX,AL;方式3,BCD码计数MOVDX,P8254_T0MOVAL,20H;初值低8位OUTDX,ALMOVAL,00H;初值高8位OUTDX,ALNEXT:CALLBREAKJMPNEXTMY_PROCENDp;*;/*按任意键退出*/;*; BREAK PROC NEAR;按任意键退出PUSHFPUSHAXPUSHDX MOV AH,06H MOV DL,

33、0FFH INT 21H JE RETURNEXEC_EXIT:MOV AX,4C00H INT 21HRETURN:POPDXPOPAXPOPFRETBREAK ENDP实验六 键盘显示实验一、实验目的1. 熟悉并掌握系统中扩展键盘与显示接口的方法。2. 掌握键盘显示的工作原理和编程的方法。二、实验内容1. 编写键盘扫描程序,当有某一键按下时,将该键按照定义的字符(0-F)显示在计算机屏幕上。2. 编写LED驱动程序,在四个LED上循环显示数字 0 - 9。3. 编写程序,由键盘输入相应的数据在LED显示。在初始状态,最高位闪烁显示P,按一个键在LED上显示该键值(4个数码管同时显示一个值)

34、。三、实验原理1.键盘接口矩阵式键盘由行线和列线组成,按键位于行、列的交叉点上,一个4*4的行、列结构可以构成一个含有16个按键的键盘。节省I/O口。行、列线分别接到按键的两端。行线通过上拉电阻接到+5V上。按键的识别一般采用扫描法。让所有的列线处于低电平,当有键按下时,按键所在的行电平将被拉成低电平,进一步判定哪一列的键被按下,可在某一时刻只让一条列线处于低电平,而其余所有列线处于高电平。2.七段数码管显示方法静态显示方法:当显示器显示某一字符时,相应的发光二极管恒定地导通或截止。这种显示方式的各位相互独立,公共端恒定接地(共阴极)或接+5V(共阳极)。每位的8段(adp)分别与一个8位I/

35、O口地址相连,I/O只要有段码输出相应的字符即显示出来,并保持不变,直到I/O输出新的数码。采用静态显示方式,较小的电流就能得到较高的亮度,但占用的口线较多,适合于显示器位数较少的场合,当显示位数较多时一般采用动态显示。动态显示方法:就是一位一位轮流点亮各位显示器(位扫描)。通常各位显示器的段选码相应并联在一起,由一个8位的I/O口控制。而各位的位选线(共阴或共阳极)分别由相应的I/O口线的不同位控制,分时选通。采用动态扫描即在同一时刻只选通一个显示器,并送出相应的段码,而在下一时刻再选通另一个显示器,并送出相应的段码,如此循环下去,就可以使各位显示出将要显示的字符,虽然这些字符在不同时刻分别显示的,但由于人眼有视觉暂留现象,只要每位显示间隔足够短,就可以给人同时显示的感觉。四、实验原理图五、实验步骤 1.按照键盘与显示实验连线图连接电路 8255模块的WR、RD分别连到ISA总线接口的IOWR、IORD。8255模块的数据线(AD0AD7)地址线(A0A7)分别连到ISA

温馨提示

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

评论

0/150

提交评论