微机原理及接口技术实验报告 西安邮电_第1页
微机原理及接口技术实验报告 西安邮电_第2页
微机原理及接口技术实验报告 西安邮电_第3页
微机原理及接口技术实验报告 西安邮电_第4页
微机原理及接口技术实验报告 西安邮电_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

1、 西 安 邮 电 大 学 (计算机学院)微机原理与接口技术实验报告实验名称: 寻址方式与基本指令实验 专业名称: 班 级: 学生姓名: 学 号: 指导教师: 实验日期: 2017年10月31日寻址方式与基本指令实验1、实验目的1.1、熟悉80x86寻址方式及基本指令的功能,进一步理解和巩固课堂学习内容。1.2、掌握汇编语言程序设计上机过程, 掌握汇编语言源程序结构,为后续汇编语言程序设计打好基础。1.3、熟悉Microsoft的DEBUG或Borland的Turbo DEBUG调试工具的使用方法2 、实验预习要求2.1、认真阅读本书第一部分第1章,熟悉汇编语言程序设计上机步骤。2.2、认真阅读

2、本书第三部分,熟悉DEBUG调试工具的使用方法。2.3、复习80x86操作数寻址方式及基本指令(数据传送、算术运算和逻辑运算等)。2.4、了解实验内容,并在实验前根据课堂所学知识回答有关问题(个别取决于程序实际运行环境的问题除外),以便在实验时进行验证。3、 实验内容3.1、读懂下列源程序,使用EDIT生成名为EX11.ASM的源程序,汇编生成EX11.OBJ文件和EX11.LST文件,连接生成EX11.EXE文件;用EDIT打开EX11.LST文件,了解.LST文件包含的信息;使用DEBUG调试工具单步执行EX11.EXE程序,注意观察IP值的变化,并回答下列问题。(1) 程序装入后,代码段

3、寄存器CS的内容为_0913_H,代码段第一条可执行指令MOVAX, DATA对应的机器代码为_B81209_H,它是一个_3_字节指令,注意观察执行该指令时IP值的变化情况,该指令源操作数DATA的寻址方式是_立即数寻址_,其值为_0912H_。(2) 执行完MOVDS, DATA指令后,数据段寄存器DS的内容为_0912_H,源程序在数据段中定义的数据82H、68H和88H被装入的存储单元的物理地址分别为_09120_H、_09121_H和_09122_H。(3) 程序中第一条ADD AL, BX 指令对应的机器代码为_0207_H,它是一个_2_字节指令,注意观察执行该指令时IP值的变化

4、情况;该指令中源操作数的寻址方式为_寄存器间接寻址_,该操作数所在存储单元的逻辑地址(DS): (BX)为_ 0912:0001_,其物理地址为_09121_H;执行完该指令后(AL)=_EA_H,CF=_0_,OF_=_0_,ZF=_0_,SF=1,AF=0,PF=0;若两操作数为无符号数,计算结果是否正确_是_?若两操作数为带符号数,计算结果是否正确_是_?若计算结果正确,结果是正数还是负数_负_?(4) 执行完第二条ADD AL, BX 指令后(AL)=_72_H,CF=_1_,OF=_1_,ZF=_0_,SF=_0_,AF=_1_,PF=_1_;若两操作数为无符号数,计算结果是否正确_

5、否_?若两操作数为带符号数,计算结果是否正确_否_?3.2、指令MOV SUM, AL中目的操作数的寻址方式为_寄存器寻址_。该指令执行完后,注意观察(DS):0003H单元中值的变化,该单元的值变为_72_H。DATASEGMENT NUMDB 82H, 68H, 88H SUM DB ?DATA ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATASTART:MOVAX, DATA MOV DS, AX MOV BX, OFFSET NUM MOV AL, BX INC BX ADD AL, BX INC BX ADD AL, BX MOV SUM, AL MO

