微机原理与接口技术试验报告参考_第1页
微机原理与接口技术试验报告参考_第2页
微机原理与接口技术试验报告参考_第3页
微机原理与接口技术试验报告参考_第4页
微机原理与接口技术试验报告参考_第5页
已阅读5页,还剩82页未读 继续免费阅读

下载本文档

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

文档简介

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

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

3、容;5. 更改数据区中的数据,考察程序的正确性。图1-1显示程序实验流程图五、程序清单DATA SEGMENTMES DB laoshihao:, 0AH,0DH,$ SD DB bDATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATASTART: MOV AX, DATAMOVDS, AXMOVDX, OFFSET MESMOVAH, 09HINT21HMOVDI, OFFSET SDMOVAL, DS:DIANDAL, 0F0HSHRAL,4CMPAL, 0AHJBL1ADDAL, 07HL1: ADDAL, 30HMOVDL, ALMOVAH, 02HI

4、NT21HMOVAL, DS:DIANDAL, 0FHCMPAL, 0AHJBL2ADDAL, 07HL2: ADDAL, 30HMOVDL, ALMOVAH, 02HINT21HMOVAX, 4C00HINT21HCODE ENDSENDSTART六、实验调试过程调试过程中出现警告, 显示没有使用堆栈段。 但是程序编写本身没有使用, 因此程序运行相对正常。第一个实验熟悉了轻松汇编软件的操作,为之后的 实验打下了基础。七、实验运行结果.专业.整理.实验二数据传送实验一、实验目的1. 熟悉Tddebug调试环境和Turbo Debugger的使用;2. 掌握与数据有关的不同寻址方式。二、实验所用

5、设备1. PC微机一台。三、实验内容将数据段中的一个字符串传送到附加段中,并输出附加段中的 目标字符串到屏幕上。实验程序:DDATA SEGMENTMSR DB LAOSHIXINKULE!$LEN EQU $- MSRDDATA ENDSEXDA SEGMENTMSD DB LEN DUPEXDA ENDSMYSTACK SEGMENT STACK DW 20 DUP(?)MYSTACK ENDS CODE SEGMENTASSUME CS:CODE, DS:DDATA, ES:EXDA START: MOV AX, DDATAMOVDS, AXMOVAX, EXDAMOVES,AXMOVS

6、I, OFFSETMSRMOVDI, OFFSETMSDMOVBX, 0MOV CX, LENNEXT: MOV AL, MSRBXMOVES:MSDBX, ALINCBXLOOPNEXTPUSHESPOPDSMOVDX, OFFSET MSDMOVAH, 9INT21HMOVAX, 4C00HINT21HCODE ENDSENDSTART四、实验步骤1. 运行Tddebug软件,选择Edit菜单编写实验程序;2. 使用Compile菜单中的Compile和Link对实验程序进行汇 编、连接;3. 使用Rmrun菜单中的Run,运行程序,观察运行结果;4. 使用Rmrun菜单中的Debug,调

7、试程序,观察调试过程中, 数据传输指令执行后,各寄存器及数据区的内容;5. 更改数据区中的数据,考察程序的正确性。五、实验调试过程程序中使用了寄存器相对寻址的方式。编译、连接、运行后程序运行正常。输入的字符显示在屏幕上。六、实验运行结果实验三数码转换程序实验一、实验目的掌握不同进制数及编码相互转换的程序设计方法。实验所用设备PC微机一台三、实验步骤1. 运行Tddebug软件,选择Edit菜单编写实验程序;2. 使用Compile菜单中的Compile和Link对实验程序进行汇 编、连接;3. 使用Rmrun菜单中的Run,运行程序,观察运行结果;4. 使用Rmrun菜单中的Debug,调试程

