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

下载本文档

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

文档简介

1、仅供个人参考不得用于商业用途仅供个人参考实验一 显示程序实验、实验目的1. 掌握在PC机上以十六进制形式显示数据的方法;2. 掌握部分DOS功能调用使用方法;3. 熟悉Tddebug调试环境和Turbo Debugger的使用二、实验所用设备1. PC微机一台。三、实验内容一般来说,程序需要显示输出提示运行的状况和结果,有的还需要将数据区中的 内容显示在屏幕上。本实验要求将指定数据区的数据以十六进制数形式显示在屏幕 上,并通过DOS功能调用完成一些提示信息的显示。实验中可使用DOS功能调用(INT 21H )。(1) 显示单个字符输出入口: AH=02H调用参数: DL= 输出字符(2) 显示

2、字符串入口: AH=09H调用参数: DS:DX= 串地址, '$为'结束字符(3) 键盘输入并回显入口: AH=01 H返回参数: AL= 输出字符返回DOS系统入口: AH=4CH 调用参数: AL= 返回码四:实验步骤1. 运行Tddebug软件,选择Edit菜单,根据实验内容的描述编写实验程序,本实验显示部分参考实验流程如图 1-1 示;2. 使用Compile菜单中的Compile和Link对实验程序进行汇编、连接;3. 使用Rmrur菜单中的Run,运行程序,观察运行结果;4. 使用Rmrur菜单中的Debug,调试程序,观察调试过程中,数据传输指令执行后,各寄存器

3、及数据区的内容;5. 更改数据区中的数据,考察程序的正确性。流程图:程序清单:DATASEGMENTMYSTRDB'show a as hex:',0AH,0DH,'$'SDDB'a'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DA TASTART:MOVAX ,DATAMOVDS ,AXLEADX,MYSTRMOVAH,09H;显示提示符INT21HLEASI, SDMOVAL ,SIANDAL ,0F0H;咼四位转换成十六进制数的ASC码SHRAL ,4CMPAL,0AHJBC1ADDAL ,07HC1: ADDA

4、L, 30HMOVDL,AL;显示咼位MOVAH,02HINT21HMOVAL ,SIANDAL,0FH;低四位转换成十六进制数的ASC码CMPAL,0AHJBC2ADDAL ,07HC2: ADDAL,30HMOVDL,AL;显示低位MOVAH,02HINT21HMOVAX,4C00HINT21HCODE ENDSENDSTART运行结果:不得用于商业用途实验二数据传送实验、实验目的1. 熟悉Tddebug调试环境和Turbo Debugger的使用;2. 掌握与数据有关的不同寻址方式。二、实验所用设备1. PC微机一台。三、实验内容将数据段中的一个字符串传送到附加段中,并输出附加段中的目标

5、字符串到屏幕上。四:流程图五:程序清单DSDATASTR1SEGMENTDB'HELLO,WORLD!','$'DSDATAENDSESDATASEGMENTSTR2DB13 DUP(?)ESDATAENDSCODESEGMENTASSUMECS:CODE,DS:DSDATA,ES:ESDATASTART:MOVAX,DSDATAMOVDS,AXLEASI, STR1MOVAX,ESDATAMOVES,AXLEADI ,STR2MOVCX ,13NEXT:MOVAL,SI;开始传送MOVES:DI,ALINCSIINCDIDECCXJNZNEXTMOVCX,ES

6、 ;显示附加数据段中的目标字符串MOVDS ,CXLEADX,STR2MOVAH,09HINT21HMOVAX,4C00H;返回 DOSINT21HCODEENDSENDSTART实验三数码转换程序实验一、实验目的掌握不同进制数及编码相互转换的程序设计方法。二、实验所用设备PC微机一台。三、实验内容计算机输入设备输入的信息一般是由ASCII码或BCD码表示的数据或字符,CPU用二进制数进行计算或其它信息处理,处理结果的输出又必须依照外设的要求 变为ASCII码、BCD码或七段显示码等。因此,在应用软件中,各类数制的转换和 代码的转换是必不可少的。计算机与外设间的数码转换关系如图3-1所示,数码