6、V AH, 4CH INT 21HCODE ENDS END START(2)读懂下列源程序,编辑、汇编、连接生成EX12.ASM、EX12.OBJ、EX12.LST、EX12.EXE文件使用DEBUG单步调试EX12.EXE文件,并回答一下问题。代码的前三段指令“MOV AX, STACK”、“ MOV SS, AX”和“ MOV SP, LENGTH STL”的功能为堆栈初始化,试问执行完这三条指令后,堆栈栈底所在单元的逻辑地址(SS): (SP)为0912:0100 ;执行“PUSH AX”指令后,堆栈指针寄存器(SP)=00FEH,此时(SS): (SP+1)和(SS): (SP)单元

7、的值为 0AH和5B H;执行完“PUSH BX”后,(SP)= 00FC H;此时(SS): (SP+1)和(SS): (SP)单元的值为 4CH和A3 H;执行完“POP AX”后,(SP)= 00FEH;执行完“POP BX”后,(SP)= 0100 H,此时(AX)=4CA3 H,(BX)= 5B0A H。请读者通过对堆栈操作指令执行情况的观察,进一步掌握进、出栈操作过程。执行“ADD AX, BX”指令后,(AX)=A7AD H,CF=0 ,OF= 1,ZF=0 ,SF=1,AF=0 ,PF=0,(注意考虑PF值与计算结果高8位有无关系);若两操作数为无符号数,计算结果是否正确正确?

8、若两操作数为带符号数,计算结果是否正确不正确?执行“AND AX, BX”指令后,(AX)= 4802 H,CF=0 ,OF= 0,ZF=0 ,SF=0,AF=0 ,PF=0.STACKSEGMENTstack STLDW 100H DUP(?)STACKENDSCODESEGMENT ASSUMECS:CODE, SS:STACKSTART:MOVAX, STACK MOVSS, AX MOVSP, LENGTH STL;表达式“LENGTH STL ”的功能为计算STL中定义的变量的个数;汇编后其值为100H MOVAX, 0101101100001010B MOVBX, 01001100

9、10100011B PUSHAX PUSHBX ADDAX, BX POPAX POPBX ANDAX, BX MOVAH, 4CH INT21HCODE ENDS ENDSTART(3)指出下列指令的错误原因,上机运行,观察汇编程序(MASM.EXE)给出的出错信息,改正后上机验证。MOV BP, BLMOV BX, BP MOV BX, 20HINC SIADD AX,SI+DISHL AX, 3PUSH 2000HPOP ALMOV CS, AXMOV DS,1000H答 :出错信息:warning A4031:Operand types must match错误原因:操作数类

10、型不匹配, BP 是一个16位寄存器,而BL是一个8位寄存器。 改正后:MOV BP, BX ; 出错信息:error A2052:Improper operand type错误原因:源操作数和目的操作数不能同时为存储器。改正后:MOV AX, BP MOV BX, AX ;出错信息:error: A2035:Operand must have size错误原因:源操作数长度不明确出错信息:error: A2035:Operand must have size错误原因:操作数的长度未指定出错信息:error: A2047:Multiple index registers错误原因:同时使用了多个

11、变址寄存器出错信息:error A2052:Improper operand type错误原因:循环次数大于1应该间接移位出错信息:error A2056:Immediate mode illegal错误原因:不能对立即数进行栈操作出错信息:error A2058:Byte register illegal错误原因:要求用字寄存器而使用了字节寄存器出错信息:error A2059:Illegal use of CS register错误原因:CS不能作为目的操作数出错信息:error A2056:Immediate mode illegal错误原因:立即数不能送入数据段4、 实验总结这是第一次

12、上机实验,并不知道具体怎样做,通过老师讲的知识和操作,理解和巩固了课堂学习内容,基本掌握了汇编语言程序设计上机过程和汇编语言源程序结构,为以后汇编语言程序设计打好基础。初步掌握了调试工具的使用方法。 西 安 邮 电 大 学 (计算机学院)微机原理与接口技术实验报告实验名称:字符及字符串输入输出与顺序程序设计 专业名称: 班 级: 学生姓名: 学 号: 指导教师: 实验日期: 2017年11月14日字符及字符串输入输出与顺序程序设计1、实验目的1.1、学习和掌握字符及字符串的输入输出方法。1.2、掌握顺序程序设计方法。1.3、进一步掌握调试工具的使用方法。2、实验内容从键盘输入两个一位十进制数,