8、序,观察调试过程中, 数据传输指令执行后,各寄存器及数据区的内容;5. 更改数据区中的数据,考察程序的正确性。四、实验内容计算机输入设备输入的信息一般是由ASCII码或BCD?表示的数据或字符,CP用二进制数进行计算或其它信息处理,处理结果 的输出又必须依照外设的要求变为 ASCII码、BCD?或七段显示码 等。因此,在应用软件中,各类数制的转换和代码的转换是必不可 少的。计算机与外设间的数码转换关系如图 3-1所示,数码对应关 系如表3-1所示。进倒图3-1计算机与外设间的数码转换关系1将ASCII码表示的十进制数转换为二进制数十进制数可以表示为: Dnx 10n+Dn -1X 10n -1

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

10、QU$-MSRDATA ENDSCODE SEGMENT;ASSUME CS:CODE,DS:DATASTART: MOVAX,DATAMOVDS,AXMOVSI,OFFSET MSRMOVCX,L EN-1MOVAL,DS:SIMOVAH,0SUBAX,30HA1: MOVBX,0AHMULBXINCSIMOVDL,DS:SIMOVDH,0SUBDX,30HADDAX,DXDECCXJNZA1MOVCL,16MOVBX,AXA2: ROLBX,1MOVDL,BLANDDL,01HADDDL,30HMOVAH,2HINT21HDECCLJNZA2MOVAX,4C00HINT21HCODE EN

