微机原理与接口技术课程设计竞赛抢答器_第1页
微机原理与接口技术课程设计竞赛抢答器_第2页
微机原理与接口技术课程设计竞赛抢答器_第3页
微机原理与接口技术课程设计竞赛抢答器_第4页
微机原理与接口技术课程设计竞赛抢答器_第5页
已阅读5页,还剩15页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

1、微机原理与接口技术实验报告学生姓名:刘路 学生学号:2009212117学生班级: 0610902实验一、认识Tddebug集成操作软件一 实验目的1. 熟悉汇编程序的开发过程。2. 认识Tddebug集成操作软件。3. 掌握在Tddebug集成环境中编辑、编译、连接汇编语言程序方法。4. 掌握INT 21H软件中断来调用DOS内部子程序的方法二 实验设备PC微机一台三 汇编语言程序的开发过程汇编语言程序的开发过程如图1.1所示,这个过程主要有编辑、编译、链接几个步骤构成。汇编源程序调用编辑程序edit.exe调用编译程序tasm.exe或masm.exe调用链接程序tlink.exe或lin

2、k.exe编辑.asm汇编.obj链接.编辑编译链接图1.1 汇编语言程序开发过程1、源程序的编辑E: > EDIT TEST.ASM编辑过程就是将源程序输入内存,生成一个扩展名为ASM的文本文件并存入硬盘。2、源程序的编译E:>TASM TEST.ASM编译也称为汇编,就是利用汇编器(如TASM或MASM)对源程序进行编译,生成扩展名为OBJ的目标文件。在编译过程中,检查语法错误,若有错,则不生成目标代码文件,并给出错误信息。根据错误信息应返回到编辑状态,修改源程序。3、目标程序的链接E:> TLINK TEST.OBJ链接过程是利用链接程序(如TLINK或L

3、INK)将用户目标程序和库文件链接、定位,生成扩展名为EXE的可执行文件。链接时,如果链接文件找不到所需要的链接信息,则发出错误信息,不生成可执行文件。4、调试可执行程序E:>TD TEST.EXE如果生成的EXE文件运行后,并没有按照设计意图运行,就需要对程序进行调试,找出错误。再对源程序进行修改,即重复进行编辑、编译、链接、调试,直到生成完全正确的可执行文件为止。四 Tddebug集成操作软件使用说明1. 该软件是集编辑(Edit.exe)、编译(Tasm.exe)、连接(Link.exe)和调试(TD.exe)等多个功能于一体,可在DOS环境下运行,为用户提供了一个学习微机原理的实

4、验平台。2. 启动Tddebug D:wjyl> Tddebug若启动成功,进入主界面。3. Tddebug的菜单结构主菜单 子菜单 菜单说明Edit 编辑源文件(.asm)Compile Compile 编译源文件(.asm) Link 连接目标文件(.obj) Build All 编译和连接Pmrun 进入保护模式调试状态Rmrun Run 运行实模式程序(.exe) Debug 进入实模式调试状态(.exe)Help 版本信息Quit退出Tddebug4. 菜单选择(1)快捷键选择主菜单:ALT热键(,)(2)按左右键或直接使用快捷键在主菜单之间切换。使用上下键可选择子菜单中的菜单

5、项。5. 执行菜单项选中要执行的菜单项,键入Enter键,系统弹出对话框,输入需操作的文件名,以Enter键结尾,取消操作按Esc键。6. 实模式调试窗口说明(1)键入Alt+R选择Rmrun主菜单的Debug子菜单弹出实模式调试窗口。 此时可能会叠加一个报告无符号表的对话框,按Esc键关闭该对话框。(2)该窗口实际是Turbo Debugger调试器窗口,简称TD。其窗口的划分如图1-1所示。主菜单条代码显示调试区寄存器显示调试区标志寄存器显示调试区内存数据显示调试区堆栈显示调试区快捷键操作提示区图1-1 Turbo Debugger调试窗口划分图(3)主菜单中包含了File、Edit、Vi

6、ew、Run、Breakpoints、Data、Options、Windows和Help共9个菜单项。可使用热键选择相应的菜单。在调试程序或操作调试器中会使用一些快捷键来实现一些功能,下面将列出常用功能的快捷键及实现功能。l 快捷键:F1:显示帮助窗口F2:设置/清除断点F4:执行到光标处F5:放大/缩小窗口F7:单步执行F8:单句执行F9:运行程序F10:激活主菜单Ctrl+Break:终止程序执行Alt+X:退出TDTab:切换焦点区域l 当焦点区域在寄存器显示区中时:Ctrl+R:切换16位/32位通用寄存器并显示Ctrl+I:使光条指示寄存器的内容加1Ctrl+D:使光条指示寄存器的内