13、计算这两个数之和,并将结果在屏幕上显示出来。2.1、问题分析比如使用功能号为01H的用于实现单个字符输入的DOS功能调用接收从键盘输入的两个十进制数8和6,这时计算机内部得到的是这两个数的ASCII码值38H和36H。由于数字09的ASCII码值与其代表的数值之间相差30H,因此将其减去30H即可得到以非压缩型BCD数形式表示的十进制数08H和06H,使用ADD指令对它们进行相加后结果为0EH(00001110B),显然需要用非压缩型BCD数加法调整指令对ADD的运算结果进行调整,调整后得到两个非压缩型BCD数01H和04H,将它们分别加上30H后变为其对应的ASCII码31H(1的ASCII

14、码)和34H(4的ASCII码),然后调用功能号为02H用于单个字符输出的DOS功能调用将它们显示出来。综上所述,需要考虑以下问题。 (1)从键盘输入一个一位十进制数的方法 通过功能号为1的DOS功能调用实现从键盘输入一个字符,格式如下: MOV AH, 01HINT 21H ;此时程序等待用户键入,键入字符的ASCII码值存在AL中 SUB AL, 30H ;减去30H后得到键入数字所代表的数值 (2) 提示信息字符串的显示 通过功能号为9的DOS功能调用实现字符串显示,注意字符串的最后一个字符必需为$。指令格式如下: MOV DX, OFFSET INFOR1 ;INFOR1为在数据段中定

15、义的要显示的字符串 MOV AH, 09H INT 21H (3)非压缩型BCD数加法调整指令的使用 设从键盘输入的数值已存放在寄存器AL, BL中,可用下列程序完成数据相加和调整操作: XOR AH,AH ADD AL, BL AAA ;执行该指令后,AH中为和的十位上的数字,AL中为个位上的数字请读者考虑,为什么要使用指令“XOR AH,AH”,不用行否? (4)计算结果的显示 执行完AAA指令后,只需分别将AH(十位上的数值)和AL(个位上的数值)加上30H,并依次调用功能号为2的DOS功能调用来显示字符。 2.2、原程序框架 DATA SEGMENT INFOR1 DB”PLEASE

16、INPUT THE FIRST DATA(<10):$” INFOR2 DB 0AH,0DH,”PLEASE INPUT THE SECOND DATA(<10):$” INFOR3 DB 0AH,0DH,”THE RESULT IS:$” ;0DH和0AH分别为非显示字符回车和换行的ASCII码值, ;美元符号”$”为字符串结束标志,不能省略。 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA显示提示信息INFOR1并从键盘接收一个字符的指令序列 MOV DS,AX SUB AL,30H显示提示信息I

17、NFOR2并从键盘接收一个字符的指令序列 MOV BL,AL求和并调整指令序列 SUB AL,30H显示提示信息INFOR3的指令序列 PUSH AX POP AX显示十位及个位上数字的指令序列 PUSH AX MOV AH,4CH INT 21H CODE ENDS END START2.3、程序调试 源程序编写完成后,先静态检查,无误后,对源程序进行汇编和连接,生成可执行文件。在DOS命令提示符下运行该程序,分析运行结果是否正确。若结果不正确,使用DEBUG对其进行调试。 2.4、源代码1)、源程序框架补全源代码ASSUME CS:CODE, DS:DATADATASEGMENTINFOR

18、1DB "PLEASE INPUT THE FIRST DATA(<10):$"INFOR2DB 0AH, 0DH, "PLEASE INPUT THE SECOND DATA(<10):$"INFOR3 DB 0AH, 0DH, "THE RESULT IS:$"DATAENDSCODE SEGMENTSTART:MOVAX, DATAMOV DS, AXLEA DX, INFOR1;获取第一个数MOV AH, 09HINT 21HMOV AH, 01HINT 21HSUB AL, 30HMOV BL, ALLEA DX