11、DSENDSTART(3)调试过程调试过程正常没有出现问题(4)实验结果2将十进制数的ASCII码转换为BC码本实验要求将键盘输入的一个五位十进制数54321的ASCII码存放入数据区中,转换为 BCD码后,并将转换结果按位分别显示 于屏幕上。若输入的不是十进制数的 ASCII码,则输出“ FF”。提 示:一字节ASCII码取其低四位即变为BC码。转换部分的实验流程 参见3-3。(1)实验流程CX=KBL-OFFH电号0-9 ( JASCH ?I1 y ,BL = ASCII-_ 保存BL亦相朋耶元图3-3十进制ASCII转换为BC码参考流程(2)实验程序DATA SEGMENTSTRING

12、DBINPUT:,$STRING1 DBOUTPUT:,$MSR DB6,?,6 DUPDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX LEA DX,STRING MOV AH,09H INT 21HMOV DX,OFFSET MSRMOVAH,0AHINT21HMOVDL,0AHMOVAH, 02HINT21HMOVDL,0DHMOVAH, 02HINT21HLEADX,STRING1MOVAH,09HINT21HMOVCL,MSR+1MOVSI,0002HMOVBX,OFFSET MSRA1:

13、MOVAL,BX+SICMPAL,40HJNCB1SUBAL,30HMOVCH,0PUSHCXMOVCL,4MOVDH,ALSHLDH,CLA2: ROLDH,1MOVDL,DHANDDL,01HADDDL,30HMOVAH,02HINT21HDECCLJNZA2POPCXINCSIDECCLJNZA1B1: JZB2MOVDL,46HMOVAH,02HINT21HINCSIDEC CLJNZ A1B2: MOV AX,4C00HINT 21HCODE ENDSEND START(3) 调试过程调试过程中在换行显示时遇到了问题, 无法换行显示。经 过检查发现在显示过程中的换行代码写错了, 改正

14、之后程 序显示正常。(4) 实验结果3. 将十六进制数的ASCII码转换为十进制数十六位二进制数的值域为0-65535,最大可转换为五位十进制 数。五位十进制数可表示为:N=C4X 104+C3X 103+D X 102+DX 10+D0因此,将十六位二进制数转换为五位ASCII码表示的十进制数, 就是求D-D4,并将它们转化为ASCII码。本实验要求将缓冲区中存放的 数,并将转换结果显示在屏幕上。(1)实验流程000CH勺ASCII码转换成十进制图3-4将十六进制数的ASCII码转换为十进制数(2)实验程序DATA SEGMENTMSR DWOOOCHMDR DB5 DUP(?),$DATA

15、 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOVAX,DATAMOVDS,AXMOVBX,OFFSET MDRMOVSI,5MOVAX,MSRA1: DECSIMOVDX,0MOVCX,0AHDIVCXADDDL,30HMOVBX+SI,DLCMPAX,0JNEA1JEA3A2: DECSIMOVAL,30HMOVBX+SI,ALCMPSI,0JNEA2A3: MOVDX,OFFSET MDMOVAH,09HINT21HMOVAX,4C00HINT21HCODE ENDSENDSTART(3)调试过程调试过程中在显示时遇到了问题, 无法逐个显示

16、。改为直 接显示之后程序显示正常。(4)实验结果4. BC码转换为二进制码本实验要求将四个二位十进制数的 BC码存放在某一内存单元 中,转换出的二进制数码存入其后的内存单兀中,转换结束,送屏 幕显示。(1)实验流程I 取敌的卜优踝存到用应单兀送塀幕显乍图3-5 BCD码转换为二进制码参考流程(2)实验程序DATA SEGMENTMSR DB 03H,02H,03H,05H,07H,06H,07H,08H,4 DUP(?) DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOVAX,DATAMOVDS,AXMOVBX,OFFSET MSRMOV

17、DI,8MOVCX,4MOVDH,0AHA1: MOVSI,1MOVAL,BX+SIMULDHDECSIADDAL,BX+SIMOVBX+DI,ALPUSHCXMOVCH,ALMOVCL,8A2: ROLCH,1MOVDL,CHANDDL,01HADDDL,30HMOVAH,02HINT21HDECCLJNZA2POPCXMOVDL,42HMOVAH,02HINT21HMOVAH,2MOVDL,13INT21HMOVAH,2MOVDL,10INT21HADDBX,2INCDIDECCXJNZA1MOVAX,4C0iINT21HCODE ENDSENDSTART(3)调试过程调试过程中没有出现问

18、题程序显示正常(4)实验结果实验四运算类程序实验一、实验目的1. 掌握运算类指令编程及调试方法;2. 掌握运算类指令对各状态标志位的影响及测试方法二、实验所用设备1. PC微机一台。三、实验步骤1. 运行Tddebug软件,选择Edit菜单编写实验程序;2. 使用Compile菜单中的Compile和Link对实验程序进行汇 编、连接;3. 使用Rmrun菜单中的Run,运行程序,观察运行结果;4. 使用Rmrun菜单中的Debug,调试程序,观察调试过程中, 数据传输指令执行后,各寄存器及数据区的内容;5. 更改数据区中的数据,考察程序的正确性。四、实验内容80x86指令系统提供了实现加、减

19、、乘、除运算的基本指令,可 对表4-1所示的数据类型进行算术运算。表4-1数据类型算术运算表歡制二进制BCD码蒂符号无符号组會非组會运算符+电一1斗帝X+ 、-+ %i X操作数手节、字、多辅度手节二位甦40手节(一位数手)1二进制双精度加法运算本实验要求计算X+Y=Z将结果Z俞出到屏幕,其中X=001565A0H Y=0021B79EH实验利用累加器AX先求低十六位和,并存入低址存储单元, 后求咼16位和,再存入咼址存储单兀。由于低位和可能向咼位有进 位,因而高位字相加语句需用ADC旨令,则低位相加有进位时,CF=1 高位字相加时,同时加上CF中的1。在80386以上微机中可以直接使 用32

20、位寄存器和32位加法指令完成本实验的功能。(1)实验程序DATA SEGMENTX DW065A0H,0015HY DW0B79EH,0021HZ DW2 DUPDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV CX,2CLCMOV SI,0L1: MOV AX,XSIADC AX,YSIMOV ZSI,AXINC SIINC SILOOP L1MOV BX,Z2CALL LIST_BXMOV BX,ZCALL LIST_BXMOV AH,4CHINT 21HLIST_BX PROCMOV CH,

21、4MOV CL,4NEXT: ROL BX,CLMOV DL,BLAND DL,0FHADD DL,30HCMP DL,39HJLE PRINTADD DL,7PRINT: MOV AH,2INT 21HDEC CHJNZ NEXTRETLIST_BX ENDPCODE ENDSEND START(2)调试过程调试过程中一开始将X、丫的高低位弄反了,结果输出结果 错误改正后没有出现问题程序显示正常。(4)实验结果实验五分支程序设计实验一、实验目的1.掌握分支程序的设计方法。实验所用设备1. PC微机一台三、实验内容程序有顺序、循环、分支和子程序四种结构形式,分支结构的 示意图如图5-1所示。本

22、实验要求通过求无符号字节序列中的最大 值和最小值来反映分支程序的结构形式。图5-1分支结构示意图实验可以使用BH BU乍为暂存现行的最大值和最小值,且在程 序的初始,将BH和BL初始化为首字节的内容,然后进入循环操作。 在循环操作中,依次从字节序列中逐个取出一个字节的内容与BHBL进行比较,若取出的字节内容比BH勺内容大或比BL中的内容小, 则修改之。当循环结束操作时,将BH BL分别送屏幕显示。参考实 验流程如图5-2所示。四、实验步骤1.运行Tddebug软件,选择Edit菜单编写实验程序,提供8字节的数据:0D9H 07H, 8BH 0C5H 0EBH 04H, 9DH 0F9H2. 使

23、用Compile菜单中的Compile和Link对实验程序进行汇 编、连接;3. 使用Rmrun菜单中的Run,运行程序,观察运行结果;4. 更改数据区中的数据,考察程序的正确性。五、实验流程根据实验要求编写程序并调试,写出程序调试过程及运行情 况。cx=on3H=S: BL=SI)CX=0?AL BH? BH=ALunAL n BL吓 BL=AL图5-2分支程序实验流程图六、实验程序DATA SEGMENTD1 DB 0D9H,07H,8BH,0C5H,0EBH,04H,9DH,0F9HC1 EQU $-D1DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DAT