7、容减1Ctrl+Z:使光条指示寄存器的内容清零Ctrl+C:手动修改光条指示寄存器的内容l 当焦点区域在数据显示区中时:Ctrl+D:修改数据显示格式Ctrl+G:指定需要显示的内存区域首地址Ctrl+S:查找指定的字节值表Ctrl+C:修改光标当前指示存储单元的内容l 当焦点区域在代码显示区中时:Ctrl+G:指定需要显示的代码区域首地址Ctrl+S:查找指定的指令数字键/字符:修改光标当前指示指令五 实验内容及说明1. 实验内容:数据传送实验1) 编程将数据段中的一个字符串传送到附加段中,并输出附加段中的目标字符串到屏幕上。参见示例出程序。2) 修改此程序,采用字符串传送指令完成。2. 实

8、验中使用DOS功能调用(INT 21H):参见教材32位微型计算机原理与接口技术89页(1)显示字符串入口:AH=09H调用参数:DS:DX=串首地址,$为结束字符。(2)返回DOS系统入口:AH=4CH调用参数:AL=返回码3有关字符串的操作指令参见教材32位微型计算机原理与接口技术62页4 实验目的:通过对该程序进行调试,查看程序段、数据段、附加段装入内存后的分配情况。单步执行数据传送指令后,观察各个寄存器及数据区的内容。六 实验步骤1. 运行Tddebug软件,选择Edit菜单编写实验程序2. 使用Compile菜单中的Compile和Link对实验程序进行汇编、连接,生成执行文件。3.

9、 使用Rmrun菜单中的Run运行程序,观察运行结果。4. 使用Rmrun菜单中的Debug调试程序,查看程序段、数据段、附加段装入内存后的分配情况。单步执行数据传送指令后,观察各寄存器及数据区的内容。过程如下:1) 按F7单步执行,在代码区中有一个三角,表示正在执行的指令。每一条指令的执行一定会使目标寄存器和状态寄存器发生变化,从相关窗口看结果。2) 检查内存数据区的内容,关键是找出用户程序的数据段和附加段:l 方法1:在CPU窗口按Tab键使内存数据显示区成为活动区,按Ctrl+G键,输入:“DS或ES寄存器的值:偏移地址”,即可显示用户指定的数据区l 方法2:选择菜单View| Dump

10、,弹出内存数据显示窗口。3) 查看执行结果:按Alt+F5,切换到用户窗口。5. 更改数据区中的数据,考察、调试程序的正确性。七 参考程序清单;数据传送实验,采用相对寻址方式DDATASEGMENT ;定义源数据段MSRDB "HELLO,WORLD!$"LENEQU $- MSRDDATAENDSEXDA SEGMENT ;定义附加数据段MSDDB LEN DUP(?)EXDA ENDSMYSTACK SEGMENT STACK ;定义堆栈段DW 20 DUP(?)MYSTACK ENDSCODE SEGMENT ;定义代码段ASSUME CS:CODE,DS:DDATA

11、,ES:EXDASTART:MOV AX,DDATAMOV DS,AX ;装载数据段寄存器MOV AX,EXDAMOV ES,AX ;装载附加数据段寄存器MOVSI,OFFSET MSRMOV DI,OFFSET MSDMOV CX,LENMOVBX,0NEXT: MOV AL,MSRBX ;开始传输数据MOV ES:MSDBX,ALINCBXLOOP NEXTPUSH ESPOP DS ;将附加段寄存器指向的段值赋给数据段寄存器MOV DX,OFFSET MSDMOV AH,9 INT 21H ;显示字符串MOV AX,4C00HINT 21H ;返回DOS状态CODE ENDS END S

12、TART运行结果:实验二、代码转换程序设计一 实验目的1. 了解微机中所使用的各类数制及编码方法。2. 掌握不同进制数及编码相互转换的程序设计方法,加深对数码转换的理解。3. 掌握将存储在内存单元中的数据以十六进制数形式、十进制数形式和二进制数形式显示在屏幕上的方法。二 实验设备PC微机一台三 实验预习要求1复习运算类指令的用法。2复习子程序设计及调用方法。3阅读示例程序,掌握子程序的编程方法及相关技巧。4从实验内容中任选一道题目,仔细阅读相关的实验要求及说明,用子程序处理方式编写程序,以便上机调试。四 实验内容1【示例】将5位十进制数的数字串转换为一个字的二进制数2编写程序将内存中一个字的数