7、对应关系如表3-1所示。1将ASCII码表示的十进制数转换为二进制数十进制数可以表示为: Dn x 10n+Dn-1 x 10n-1+D0 x 100=Di x 10i其中Di代表十进制数1、2、39、0。上式可以转换为:艺 Di x 10i=(Dn x 10+Dn-1) x 10)+Dn-2) x 10+D1) x 10+D0由上式可归纳十进制数转换为二进制的方法:从十进制数的最高位Dn开始作乘10加次位的操作,依次类推,则可求出二进制数结果。本实验要求将缓冲区中的一个五位十进制数00012的ASCII码转换成二进制数,并将转换结果按位显示在屏幕上。2 将十进制数的ASCII码转换为BCD码

8、本实验要求将键盘输入的一个五位十进制数54321的ASCII码存放入数据区中,转换为BCD码后,并将转换结果按位分别显示于屏幕上。若输入的不是十进制数 的ASCII码,则输出“FF。提示:一字节ASCII码取其低四位即变为BCD码。3 将十六进制数的ASCII码转换为十进制数十六位二进制数的值域为0-65535,最大可转换为五位十进制数。五位十进制数 可表示为:432N=D4x 10 +C3X 10+D2X 10 +D x 10+D0因此,将十六位二进制数转换为五位 ASCII码表示的十进制数,就是求D-D4,并将它们转化为ASCII码。4. BCD码转换为二进制码本实验要求将四个二位十进制数

9、的 BCD码存放在某一内存单元中,转换出的二 进制数码存入其后的内存单元中,转换结束,送屏幕显示。四:流程图将ASCII码表示的十进制数转换为二进制数转换完苦丁2 将十进制数的ASCII码转换为BCD码猜宦转抉数的性数口CX-NBL-OFFH陽M V-SCZj'j.iy BL = ASCD-30H11J?保厅BL刮删茁单元.L转换完古?丄yj? W荊扯示3 将十六进制数的ASCII码转换为十进制数SI=£1”1.-V - ' :;£JAX 除以Itt AX= i.DX金啟将亲歆腿化成n朋CU询i|f呆布lf >iO i将余下曲充为04. BCD码转换为

10、二进制码CX-NBL=OFFH辭69W f: ' 7' -W f: ' 7' -五:程序清单1将ASCII码表示的十进制数转换为二进制数DATA SEGMENTDECIMAL DB '00012'DATA ENDSCODE SEGMENTASSUME DS:DATA,CS:CODESTART: MOV AX,DATAMOVDS,AXMOVCL,5MOVCH,0MOVDI,10MOVAX,0LEASI,DECIMALLOOP1: MUL DIMOVBH,0MOVBL,SIANDBL,0FHADDAX,BXINCSILOOPLOOP1MOVCL,16

11、LOOP2: ROL AX,1MOVBX,AXANDAL,01HADDAL,30HMOVDL,ALMOVAH,02HINT21HMOVAX,BXLOOPLOOP2MOVAX,4C00HINT21HCODE ENDSEND START2将十进制数的ASCII码转换为BCD?DATA SEGMENTSTR2 DB'please input:','$'MAX DB10LENTH DB ?NUM DB 5 DUP(?)STR1 DB 'FFF','$'DATA ENDSCODE SEGMENTASSUME DS:DATA,CS:CODES

12、TART: MOVAX ,DATAMOVDS,AXLEADX,STR2MOVAH,09HINT21HMOVDL,0AHMOVAH,02HINT21HMOVDL,0DHMOVAH,02HINT21HLEADX,MAXMOVAH,0AHINT21HMOVDL,0AHMOVAH,02HINT21HMOVDL,0DHMOVAH,02HINT21HLEASI,NUML1: MOVBL,SICMPBL,39HJBNEXTLEADX,STR1MOVAH,09HINT21HJMPSTOPNEXT: ANDBL,0FHSHLBL,4 ;MOVCX,4L2: ROLBL,1MOVBH,BLANDBL ,01HAD