24、ASTART: MOV AX,DATAMOVDS,AXMOVCX,C1-1MOVSI,0MOVBL,D1SIMOVBH,D1SIL1: INCSIMOVAL,D1SICMPAL,BLJNBL2MOVBL,ALL2: CMPAL,BHJNAL3MOVBH,ALL3: LOOPL1CALLDISPMOVDL,0AHMOVAH,2INT21HMOVDL,0DHMOVAH,2INT21HMOVBL,BHCALLDISPMOVAH,4CHINT21HDISP PROCMOVCH,2MOVCL,4NEXT: ROL BL,CLMOVDL,BLANDDL,0FHADDDL,30HCMPDL,39HJLEPR

25、INTADDDL,7PRINT: MOV AH,2INT21HDECCHJNZNEXTRETDISP ENDPCODE ENDSENDSTART七、实验调试过程调试过程没有出现问题程序显示正常八、实验结果实验六循环程序设计实验一、实验目的1. 掌握循环程序的设计方法。实验所用设备1. PC微机一台三、实验内容本实验要求通过求某数据区内负数的个数来表现循环程序的结 构形式。要求实验程序在数据区中存放一组数据,为统计负数的个 数,逐个判断区内的数据,然后将所有数据中凡是符号位为1的数据的个数累加起来,即得到区内所包含负数的个数。循环程序的结 构示意如图6-1所示。四、实验步骤1. 运行Tddebu

26、g软件,选择Edit菜单编写实验程序,提供10 字节的数据:12H, 88H, 82H, 89H, 33H, 90H, 01H, 10H, OBDH 01H;2. 使用Compile菜单中的Compile和Link对实验程序进行汇编、连接;3. 使用Rmrun菜单中的Run,运行程序,观察运行结果;4. 更改数据区中的数据,考察程序的正确性。五、实验程序DATA SEGMENTDBD112H,88H,82H,89H,33H,90H,01H,10H,0BDH,01HC1 EQU $-D1DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV A