13、转换为十进制数的数字串显示。3编程将十进制的数字串转换为BCD码4编程将BCD码转换为二进制数5编程将二进制数转换为十进制数显示五 实验原理及说明6-1 计算机输入设备输入的信息一般是由ASCII码或BCD码表示的数据或字符,CPU一般均用二进制数进行计算或用其他信息进行处理,处理的结果又必须依照外设的要求变为ASCII码、或BCD码或七段显示码等。因此,在应用软件中,各类数制的转换和代码的转换是必不可少的。计算机与外设间的数码转换关系如图6-1所示,数码对应关系如表6-1所示。6-11. 将十进制数的数字串转换为二进制数十进制数可以表示为:其中代表十进制数1、2、3、9、0。上式可以转换为:

14、由上式可归纳出十进制数转换为二进制数的方法:从十进制数的最高位开始做乘10加次位的操作,依次类推,则可求出二进制数结果。本实验要求将缓冲区中的一个5位十进制数00012的ASCII码转换成二进制数,并将转换结果以十六进制数形式000C按位显示在屏幕上。转换过程的参考程序清单见后参考程序清单1,参考流程如图3-2所示。修改该示例程序,从键盘任意输入5个数,实现转换并显示。2. 将内存中一个字的数转换为十进制数的数字串。十六位二进制数(一个字)的值域为065535,最大可转换为5位十进制数。五位十进制数可表示为:因此,将十六位二进制数转换为5位ASCII码表示的十进制数数字串,即采用除10取余方法

15、,分别求,并将它们转换为ASCII码。以字符串方式显示在屏幕上。转换部分的参考流程参见图6-4。假设缓冲区中存放的数是000CH转换成十进制数的数字串后,在屏幕显示“00012”。3. 将十进制数的数字串转换为BCD码(1)本实验要求将一个5位十进制数的数字串“54321”的ASCII码存放在数据区中,转换为BCD码后,将转换结果分别显示在屏幕上,即显示:01,02,03,04,05。若输入的不是十进制数的ASCII码,则输出“FF”。提示:一个字节取其低4位即变为BCD码。转换部分的实验参考流程见图6-3。(2)修改程序,实现从键盘输入5位十进制数54321,转换BCD码后以输入顺序一致显示

16、,即显示:05 04 03 02 01图6-3 将十进制数的数字串转换为BCD码参考流程图6-2 将5位十进制数的数字串转换为二进制数参考流程4. 编程将BCD码转换为二进制数本实验要求将4个二位十进制的BCD码存放在某一段内存单元中,转换出的二进制码存入其后的存储单元中,转换结果以十六进制方式送屏幕显示。转换部分的实验流程参见图6-5。假设4个十进制数是:17,34,51,68用BCD码表示为:01H,07H,03H,04H,05H,01H,06H,08H显示为:0011,0022,0033,0044六 实验步骤1. 画出实验流程图。2. 运行Tddebug软件,选择Edit菜单编写实验程序

17、3. 使用Compile菜单中的Compile和Link对实验程序进行汇编、连接,生成执行文件。4. 使用Rmrun菜单中的Run运行程序,观察运行结果。5. 使用Rmrun菜单中的Debug调试程序。单步执行指令,观察各寄存器及数据区的内容。6. 更改数据区中的数据,考察程序的正确性。图 6-5 将BCD码转换为二进制数参考流程图 6-4 将内存中一个字的数转换为十进制数的数字串参考流程七 参考程序清单将十进制数的数字串转换为数DDATASEGMENTMESDB'The ascii code of decimal code are:$'BUFDB30H,30H,30H,31H

18、,32H ;十进制数00012的ASCII码DB10H DUP(0)DDATAENDSCODE SEGMENTASSUME CS:CODE,DS:DDATASTART:MOVAX,DDATAMOVDS,AXMOV SI,OFFSET BUFMOV BX,000AH ;送被乘数MOV CX,0004H ;送转换的位数MOV AH,00HMOV AL,SI ;取第一位的ASCII码SUB AL,30HA1:IMUL BX ;乘10ADD AL,SI+01SUB AL,30HINC SILOOP A1MOV SI,AXMOVDX,OFFSET MES ;显示提示信息MOVAH,09HINT21HIN