13、DBL,30HMOVDL,BLMOVAH,02HINT21HMOVBL,BHLOOPL2显示提示符回车换行从键盘输入回车换行比较是否比 10大比10小,转换成BCD显示BCD?INC SIDEC LENTHJNZ L1STOP: MOV AX,4C00HINT 21HCODE ENDSEND START3将十六进制数的ASCII码转换为十进制数DATA SEGMENTHEX DB '000C'DATA ENDSCODE SEGMENTASSUME DS:DATA,CS:CODESTART: MOVAX ,DATAMOVDS,AXMOVSI,OFFSET HEXMOVBH,0MO

14、VCX,4MOVDI,16MOVAX,0NEXT: MUL DI; ASCMOVBL,SICMPBL,3AHJBC1SUBBL ,07HC1: SUBBL,30HADDAX,BXINCSILOOPNEXTMOVBX,10000 ;MOVDX,0DIVBXMOVBX,DXADDAX,30HMOVDL,ALMOVAH,02HINT21HMOVAX,BXMOVBX,1000 ;MOVDX,0DIVBXMOVBX,DXADDAX,30H码转换成二进制数显示十进制万位数显示千位数MOVDL,ALMOVAH,02HINT21HMOVAX,BXMOVBX,100MOVDX,0DIVBXMOVBX,DXADD

15、AX,30HMOVDL,ALMOVAH,02HINT21HMOVAX,BXMOVBX,10MOVDX,0DIVBXMOVBX,DXADDAX,30HMOVDL,ALMOVAH,02HINT21HMOVDL,BLADDDL,30HMOVAH,02HINT21HMOVAX,4C0INT21H显示百位数显示十位数显示个位数返回 DOSCODE ENDSEND START4. BC码转换为二进制码DATA SEGMENTBCD DB 00010001B,00100010B,00110011B,01000100BDATA ENDSCODE SEGMENTASSUME DS:DATA,CS:CODESTA

16、RT: MOV AX ,DATAMOVMOVMOVDS,AXSI,OFFSET BCDCL,4L1: MOVAL ,SI ;BCD码转二进制数MOVBL,ALSHRAL,4 ;取出十位MOVBH,10MULBHANDBL,0FH ;取出各位ADDAL,BL ;十位个位相加得到二进制数MOVSI+4,ALMOVCH,8L2: ROLAL,1 ;从高向低显示二进制数MOVBL,AL ;保存移位后的数ANDAL,01HADDAL,30HMOVDL,ALMOVAH,02HINT21HMOVAL,BL ;恢复保存的数DECCHJNZL2MOVDL,0AH ;显示完 8位二进制数后回车换行MOVAH,02

17、HINT21HMOVDL,0DHMOVAH,02HINT21HINCSIDECCLJNZL1 ;依次转换BCD?MOVAX,4C00H ;返回DOSINT21HCODE ENDSENDSTART六:运行结果1 .将ASCII码表示的十进制数转换为二进制数2 将十进制数的ASCII码转换为BCD码3 将十六进制数的ASCII码转换为十进制数4. BCD码转换为二进制码实验四运算类程序实验一、实验目的1. 掌握运算类指令编程及调试方法;2. 掌握运算类指令对各状态标志位的影响及测试方法。二、实验所用设备1. PC微机一台。三、实验内容二进制双精度加法运算本实验要求计算X+Y二Z,将结果Z输出到屏幕

18、,其中X=001565A0H, Y=0021B79EH。实验利用累加器AX,先求低十六位和,并存入低址存储单元,后求高 16位和, 再存入高址存储单元。由于低位和可能向高位有进位,因而高位字相加语句需用ADC 指令,则低位相加有进位时, CF=1,高位字相加时,同时加上 CF中的1。在80386 以上微机中可以直接使用32位寄存器和32位加法指令完成本实验的功能。四、流程图五 、程序清单DATA SEGMENTX DD001565A0HY DD0021B79EHSTRI DB'the result is:' ,'$'DATA ENDSMYSTACK SEGMEN