27、X,DATAMOVDS,AXMOVCX,C1MOVBL,0MOVSI,0L1: MOVAL,D1SICMPAL,0JNSL2INCBLL2: INCSILOOPL1MOVCH,2MOVCL,4NEXT: ROLBL,CLMOVDL,BLANDDL,0FHADDDL,30HCMPDL,39HJLEPRINTADDDL,7PRINT: MOVAH,2INT21HDECCHJNZNEXTMOVAH,4CHINT21HCODE ENDSEND START六、实验调试过程调试过程没有出现问题程序显示正常七、实验结果汇编实验实验心得:汇编语言是本学期新学习的一门语言, 在刚开始学习的时 候确实遇到了很大的

28、困难,他完全不同于C语言,但是老师上课讲 解的非常细心,做实验的时候遇到的一些问题老师也会非常耐心的 回答。因此经过老师的指点和自己的努力, 我完成了汇编实验的要 求内容。基本掌握了汇编语言的编写方法。为以后的学习打下了坚 实的基础。实验一 8259中断控制器应用实验一、实验目的1. 学习中断控制器8259的工作原理;2. 掌握可编程控制器8259的应用编程方法。二、实验所用设备1. PC微机一台;2. TD-PIT +实验系统一套。三、实验内容1. 利用PC机给实验系统分配的中断线,设计一个单中断应用。 使用单次脉冲模拟中断产生。编写中断处理程序,在显示器屏幕 上显示一个字符。2. 利用实验

29、平台上8259控制器对扩展系统总线上的中断线INTR 进行扩展。编写程序对8259控制器的IR0和IR1中断请求进行 处理。四、实验说明及步骤1.单中断应用实验本实验要求使用总线上INTR中断请求线完成一次单中断应用 实验。中断处理程序完成在屏幕上的显示字符“ 9”。实验前先运 行CHECK?序,得到INTR所对应的中断号、相应的初始化命令字 寄存器ICW及操作命令字寄存器OCV的地址、开屏蔽的命令字、中 断矢量地址和PCI卡中断控制寄存器INTCSR的地址。得到这些信 息后就可以开始设计实验了。参考程序流程如图11-4所示。实验步骤如下:1. 确认从PC机引出的两根扁平电缆已经连接在实验平台

30、上;2. 首先运行CHEC程序,查看INTR中断号及相关信息;3. 参考实验流程图编写程序,然后编译链接;4. 将单次脉冲单元的KK1连接到系统总线上的INTR;5. 运行程序,按动KK1+按键,观察中断是否产生。初捽讣工口 INIV5R饶专LNTK申断屛航 幵丫断I主程序(b)中断处理程序图11-4 8259中断应用实验(1)参考程序流程图实验程序:;T8259-1.asm;单中断应用实验对应的中断矢量地址INTR_IVADD EQU 01C8H ;INTRINTR_OCW1 EQU0A1H;INTR址INTR_OCW2 EQU0A0H;INTR址INTR_IM EQU OFBH;INTR对

31、应PC机内部8259的OCW地对应PC机内部8259的OCW地 对应的中断屏蔽字STACK1 SEGMENT STACKDW 256 DUPSTACK1 ENDSDATA SEGMENTMES DB Press any key to exit!,0AH,0DH,0AH,0DH,$保存INTR原中断处理程序入口段保存INTR原中断处理程序入口偏保存INTR原中断屏蔽字的变量CS_BAK DW ?;地址的变量IP_BAK DW?;移地址的变量IM_BAK DB?;DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,

32、AX显示退出提示替换INTR的中断矢量MOV DX,OFFSET MESMOV AH,09HINT 21HCLIMOV AX,0000H;MOVES,AXMOVDI,INTR_IVADDMOVAX,ES:DIMOVIP_BAK,AX ;移地址MOVAX,OFFSET MYISRMOVES:DI,AX ;地址ADDDI,2MOVAX,ES:DIMOVCS_BAK,AX ;地址MOVAX,SEG MYISRMOVES:DI,AX ;址MOVDX,INTR_OCW1器,打开INTR屏敝位INAL,DXMOVIM_BAK,AL ;ANDAL,INTR_IMOUTDX,ALSTIWAIT1: MOVAH