19、, INFOR2;获取第二个数MOV AH, 09HINT 21HMOV AH, 01HINT 21HSUB AL, 30HMOV AH, 0;计算结果ADD AL, BLAAAPUSH AX;显示结果LEA DX, INFOR3MOV AH, 09HINT 21HPOP AXPUSH AXMOV DL, AHOR DL, 30HMOV AH, 02HINT 21HPOP AXMOV DL, ALOR DL, 30HMOV AH, 02HINT 21HMOV AH, 4CH;返回DOSINT 21HCODEENDSENDSTART选做题:从键盘输入两个一位十进制数,计算这两个数之积,并将结果在

20、屏幕上显示出来。ASSUME CS:CODE, DS:DATADATASEGMENTINFOR1DB "PLEASE INPUT THE FIRST DATA(<10):$"INFOR2DB 0AH, 0DH, "PLEASE INPUT THE SECOND DATA(<10):$"INFOR3 DB 0AH, 0DH, "THE RESULT IS:$"DATAENDSCODE SEGMENTSTART:MOVAX, DATAMOV DS, AXLEA DX, INFOR1;获取第一个数MOV AH, 09HINT 2

21、1HMOV AH, 01HINT 21HSUB AL, 30HMOV BL, ALLEA DX, INFOR2;获取第二个数MOV AH, 09HINT 21HMOV AH, 01HINT 21HSUB AL, 30HMOV AH, 0;计算结果MUL BLAAMPUSH AX;显示结果LEA DX, INFOR3MOV AH, 09HINT 21HPOP AXPUSH AXMOV DL, AHOR DL, 30HMOV AH, 02HINT 21HPOP AXMOV DL, ALOR DL, 30HMOV AH, 02HINT 21HMOV AH, 4CH;返回DOSINT 21HCODEE

22、NDSENDSTART设A,B,C,D为四个压缩型BCD数,它们被存放在内存DBCD开始的4个存储单元中,计算A+B+C+D,并将结果在屏幕上显示出来(注意压缩型BCD数的表示方法:十进制数38表示成压缩型BCD数时应写成38H)。程序编写完成并运行正确后,打开源程序,改变A,B,C,D的内容,然后重新进行汇编、连接并运行程序,检查程序运行结果与手工计算结 果是否相符。下面给出几组实验用数据: (1) A=11, B=23, C=25, D=31 (2) A=10, B=20, C=30, D=40 (3) A=45, B=45, C=45, C=45 (4) A=88, B=99, C=77

23、, D=66 (注意压缩型BCD数的表示方法:十进制数38表示成压缩型BCD数时应写成38H)2、 从键盘输入两个一位十进制数,计算这两个数之积,并将结果在屏幕上显示出来。 3、 从键盘输入09中任意一个自然数,将其平方值在屏幕上显示(使用查表法实现)。3、实验结果两个一位十进制数之和程序运行结果2、求两个一位十进制数的积1)部分反汇编结果输入第一个数8后, AL=38H输入第二个数6后,AL = 36H乘法指令执行后,AL=30H乘法调整后,AX=04086*8=48,与实际计算结果一致最终结果图3、实验总结通过本次实验,我学习并掌握了字符及字符串的输入输出以及顺序相关知识。虽然中途错误百出

24、,但最终还是完成了任务要求。语言还是需要不断练习才能掌握的东西,实践比理论更为重要。对于汇编语言程序的基本结构我已经有了更深的理解。 西 安 邮 电 大 学 (计算机学院)微机原理与接口技术实验报告实验名称: 宏指令及子程序实验 专业名称: 班 级: 学生姓名: 学 号: 指导教师: 实验日期: 2017年11月21日1、实验目的:1.1、掌握分支程序的设计方法。1.2、掌握宏定义及宏调用的基本方法。1.3、了解小写和大写字母的ASCII码表示及其转换方法。了解数字及其它字符在的ASCII码表示方法。1.4、进一步掌握调试工具的使用方法2、实验预习要求:2.1、 复习比较指令、条件转移指令的用