19、T STACK DW 20 DUP(?)MYSTACK ENDSCODE SEGMENTSTART: MOV AX ,DATAMOVDS,AXMOVSI,OFFSET XMOVAX ,SIMOVBX,SI+4ADDAX,BXPUSHAXMOVAX ,SI+2MOVBX,SI+6ADCAX,BXPUSHAXMOVDX ,OFFSET STRIMOVAH,09HINT21HMOVDL,0AH ;MOVAH,02HINT21HMOVDL,0DHMOVAH,02HINT21HPOPAXMOVCX,4L1: ROLAX,4 ;PUSHAXANDAX,0FHCMPAL,0AHJBL2ADDAL,07HL2

20、: ADDAL,30HMOVDL,ALMOVAH,02HASSUME DS:DATA,CS:CODE回车换行显示高四位显示提示符INT21HPOPAXLOOPL1MOVCX ,4POPAXL3: ROLAX,4PUSHAXANDAL,0FHCMPAL,0AHJBL4ADDAL,07HL4: ADDAL,30HMOVDL,ALMOVAH,02HINT21HPOPAXLOOPL3MOVAX,4C00HINT21HCODE ENDSENDSTART显示低四位六、运行结果环非穗用中Tord3.Exethe resultis :_ 00371D3E.实验五 分支程序设计实验一、实验目的1. 掌握分支程序

21、的设计方法。二、实验所用设备1. PC微机一台。三、实验内容程序有顺序、循环、分支和子程序四种结构形式,分支结构的示意图如图5-1所示。本实验要求通过求无符号字节序列中的最大值和最小值来反映分支程序的结构 形式。实验可以使用 BH,BL 作为暂存现行的最大值和最小值,且在程序的初始,将BH和BL初始化为首字节的内容,然后进入循环操作。在循环操作中,依次从字节 序列中逐个取出一个字节的内容与 BH,BL进行比较,若取出的字节内容比 BH的内 容大或比BL中的内容小,则修改之。当循环结束操作时,将BH,BL分别送屏幕显示。四、实验步骤1. 运行Tddebug软件,选择Edit菜单编写实验程序,提供

22、8字节的数据:0D9H,07H, , 8BH, 0C5H, 0EBH, 04H, 9DH, 0F9H;2. 使用Compile菜单中的Compile和Link对实验程序进行汇编、连接;3. 使用Rmrun菜单中的Run,运行程序,观察运行结果;4. 更改数据区中的数据,考察程序的正确性。五、流程图cx= I: fftAX ,DATADS,AXSI,OFFSET ARRAYBL,SIBH,BLCX,7六、程序清单DATA SEGMENTARRAY DB 0D9H,07H,8BH,0C5H,0EBH,04H,9DH,0F9HDATA ENDSCODE SEGMENTASSUME DS:DATA,C

23、S:CODE START: MOVMOVMOVMOVMOVMOVCLDGO: INCSI清标志寄存器 开始逐个比较MOV AL,SICMP AL,BHJA L1CMP AL ,BLJB L2JMP NEXTL1: MOV BH,ALJMP NEXTL2: MOV BL,AL NEXT: DEC CXJNZ GO出来MOVANDSHRCMP JBADDC1: ADDMOVMOV INTMOVANDCMP JBADDC2: ADDMOVMOV INTMOVMOV INTMOVMOV INTAL,BHAL ,0F0HAL ,4 AL,0AHC1AL ,07HAL, 30H DL,AL AH,02H

24、21HAL,BH AL ,0FH AL,0AH C2AL ,07HAL, 30H DL,AL AH,02H 21H DL,0AH AH,02H 21HDL,0DH AH,02H 21H把BH里的内容以十六进制显示回车换行把BL里的内容以十六进制MOV AL,BL显示出来AND AL ,0F0HSHR AL ,4CMP AL,OAH JB C3ADD AL ,07HC3: ADD AL, 30H MOV DL,AL MOV AH,02H INT 21HMOV AL,BL AND AL ,OFH CMP AL,0AHJB C4 ADD AL ,07HC4: ADD AL, 30H MOV DL,A