33、,1;INT16HJZWAIT1;出保存INTR原中断处理程序入口偏 设置当前中断处理程序入口偏移保存INTR原中断处理程序入口段设置当前中断处理程序入口段地设置中断屏蔽寄存保存INTR原中断屏蔽字判断是否有按键按下无按键则跳回继续等待,有则退QUIT: CLIMOVAX,0000H;恢复INTR原中断矢量MOVES,AXMOVDI,INTR_IVADDMOVAX,IP_BAK ;恢复INTR原中断处理程序入口偏移地址MOVES:DI,AXADDDI,2MOVAX,CS_BAK ;恢复INTR原中断处理程序入口段地址MOVES:DI,AXMOVDX,INTR_OCW1;恢复INTR原中断屏敝寄

34、存器的丿并敝字MOVAL,IM_BAKOUTDX,ALSTIMOVAX,4C00H ;返回至U DOSINT21HMYISR PROC NEAR;中断处理程序MYISRPUSHAXMOVAL,39HMOVAH,0EHINT10HMOVAL,20HINT10H向PC机内部8259发OVER: MOV DX,INTR_OCW2 送中断结束命令MOVAL,20HOUTDX,ALMOVAL,20HOUT20H,ALPOPAXIRETMYISR ENDPCODE ENDSEND START调试过程无错误。程序运行正常 实验结果2扩展多中断源实验利用实验平台上的8259控制器,可以对总线上的INTR进行扩

35、 展。将8259的INT连接到INTR, 8259的8路中断请求线IR0IR7 就成了单一 INTR中断请求线的扩充。这8路中断源共用INTR的中 断矢量,共用INTR的中断服务线程。在INTR的中断服务线程中通 过对8259 0CW3勺查询,以确定是IROIR7中哪个产生中断,然 后转到相应的服务线程进行处理。 将8259的OCW中 P位置1即可 执行查询,查询字格式如图11-5所示。D7D6D5D4D3mdiDCIr -1-| -W1V;()0i无中浙请我1请求中断中1:有中斷请朮图11-5 8259 0CW3查询命令字格式本实验要求实现8259控制器IRO、IR1两路中断。用KK14和

36、KK2+莫拟两个中断源,在IRO对应的服务程序中显示字符“ 0”, 在IR1对应的服务程序中显示字符“ 1”。实验程序参考流程如图 11-6所示。参考实验电路如图3-5-8所示。实验步骤如下:1. 确认从PC机引出的两根扁平电缆已经连接在实验平台上;2. 首先运行CHECK1序,查看INTR中断号及相关信息;3. 参考实验流程图编写程序,然后编译链接;4. 参考实验接线图连接实验电路;5. 运行程序,按动KK1+ KK2+按键,观察中断响应是否正常。 试验程序:;T8259-2.asm;8259扩充中断应用实验INTR_IVADD EQU 01C8H ;INTR对应的中断矢量地址INTR_0C

37、W1 EQU0A1H;INTR内部8259的OCW地址INTR_OCW2 EQU0A0H;INTR内部8259的OCW地址INTR_IM EQU 0FBH ;INTR 断屏蔽字IOY0 EQU 3000H;的端口始地址MY8259_ICW1 EQU 8259的ICW1端口地址MY8259_ICW2 EQU 8259 的 ICW2端 口地址MY8259_ICW3 EQU 8259 的 ICW3端 口地址MY8259_ICW4 EQU 8259 的 ICW4端 口地址MY8259_OCW1 EQU 8259的OCW端口地址MY8259_OCW2 EQU 8259的OCW端口地址MY8259_OCW

38、3 EQU 8259的OCW端口地址对应PC机对应PC机对应的中片选IOY0对应实验系统中实验系统中实验系统中实验系统中实验系统中实验系统中实验系统中IOY0+00HIOY0+04HIOY0+04HIOY0+04HIOY0+04HIOY0+00HIOY0+00HSTACK1 SEGMENT STACKDW256 DUPDATA SEGMENTMESDB卩 ressany key toSTACK1 ENDSexit!,OAH,ODH,OAH,ODH,$CS_BAK DW ?断处理程序入口段地址的变量IP_BAK DW ?断处理程序入口偏移地址的变量IM_BAK DB ?断屏蔽字的变量DATA E