25、法。2.2、 复习宏定义及宏调用的基本方法。2.3、 根据“2.3.3 实验内容”中给出的流程图和程序框架编写源程序,以便上机调试。2.4、 程序框架中显示提示信息的指令序列用宏调用实现。2.5、 从“2.3.4 实验习题”中任选一道题目,编写源程序,以便上机调试。3、实验内容:问题:从键盘输入一字符,判断该字符是小写字母、大写字母、数字或其它字符。若输入为小写字母,显示“You Input a Lowercase Letter!”;若输入为大写字母,显示“You Input a Uppercase Letter!”; 若输入为数字,显示“You Input a Digit!”; 若输入为其它

26、字符,显示“You Input Other Letter!”。1. 编程指导数字09的ASCII码为30H39H;大写字母的ASCII码为41H5AH,小写字母的ASCII码为61H7AH。本题目将字符分为小写字母、大写字母、数字及其它字符,根据键入字符的ASCII码值判断其所属类型,并显示相应的信息。字符串显示使用功能号为09H的DOS功能调用,接收键盘输入的单个字符使用功能号为01H的DOS功能调用。2.代码:DATA SEGMENT INFOR1 DB 0AH,0DH,"Please Press Any Key to input a letter:$" INFOR2

27、DB 0AH,0DH,"You Input a Lowercase Letter!$" INFOR3 DB 0AH,0DH,"You Input a Uppercase Letter!$"INFOR4 DB 0AH,0DH,"You Input a Digit!$"INFOR5 DB 0AH,0DH,"You Input Other Letter!$"DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AXCMP AL,'

28、0'JB OTHERCMP AL,'9'JBE DIGITCMP AL,'A'JB OTHERCMP AL,'Z'JBE UPPERCMP AL,'a'JB OTHERCMP AL,'z'JBE LOWERJMP PENDLOWER: JMP PEND;注意执行完一个分支后应使程序跳出UPPER:JMP PENDDIGIT: JMP PENDOTHER:PEND:MOV AH,4CH INT 21HCODE ENDS END START4、实验总结:通过本次实验,我熟练掌握了宏定义和宏调用的使用方法,并巩固

29、了ASCII码的表示和转换方法,以及掌握了使用分支程序,运用跳转指令跳转到子程序,在子程序结束处跳回主程序的方法。收获很多。 西 安 邮 电 大 学 (计算机学院)微机原理与接口技术实验报告实验名称: 课后题:计算1+2+n=? 专业名称: 班 级: 学生姓名: 学 号: 指导教师: 实验日期: 2017年11月28日1、实验目的:1.1、掌握循环程序的设计方法。1.2、掌握比较指令、转移指令和循环指令的使用方法。1.3、进一步掌握调试工具的使用方法。2、实验要求:2.1、复习比较指令、条件转移指令和循环指令。2.2、复习循环程序的结构、循环控制方法等知识。2.3、读懂“2.4.3 实验内容”

30、中给出的将十进制数转换为二进制数以及将二进制数转换为十进制数的程序。2.4、根据“2.4.3 实验内容”中给出的流程图和程序框架编写源程序,以便上机调试。2.5、从“2.4.4 实验习题”中任选一道题目,编写源程序,以便上机调试。3、实验内容:计算1+2+n=?,其中n通过键盘输入。累加和小于216。要求在屏幕上提供如下信息:Please input a number(1361):;出现此信息后通过键盘输入一个小于362的无符号整数,使累加和小于一个16位无符号二进制数所能表示的范围1+2+.n=sum其中n为用户输入的数,sum为所求的累加和。1.编程指导键盘输入的十进制数如368在计算机中

31、是以33H,36H,38H形式存放的,如何将它们转换为一个二进制数101110000B,以便对累加循环的循环次数进行控制是本程序首先要解决的问题。代码:(,将存储在AX寄存器中的二进制数转换为十进制数并显示)DATA SEGMENTINF1 DB "Please input a number (0-65535):$"IBUF DB 7,0,6 DUP(?)DATA ENDSCODESEGMENTASSUME CS: CODE, DS:DATASTART:MOVAX, DATAMOV DS, AXMOV DX, OFFSET INF1MOV AH, 09HINT 21HMOV