25、L MOV AH,02H INT 21HMOV AX,4C00H INT 21HCODE ENDSEND START七、运行结果邸非穗用中Tord3.Exe04_实验六循环程序设计实验、实验目的1.掌握循环程序的设计方法。二、实验所用设备1. PC微机一台。三、实验内容本实验要求通过求某数据区内负数的个数来表现循环程序的结构形式。要求实 验程序在数据区中存放一组数据,为统计负数的个数,逐个判断区内的数据,然后 将所有数据中凡是符号位为1的数据的个数累加起来,即得到区内所包含负数的个 数。四、实验步骤1. 运行Tddebug软件,选择Edit菜单编写实验程序,提供10字节的数据:12H, 88H

26、,82H,89H,33H,90H,01H,10H,0BDH,01H ;2. 使用Compile菜单中的Compile和Link对实验程序进行汇编、连接;3. 使用Rmrun菜单中的Run,运行程序,观察运行结果;4. 更改数据区中的数据,考察程序的正确性。六、程序清单DATA SEGMENTARRAY DB12H,88H,82H,89H,33H,90H,01H,10H,0BDH,01HMYSTR DB'the negtive mumber amountis:' ,0AH,0DH,'$'DATA ENDSSTART: MOV AX ,DATAMOVDS,AXMOV

27、SI,OFFSET ARRAYMOVBL,0 ;MOVCX,10NEXT: MOVAL,SIROLAL,1;ANDAL,01HCMPAL,0 ;JAL1JMPL2L1: INCBLL2: INCSI ;DECCXJNZNEXTMOVDX,OFFSET MYSTRMOVAH,09HINT21HADDBL,30H ;CODE SEGMENTASSUME DS:DATA,CS:CODE计数初值置 0取出最高位判断是否为 1若为1, BL增1; 显示提示符以十进制数形式显示结果MOV DL,BLMOV AH,02HINT 21HMOV AX,4C00HINT 21HCODE ENDSEND START

28、七、运行结果实验一 8259中断控制器应用实验一、实验目的1. 学习可编程中断控制器 8259的工作原理。2. 掌握可编程中断控制器8259的应用编程方法。、实验所用仪表及设备1. PC机一台。2. TD-PIT+实验系统一套三、实验内容1 单中断实验。利用系统总线上中断请求信号INTR,设计一个单中断应用。使用单次脉冲模拟中断产生。编写中断处理程序,在显示器屏幕上显示一 个字符。本实验要求使用总线上INTR中断请求线完成一次单中断应用实验。 用单次 脉冲上升沿模拟中断源,中断处理程序完成在屏幕上的显示字符“9” o系统总tt图2-1 8259单中断实验参考接线图实验步骤如下: 实验接线图如图

29、2-1所示,按图接线 运行Tdpit集成操作软件,调用程序代码(T8259-1.ASM ),填写程序代 码中的空缺处,编译、链接。 使用运行命令运行程序,重复按单次脉冲开关KK1 + ,显示屏会显示字符“ 9”,说明响应了中断。流程图:实验代码如下:INTR_IV ADDEQU01C8HINTR_OCW1EQU0A1H ;INTRINTR_OCW2EQU0A0H ;INTRINTR IMEQUOFBH;INTR对应的中断矢量地址对应PC机内部8259的0CW1地址对应PC机内部8259的0CW2地址;INTR对应的中断屏蔽字STACK1 SEGMENT STACKDW 256 DUPSTACK

30、1 ENDSDATA SEGMENTMESDB 'Press any key to exit!',0AH,0DH,0AH,0DH,'$'CS_BAKDW?IP_BAKDW?IM_BAKDB?DATA ENDS;保存 INTR 原中断处理程序入口段地址的变量;保存 INTR 原中断处理程序入口偏移地址的变量;保存 INTR 原中断屏蔽字的变量CODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV DX,OFFSET MESMOV AH,09HINT 21HCLIMOV AX,0000HMOV