19、CSI ;显示高字节CALLSHOWDECSI ;显示低字节CALLSHOWMOVAX,4C00H ;返回DOSINT21HSHOWPROCNEAR ;显示内存中一个字节字符的程序MOVAL,DS:SIANDAL,0F0H ;取高4位SHRAL,4CMPAL,0AH ;是否是A以上的数JBC2ADDAL,07HC2:ADDAL,30HMOVDL,AL ;显示字符 MOVAH,02HINT21HMOVAL,DS:SIANDAL,0FH ;取低4位CMPAL,0AHJBC3ADD AL,07HC3:ADDAL,30HMOVDL,AL ;显示字符MOVAH,02HINT21HRETENDPCODE

20、ENDS END START运行结果:实验三、 PCI总线中断应用一 实验目的1. 掌握使用PCI中断的方法。2. 了解操作PCI设备I/O端口的方法。3. 进一步掌握8259中断控制器的工作原理、编程方法以及PC机如何通过8259A实现对外部可屏蔽硬件中断源的管理。4. 进一步掌握中断服务程序的设计方法。二 实验设备PC机一台,TD-PIT-B实验装置一套。三 实验预习要求1复习中断的概念,了解PC机系统中断向量表的占用情况(见表10-1)。2复习8259中断控制器的工作原理,了解PC机中外部可屏蔽硬件中断的处理过程。3复习PC机如何通过8259A实现对外部可屏蔽硬件中断源的管理。4仔细阅读

21、实验说明、示例程序,掌握PCI总线中断服务程序的编写方法。5根据实验内容,仔细阅读相关的实验要求及说明,编写程序,以便上机调试。四 实验内容1【示例】编写一实验程序,利用实验装置提供的中断源,完成每按动一次脉冲开关,产生一次中断,向显示器输出字符“7”。2修改示例程序,控制中断响应次数为10次,即当第11次以后按动脉冲开关,屏幕上不再显示“7”。五 实验说明1TD-PIT-B实验系统编程信息简要说明(1)本实验的接口电路是在PD-PIT-B实验装置上搭接完成,而PC机作为主机控制该实验装置。二者之间通过PCI总线扩展卡及转接逻辑在PD-PIT-B实验装置上提供了一个仿真ISA的总线接口,用户可

22、以基于该接口对常用接口芯片进行应用编程。TD-PIT-B实验系统的硬件环境,参见附录。(2)要利用仿真ISA的总线接口资源,扩展接口电路,首先必须掌握实验装置获取的系统配置资源,即PCI总线资源配置的有关内容。执行PCI_BIOS.EXE,获取实验用PCI总线扩展卡分配的地址空间及中断请求线。假设执行PCI_BIOS.EXE后屏幕显示:从以上获取的信息可知道,本实验用的PCI总线扩展卡申请了:l 4个I/O空间(最后一位为1来表示),其首地址分别是:0B800H,0BC00H,0C000H,0C400H。l 一个存储器空间(最后一位为0来表示),其首地址是:5000000H。l 一个中断请求I

23、RQ9(3)确定TD-PIT-B实验装置中各接口电路所使用的端口地址本系统中PCI配置空间的首地址是PCI总线扩展卡申请的第一个I/O空间(即BASE 0)。所以PCI各控制寄存器的地址定义为:BASE 0的首地址0B800H + 各控制寄存器的偏移地址而I/O部分实验使用的是PCI总线扩展卡申请的第三个I/O空间(即BASE 2)。各I/O接口芯片的端口地址定义为: BASE 2的首地址0C000H + 各端口的偏移地址2实验说明及处理流程本实验使用实验装置提供的中断请求信号IRQ,利用KK1的负脉冲作为中断源,每按一次KK1,在中断处理中完成字符“7”的显示。使用实验装置提供的IRQ信号,

24、除了要操作PC机的8259寄存器,还需要操作TD-PIT-PCI总线扩展卡上的控制寄存器“INTCSR”和“IMB4”,才可以实现中断的初始化、清除等。l PCI_BIOS.EXE实验装置获取的系统配置资源,确定控制寄存器INTCSR(偏移38H 3BH)和IMB4寄存器(偏移1FH)的端口地址:BASE 0的首地址0B800H + 各控制寄存器的偏移地址 及中断号IRQ9。l 初始化PCI中断(1) 初始化INTCSR:向INTCSR的端口写入003F1F00H,即0B838H写00H,0B839H写1FH,0B83AH写3FH,0B83BH写00H。(2) 初始化中断向量:在修改中断入口地