32、 DX, OFFSET IBUF;键入一个十进制数(<65535)MOV AH, 0AHINT 21HMOV CL, IBUF+1 ;十进制数的位数送CXMOV CH, 0MOV SI, OFFSET IBUF+2 ;指向输入的第一个字符(最高位)MOV AX, 0;开始将十进制数转换为二进制数AGAIN: MOVDX, 10 ; (0´10+a4) ´10+) ´10+a0MUL DX AND BYTE PTR SI, 0FH ADD AL, SIADC AH, 0INC SILOOP AGAINMOV AH,4CHINT 21HCODE ENDSEND

33、START/将存储在AX寄存器中的二进制数转换为十进制数并显示。DATASEGMENTOBUFDB 6 DUP(?)DATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATASTART:MOVAX, DATAMOV DS, AXMOV BX, OFFSET OBUF+5MOV BYTE PTR BX,'$'MOV CX, 10;做(DX):(AX)/10运算LOOP1:MOVDX, 0;被除数高16位清0DIV CXADD DL, 30H;将DL中的一位十进制数转换为ASCII码DEC BXMOV BX, DLOR AX, AXJNZ LOOP

34、1;判断商是否为0,不为0继续MOV DX, BXMOV AH, 09H INT 21H;显示转换得到的十进制数MOV AH, 4CHINT 21HCODE ENDSENDSTART2.源程序代码:DATASEGMENT INF1DB"Please input a number(1-361):$" INF2DB"1+2+.+N=$" IBUFDB 7,0,6 DUP(?) OBUFDB 6 DUP(?)DATAENDSCODESEGMENT ASSUME CS:CODE,DS:DATASTART:MOVAX,DATA MOVDS,AX MOVDX,OFF

35、SET INF1 MOVAH,09H INT 21H MOVDX,OFFSET IBUF MOVAH,0AH INT 21H MOVCL,IBUF+1 MOVCH,0 MOVSI,OFFSET IBUF+2 MOVAX,0AGAIN:MOVDX,10 MUL DX AND BYTE PTRSI,0FH ADD AL,SI ADC AH,0 INC SI LOOPAGAIN MOVCX,AX MOVAX,0 MOVBX,1LOOP2:ADD AX,BX INC BX LOOPLOOP2 MOVBX,OFFSET OBUF+5 MOVBYTE PTRBX,'$' MOVCX,0AH

36、LOOP1:MOVDX,0 DIV CX ADD DL,30H DEC BX MOVBX,DL OR AX,AX JNZ LOOP1 MOVDL,0AH MOVAH,02H INT 21H MOVDX,OFFSET INF2 MOVAH,09H INT 21H MOVDX,BX MOVAH,09H INT 21H MOVAH,4CH INT 21HCODEENDS END START4、实验总结:通过本次实验,我熟悉了循环程序的应用方法,和条件转移指令与循环指令的应用。将课堂上学习的理论知识进行了实践应用,对学到的知识了解得更加透彻。 西 安 邮 电 大 学 (计算机学院)微机原理与接口技术实

37、验报告实验名称: 8254定时/计数器应用试验 专业名称: 班 级: 学生姓名: 学 号: 指导教师: 实验日期: 2017年12月5日8254定时/计数器应用试验1、实验目的1.1、掌握8254的工作方式及应用编程1.2、掌握8254的典型应用电路接法1.3、学习8254在PC系统中的典型应用方法2、实验内容2.1、通过实验箱提供的单次脉冲单元,按动微动开关向计数器依次发出单脉冲,观察每来一个脉冲时,计数器当前计数值的变化情况。2.2、定时应用实验。编写程序,应用8254的定时功能,产生一个1s的方波,并用本装置的示波器功能来观察。3、实验原理8254是Intel公司生产的可编程间隔定时器。