31、 ES,AXMOV DI,INTR_IV ADDMOV AX,ES:DIMOV IP_BAK,AXMOV AX,OFFSET MYISRMOV ES:DI,AXADD DI,2MOV AX,ES:DIMOV CS_BAK,AXMOV AX,SEG MYISRMOV ES:DI,AX;显示退出提示;替换 INTR 的中断矢量;保存 INTR 原中断处理程序入口偏移地址;设置当前中断处理程序入口偏移地址;保存 INTR 原中断处理程序入口段地址;设置当前中断处理程序入口段地址MOV DX,INTR_OCW1 ; IN AL,DXMOV IM_BAK,ALAND AL,INTR_IMOUT DX,A

32、L设置中断屏蔽寄存器,打开 INTR 屏蔽位; 保存 INTR 原中断屏蔽字STIWAIT1: MOV AH,1INT 16HJZ WAIT1QUIT: CLIMOV AX,0000HMOV ES,AX;判断是否有按键按下;无按键则跳回继续等待,有则退出;恢复 INTR 原中断矢量MOV DI,INTR_IV ADDMOV AX,IP_BAK;恢复 INTR 原中断处理程序入口偏移地址MOV ES:DI,AXADD DI,2MOV AX,CS_BAK MOV ES:DI,AXMOV DX,INTR_OCW1 MOV AL,IM_BAK OUT DX,AL STIMOV AX,4C00HINT

33、21HMYISR PROC NEARPUSH AX MOV AL,39H MOV AH,0EHINT 10H MOV AL,20HINT 10HOVER: MOV DX,INTR_OCW2 MOV AL,20H OUT DX,AL;恢复 INTR 原中断处理程序入口段地址;恢复 INTR 原中断屏蔽寄存器的屏蔽字;返回到 DOS;中断处理程序 MYISR;向 PC机内部8259发送中断结束命令MOV AL,20HOUT 20H,ALPOP AXIRET MYISR ENDPCODE ENDSEND START(代码结束)实验现象:使用运行命令运行程序,重复按单次脉冲开关 KK1 ,显示屏 会显

34、示字符“ 9”运行结果截图:(2)扩展中断应用实验扩展中断源查询方式应用实验。利用实验平台上 8259控制器对系统总线上 的中断线INTR进行扩展。编写程序对8259控制器的IR0和IRI中断请求进行 处理。实验说明:利用实验单元中的8259控制器,可以对总线上的INTR进行中断源的扩充。将8259的INT连接到INTR ,8259的8路中断请求线IR0IR7就成了单一 INTR 中断请求线的扩充。这8路中断源共用INTR的中断矢量,共用INTR的中断 服务程序。在INTR的中断服务程序中通过对 8259的0CW3的查询,以确定是 IR0IR7中哪个产生中断,然后转到相应的服务线程进行处理。本

35、实验要求实现8259控制器IR0、R1两路中断都可以通过INTR向PC发 起中断请求。用KK1 +和KK2+模拟两个中断源,在IR0对应的服务程序中显示 字符“ 0”,在IR1对应的服务程序中显示字符“ 1”。2322XD6 xn? W 口3XD2XDXDOMOWX1ORJYO氏tro_q_>36D5R4DIDIF>1DOWR RD 匚吕.W8259单元IRt>IRI00oo单次脉冲单元图2-3 8259扩充中断源实验参考接线图实验步骤如下: 实验接线图如图2-3所示,按图接线 运行Tdpit集成操作软件,调用程序代码(T8259-2.ASM),填写程序代 码中的空缺处,编译

36、、链接。 使用运行命令运行程序,按动 KK1+、KK2+按键,观察中断是否产生。流程图:初始化实验黨筑中舱旳ICWh ICW2. ICW4. 0CW1关中肝换复PCL_INTCSR INTR中 函矢量和中 断.屏菠宇开中朋亟回到DOS(a)主程序(b)中断处理程序实验代码如下:INTR_IV ADDEQU01C8H ;INTR 对应的中断矢量地址INTR_OCW1EQU0A1H ;INTR对应 PC 机内部 8259 的 OCW1 地址INTR_OCW2EQU0A0H ;INTR对应 PC 机内部 8259 的 OCW2 地址INTR_IMEQU0FBH;INTR 对应的中断屏蔽字IOY0EQ