39、NDS保存INTR原中保存INTR原中保存INTR原中CODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOVMOV显示退出提示MOVINTCLIMOV断矢量MOVMOVMOVDS,AXDX,OFFSET MESAH,09H21HAX,0000H;ES,AXDI,INTR_IVADDAX,ES:DI替换INTR的中MOV IP_BAK,AX断处理程序入口偏移地址MOV AX,OFFSET MYISR保存INTR原中设置当前中断MOV ES:DI,AX ;处理程序入口偏移地址ADDDI,2MOVAX,ES:DIMOV CS_BAK,AX ;保

40、存 INTR原中断处理程序入口段地址MOV AX,SEG MYISRMOV ES:DI,AX ;设置当前中断处理程序入口段地址MOVDX,INTR_OCW1设置中断屏蔽寄存器,打开INTR的屏蔽位IN AL,DXMOV断屏蔽字ANDOUTMOV初始化实验系统中MOV8259、需要 ICW4OUTMOV初始化实验系统中MOVOUTIM_BAK,AL ;AL,INTR_IMDX,ALDX,MY8259_ICW1 8259 的 ICW1AL,13H ;DX,ALDX,MY8259_ICW2 8259 的 ICW2AL,00HDX,AL保存INTR原中边沿触发、单片MOV初始化实验系统中DX,MY82

41、59_ICW48259 的 ICW4MOV AL,00HOUT DX,AL非自动结束EOIMOV DX,MY8259_OCW3向8259的OCW发送读取IRR命令MOV AL,0AHOUT DX,ALMOV初始化实验系统中DX,MY8259_OCW18259 的 OCW1MOV AL,0FCH的屏蔽位OUT DX,AL打开IR0和IR1STIWAIT1: MOV AH,1 键按下INT 16HJZ WAIT1继续等待,有则退出QUIT: CLI判断是否有按无按键则跳回MOV AX,0000H恢复INTR原中断矢量MOV ES,AXMOVDI,INTR_IVADDMOVAX,IP_BAK ;恢复

42、INTR原中断处理程序入口偏移地址MOVES:DI,AXADDDI,2MOVAX,CS_BAK ;恢复INTR原中断处理程序入口段地址MOVES:DI,AXMOVDX,INTR_OCW1恢复INTR原中断屏蔽寄存器的屏蔽字JMOVAL,IM_BAKOUTDX,ALSTIMOVAX,4C00H ;返回到DOSINT21HMYISR PROC NEAR;中断处理程序MYISRPUSH AXQUERY: MOV DX,MY8259_OCW3 向8259的OCW发送读取IRR命令器值INAL,DX;读出IRR寄存ANDAL,03HCMPAL,01HJEIR0ISR ;若为IR0请求,跳到IR0处理程序

43、JNE跳到IR1处理程序IR1ISR ;若为IR1请求,JMPOVERIR0ISR: MOVAL,30H字符串STR0;IR0处理,显示MOVAH,0EHINT10HMOVAL,20HINT10HJMPOVERIR1ISR: MOVAL,31H字符串STR1;IR1处理,显示MOVAH,0EHINT10HMOVAL,20HINT10HJMPOVEROVER: MOV DX,INTR_OCW2向PC机内部8259发送中断结束命令MOVAL,20HOUTDX,ALMOVAL,20HOUT20H,ALPOP AXIRETMYISR ENDPCODE ENDSEND START实验调试无错误,程序运行