38、是8253的改进型,比8253具有更优良的性能。8254具有以下基本功能:(1)有3个独立的16位计数器;(2)每个计数器可按二进制或十进制(BCD)计数;(3)每个计数器可编程工作于6种不同工作方式;(4)8254每个计数器允许的最高计数频率为10MHz(8253为2MHz);(5)8254有读回命令(8253没有),除了可以读出当前计数单元的内容外,还可以读出状态寄存器的内容;图1图1是8254的内部结构框图和引脚图,它是由与CPU的接口、内部控制电路和三个计数器组成。8254的工作方式如下述:(1)方式0:计数到0结束输出正跃变信号方式。(2)方式1:硬件可重触发单稳方式。(3)方式2:

39、频率发生器方式。 (4)方式3:方波发生器。(5)方式4:软件触发选通方式。 (6)方式5:硬件触发选通方式。8254的控制字有两个:一个用来设置计数器的工作方式,称为方式控制字;另一个用来设置读回命令,称为读回控制字。这两个控制字共用一个地址,由标识位来区分。控制字格式如表1所示。表1 8254的方式控制字格式表2 8254读出控制字格式表3 8254状态字格式计数应用实验1、编写程序,将8254的计数器0设置为方式3,计数值为十进制数4,用单次脉冲KK1作为CLK0时钟,OUT0连接MIR7,每当KK1按动5次后产生中断请求,在屏幕上显示字符“M”。2、实验步骤:(1)

40、实验接线如图2所示;(2)编写实验程序,经编译、链接无误后装入系统;(3)运行程序,按动KK1产生单次脉冲,观察实验现象;(4)改变计数值,验证8254的计数功能。图23、 实验代码IOY0 EQU 0600H A8254 EQU IOY0+00H*2B8254 EQU IOY0+01H*2C8254 EQU IOY0+02H*2CON8254 EQU IOY0+03H*2SSTACKSEGMENT STACKDW 32 DUP(?)SSTACKENDSCODESEGMENTASSUME CS:CODE, SS:SSTACKSTART:PUSH DSMOV AX, 0000HMOV DS, A

41、XMOV AX, OFFSET IRQ7MOV SI, 003CHMOV SI, AXMOV AX, CSMOV SI, 003EHMOV SI, AXCLIPOP DSMOV AL, 11HOUT 20H, ALMOV AL, 08HOUT 21H, ALMOV AL, 04HOUT 21H, ALMOV AL, 01HOUT 21H, ALMOV AL, 6FHOUT 21H, ALMOV DX, CON8254MOV AL, 10HOUT DX, ALMOV DX, A8254MOV AL, 04HOUT DX, ALSTIAA1:JMP AA1IRQ7:MOV DX, A8254MOV

42、 AL, 04HOUT DX, ALMOV AX, 014DHINT 10HMOV AX, 0120HINT 10HMOV AL, 20HOUT 20H, ALIRETCODEENDSEND START每当KK1按动5次后产生中断请求,在屏幕上显示字符“M”。定时应用实验1、编写程序,将8254的计数器0和1设置为方式3,用信号源1MHz作为CLK0时钟,OUT1为波形输出1s方波。2、实验步骤:(1)接线图如图3所示;(2)根据实验内容,编写实验程序,经编译、链接无误后装入系统;(3)运行实验程序,打开虚拟仪器中的示波器并点击示波器的运行按钮测试OUT1输出,验证程序功能。3、 实验代码IO

43、Y0 EQU 0600H ;IOY0起始地址A8254 EQU IOY0+00H*2B8254 EQU IOY0+01H*2C8254 EQU IOY0+02H*2CON8254 EQU IOY0+03H*2SSTACKSEGMENT STACKDW 32 DUP(?)SSTACKENDSCODESEGMENTASSUME CS:CODESTART:MOV DX, CON8254;8254MOV AL, 36H;计数器0,方式3OUT DX, ALMOV DX, A8254MOV AL, 0E8HOUT DX, ALMOV AL, 03HOUT DX, ALMOV DX, CON8254;8254MOV AL, 76H;计数器1,方式3OUT DX, ALMOV DX, B8254MOV AL, 0E8HOUT DX, ALMOV AL, 03HOUT DX, ALAA1:JMP AA1CODEENDSEND START4、 实验结果4、实验总结通过此次实验,我基本掌握了8254的工作方式,了解了8254的典型应用电路接法,

温馨提示

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

评论

0/150

提交评论