25、址时,建议先保存原来的入口地址。查表7-1获得IRQ9对应的中断向量号为71H,中断入口地址即为01C4H,并将该地址保存,替换为用户自己的中断服务程序入口地址。(3) 设置PC机8259中断屏蔽寄存器,对应位为0,允许中断。21H中设置07号屏蔽位,A1H中设置815号屏蔽位。同样保存原先的屏蔽位。IRQ9号中断须将A1H中的位1置0。l 清除实验用中断的中断源(1) 清PCI板卡的中断标志:对IMB4寄存器的第3字节(IMB_BYTE3)做一读操作,端口地址为0B81FH,然后向INTCSR第2字节(0B83AH)写入3FH。(2) 清PC机8259中断标志:设置8259的OCW2,复位中

26、断标志。(IRQ9中断向A0H写入61H,向20H写入62H。)(3) 退出程序返回DOS时恢复系统的初始化的设置:首先将保存的屏蔽命令字恢复到屏蔽寄存器中,中断服务程序入口的段地址和偏移地址恢复到中断向量表中,然后返回DOS。l 参考实验流程如图12-1所示。六 实验步骤1. 分析程序,画出实验流程图。2. 用排线将KK UNIT中的KK1脉冲开关与仿真ISA总线中的IRQ信号连接。打开实验箱电源。3. 运行程序,按动KK1,观察运行结果。4. 注意保留该程序,以便后续程序使用。12-1七 参考程序清单;先执行PCI_BIOS.EXE,获得PCI板卡申请的第一个I/O空间的首地址及;中断号,

27、修改下面CPU访问PCI操作寄存器的端口地址。 ;由中断号确定相应中断向量及OCW1、OCW2命令字。INTCSR_BYTE0 EQU 9438H ;修改PCI操作寄存器的端口地址INTCSR_BYTE1 EQU 9439HINTCSR_BYTE2 EQU 943AHINTCSR_BYTE3 EQU 943BHIMB4_BYTE3 EQU 941FHDATA SEGMENTCSBAK DW ? IPBAK DW ?MKBAK DB ?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: CLI MOV AX,DATA MOV DS,AX ;初始化

28、PCI寄存器 MOV DX,INTCSR_BYTE0 MOV AL,00H OUT DX,AL MOV DX,INTCSR_BYTE1 MOV AL,1FH OUT DX,AL MOV DX,INTCSR_BYTE2 MOV AL,3FH OUT DX,AL MOV DX,INTCSR_BYTE3 MOV AL,00H OUT DX,AL ;保存和替换中断入口地址 MOV AX,0000H MOV ES,AX MOV DI,01CCH ;INT 73H,01CCH=73H*4,根据中断号修改 MOV AX,ES:DI MOV IPBAK,AX ;IP MOV AX,OFFSET MYINT C

29、LD STOSW MOV AX,ES:DI ;CS MOV CSBAK,AX MOV AX,SEG MYINT STOSW ;保存中断屏蔽字寄存器内容 IN AL,0A1H MOV MKBAK,AL AND AL,0F7H ;打开中断屏蔽位,根据中断号修改 OUT 0A1H,AL STI ;等待A1: NOP CALL BREAK JMP A1 ;=中断服务程序=MYINT: PUSH DSPUSH AXPUSH DX ;清PCI板中断标志 MOV DX,IMB4_BYTE3 IN AL,DX MOV DX,INTCSR_BYTE2 MOV AL,3FH OUT DX,AL ;清8259中断标

30、志 MOV AL,63H ;根据中断号修改 OUT 0A0H,AL MOV AL,62H OUT 20H,AL ;显示字符7 MOV AH,0EH MOV AL,37H INT 10HPOP DXPOP AX POP DS IRET ;检测是否有键按下程序BREAK PROC NEAR PUSH DS MOV AH,06H MOV DL,0FFH INT 21H JE RETURN POP DSCLI ;恢复中断屏蔽命令字 MOV AL,MKBAK OUT 0A1H,AL ;恢复中断入口地址 MOV AX,0000H MOV ES,AX MOV DI,01CCH ;INT 73H,01CCH=73H*4,根据中断号修改 MOV AX,IPBAK CLD STOSW MOV AX,CSBAK STOSW MOV DX,INTCSR_BYTE1 MOV AL,00H OUT DX,AL STI MOV AX,4C00H INT 21HRETURN:POP DS RETBREAK ENDPCODE ENDS END START 实验四、程序设计题目1:将AL中的8位二进制数按倒序方式重新排列,即AL原来为D7D6D0,倒序

温馨提示

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

评论

0/150

提交评论