44、无错误 实验结果:实验接线图:去中晰向卖验墓统中8259 中新常觀齡哼U1RO处理現iFlR但0(a)主程序渭PCLINTCSR标击值 岗PC內S25P总申新冋氓能争(b)中断处理程序图11-6 8259中断应用实验(2)参考程序流程图系 统 总 线单次脉KK1+ 冲单元KK2+图11-7 8259中断应用实验(2)参考接线图思考题1. 单中断与多中断有何不同?答:单级中断系统是中断结构中最基本的形式在单级中断系统 中,所有的中断源都属于同一级,所有中断源触发排成一行。其优 先次序是离CPL近的优先权高当响应某一中断请求时,执行该中 断源的中断服务程序.在此过程中.不允许其他中断源再打断中断

45、服务子程序即使优先权比它高的中断源也不能再打断只有该中 断服务程序执行完毕之后,才能响应其他中断.多级中断系统是指计算机系统中有相当多的中断源,根据各中断条件的轻重缓急程度不而分成若干级别, 每一中断级分配给一个 优先权.一般说来,优先极高的中断级可以打断优先权低的中断服 务程序,以程序嵌套方式进行工作根据系统的配置不同,多级中断可分为一维多级中断和二维多级 中断。2. 如何改变中断优先级的顺序?答:确定中断源的优先级别有三种方法:软件查询法、硬件排队 电路法和专用中断控制芯片法。3. 可编程中断控制器8259A在协助CPU处理中断事务中起哪些 作用?答:它与Intel微处理器兼容,单片可连接

46、8个中断请求源,而且它 自身可以扩展,将多个8259A级联,最多可扩充到64级中断。通过对8259A编程,可以设置中断触发方式、中断类型码、中 断屏蔽、还可以设置中断优先级、以及是否允许中断嵌套等等。4. 可屏敝中断与8259A是什么关系?答:8259A对中断源的屏蔽是通过中断屏蔽寄存器进行的,有普通 屏蔽和特殊屏蔽两种方式。(1) 普通屏蔽方式:若是直接设置 CPU勺IF=O,则屏蔽所 有通过INTR线的可屏蔽中断申请。使用 8259A中断屏蔽寄存器 IMR来实现中断源的分别屏蔽:IMRi作用于IRi , IMRi=1时,屏蔽 由IRi输入的中断请求。(2) 特殊屏蔽方式:特殊屏蔽方式仅对本

47、级中断进行屏蔽,而允许其他优先级比它高或低的中断进入系统,这被称作特殊屏蔽方式。实验十二 8255并口控制器应用实验一、实验目的1. 掌握8255的工作方式及应用编程;2. 掌握8255的典型应用电路接法。二、实验所用设备1. PC微机一台;2. TD-PIT +实验系统一套。三、实验内容1. 基本输入输出实验。编写程序,使 8255的A 口为输出,B 口 为输入,完成拨动开关到数据灯的数据传输。 要求只要开关拨动, 数据灯的显示就改变。2. 流水灯显示实验。编写程序,使8255的A 口和B 口均为输出, 实现16位数据灯的相对循环显示。四、实验说明及步骤1 基本输入输出实验本实验使8255端

48、口 A工作在方式0并作为输出口,端口 B工作在方式0并作为输入口。用一组开关信号接入端口B,端口 A输出线接至一组数据灯上,然后通过对8255芯片编程来实现输入输出功能。参考程序流程如图12-3所示。丨产雄1I纽姑忆ar?揑制葡箕剧曲皿1肓丄左|I出町厲号七袒弗如口图12-3 8255并口应用实验(1)参考程序流程图实验步骤如下:1.2.3.4.5.确认从PC机引出的两根扁平电缆已经连接在实验平台上; 参考图12-4所示连接实验线路;首先运行CHECKS序,查看I/O空间始地址;利用查出的地址编写程序,然后编译链接;运行程序,拨动开关,看数据灯显示是否正确。开关电LE D显示 单元图12-4 8255并口应用实验(1)参考接线图试验程序:;T8255-1.asm;8255基本输入输出实验IOY0 EQU 3000H;MY8255_A EQUIOYO+OOH*4 ;8255片选IOYO对应的端口始地址的A口地址的B口地址MY82

温馨提示

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

最新文档

评论

0/150

提交评论