37、U3000H;片选 IOY0 对应的端口始地址MY8259_ICW1EQUIOY0+00H; 实验系统中 8259 的 ICW1 端口地址MY8259_ICW2EQUIOY0+04H; 实验系统中 8259 的 ICW2 端口地址MY8259_ICW3EQUIOY0+04H; 实验系统中 8259 的 ICW3 端口地址MY8259_ICW4EQUIOY0+04H; 实验系统中 8259 的 ICW4 端口地址MY8259_OCW1EQUIOY0+04H ;实验系统中 8259 的 OCW1 端口地址MY8259_OCW2EQUIOY0+00H ;实验系统中 8259 的 OCW2 端口地址M

38、Y8259_OCW3EQUIOY0+00H ;实验系统中 8259 的 OCW3 端口地址STACK1 SEGMENT STACKDW 256 DUP(?)STACK1 ENDSDATA SEGMENTMES DB 'Press any key to exit!',0AH,0DH,0AH,0DH,'$'CS_BAK DW ?;保存 INTR 原中断处理程序入口段地址的变量IP_BAK DW ?;保存 INTR 原中断处理程序入口偏移地址的变量IM_BAK DB ?;保存 INTR 原中断屏蔽字的变量DATA ENDSCODE SEGMENTASSUME CS:C

39、ODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV DX,OFFSET MESMOV AH,09HINT 21HCLIMOV AX,0000HMOV ES,AXMOV DI,INTR_IV ADDMOV AX,ES:DIMOV IP_BAK,AXMOV AX,OFFSET MYISR;显示退出提示;替换 INTR 的中断矢量;保存 INTR 原中断处理程序入口偏移地址MOV ES:DI,AX;设置当前中断处理程序入口偏移地址ADD DI,2MOV AX,ES:DIMOV CS_BAK,AXMOV AX,SEG MYISRMOV ES:DI,AXMOV DX,IN

40、TR_OCW1 ; IN AL,DXMOV IM_BAK,ALAND AL,INTR_IMOUT DX,ALMOV DX,MY8259_ICW1MOV AL,_13H;初始化实验系统中 8259 的 ICW1;边沿触发、单片 8259、需要 ICW4OUT DX,ALMOV DX,MY8259_ICW2MOV AL, 08HOUT DX,AL;初始化实验系统中 8259 的 ICW2MOV DX,MY8259_ICW4;初始化实验系统中 8259 的 ICW4MOV AL, 01H;非自动结束 EOIOUT DX,ALMOV DX,MY8259_OCW3MOV AL,0AHOUT DX,AL;

41、向 8259 的 OCW3 发送读取 IRR 命令;保存 INTR 原中断处理程序入口段地址;设置当前中断处理程序入口段地址设置中断屏蔽寄存器,打开 INTR 屏蔽位; 保存 INTR 原中断屏蔽字MOV DX,MY8259_OCW1MOV AL, 0FCHOUT DX,AL;初始化实验系统中 8259 的 OCW1 ;打开 IR0 和 IR1 的屏蔽位WAIT1:QUIT:STIMOV AH,1INT 16HJZ WAIT1CLIMOV AX,0000HMOV ES,AX;判断是否有按键按下;无按键则跳回继续等待,有则退出;恢复 INTR 原中断矢量MOV DI,INTR_IV ADDMOV

42、 AX,IP_BAK;恢复 INTR 原中断处理程序入口偏移地址MOV ES:DI,AXADD DI,2MOV AX,CS_BAKMOV ES:DI,AXMOV DX,INTR_OCW1 MOV AL,IM_BAK OUT DX,ALSTIMOV AX,4C00HINT 21HMYISR PROC NEARPUSH AXQUERY: MOV DX,MY8259_OCW3 IN AL,DXAND AL,03HCMP AL,01HJE IR0ISRJNE IR1ISRJMP OVERIR0ISR:MOV AL,30HMOV AH,0EHINT 10HMOV AL,20HINT 10HJMP OVE

43、RIR1ISR:MOV AL,31HMOV AH,0EHINT 10HMOV AL,20HINT 10HJMP OVEROVER: MOV DX,INTR_OCW2 MOV AL,20H OUT DX,AL;恢复 INTR 原中断处理程序入口段地址;恢复 INTR 原中断屏蔽寄存器的屏蔽字;返回到 DOS;中断处理程序 MYISR;向 8259 的 OCW3 发送读取 IRR 命令 ; 读出 IRR 寄存器值;若为 IR0 请求,跳到 IR0 处理程序;若为 IR1 请求,跳到 IR1 处理程序;IR0 处理,显示字符串 STR0;IR1 处理,显示字符串 STR1;向 PC机内部8259发送

44、中断结束命令MOV AL,20HOUT 20H,ALPOP AXIRETMYISR ENDPCODE ENDSEND START(代码结束)实验现象:使用运行命令运行程序,按动KK1+、KK2+按键,屏幕分别显示“0”、“ 1”,若同时按下KK1+、KK2+按键,则显示“ 0”实验调试无错误,程序运行无错误 实验结果:五、思考题1.单中断与多中断有何不同?单中断只需直接与CPU的INTR引脚相连,不经过8259,多中断需要经过8259的优先判别,再送至 CPU处理中断。2. 如何改变中断优先级的顺序?通过设置0CW2设置优先级循环方式。3. 可编程中断控制器8259A在协助CPU处理中断事务中

45、起哪些作用?管理和控制80x86的外部中断请求,可实现中断优先级判定,提供中断类型 号,屏蔽中断输入等功能。4. 可屏蔽中断与8259A是什么关系?8259A是一种可编程可屏蔽中断控制器,8259专门用来管理多个可屏蔽中断输 入。实验二 8255 并口控制器应用实验一、实验目的1. 掌握 8255 的工作方式及应用编程。2. 掌握 8255 典型应用电路的接法。二、实验内容1. 基本输入输出实验。 编写程序, 使 8255 的 A 口为输出, B 口为输入, 完成拨动开关到数据灯的数据传输。要求只要开关拨动,数据灯的显示就改变。2流水灯显示实验。编写程序,使 8255 的 A 口和 B 口均为

46、输出,数据 灯D7D0由左向右,每次仅亮一个灯,循环显示,D15D8与D7D0正相反,由右向左,每次仅点亮一个灯,循环显示。三、实验所用仪表及设备1. PC机一台。2. TD-PIT+ 实验系统一套。实验步骤( 1 )基本输入输出实验实验说明:本实验使 8255 的端口 A 作为输出口工作在方式 0,端口 B 作为输入口工 作在方式0。用一组开关信号接入端口 B,端口 A输出线接至一组数据灯上, 然后通过对 8255 芯片编程来实现输入输出功能。do 8255 Al单元 AGWR RD tzso I 4 5 & _7 12 3 4 s 4 7 kkelk.e&kknDDDDD图3-2 8255 基本输入输出实验参考接线图实验步骤如下: 实验接线图如图3-2所示,按图连接实验线路图。 运行Tdpit集成操作软件,根据实验内容,调用程序代码(T8255-1.ASM), 填写程序代码中的空缺处,编译、链接。 运行程序,改变拨动开关,同时观察 LED显示,验证程序功能。流程图:开始初始化8255控制寄存器结束返回到DOS将数据写入£2静的A 口实验代码如下:IOYOEQU3000H;片选IOYO对应的端口始地址MY8255_AEQUIOYO+OOH*4;8255的A 口地址MY8255_BEQUIOY0+01H*4;8255的B 口地址MY8255CE

温馨提示

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

评论

0/150

提交评论