1、微机原理及应用实验指导微机原理及应用实验指导书(电气、热动专业)邢化玲 编 写西北农林科技大学水利与建筑工程学院2011年12月第一章 汇编语言程序设计实验1.1 汇编语言程序设计的实验环境及上机步骤1.1.1 实验环境汇编语言程序设计的实验环境如下:(1)硬件环境微型计算机(Intel x86系列CPU)一台(2)软件环境Windows98/2000/XP操作系统任意一种文本编辑器(EDIT、NOTEPAD(记事本)等)汇编程序(MASM.EXE)连接程序(LINK.EXE)调试程序(TD.EXE)1.1.2 上机实验步骤下面介绍的上机实验步骤适用于实验3和实验4,实验1和实验2仅使用TD.
2、EXE。(1)确定源程序的存放目录在D盘的根目录下创建存放源程序的目录,如目录名为ASM,并把EDIT.COM、MASM.EXE、LINK.EXE、TD.EXE都拷贝到此目录中。(2)建立ASM源程序建立ASM源程序可以使用EDIT或记事本文本编辑器。下面的例子说明了用EDIT文本编辑器来建立ASM源程序的步骤(假定要建立的源程序名为HELLO.ASM)。在Windows中点击桌面左下角的“开始”按钮选择“运行”在弹出的窗口中输入“EDIT.COM D:ASMHELLO.ASM”,屏幕上出现EDIT的编辑窗口。窗口标题行显示了EDIT程序的完整路径名。紧接着标题行下面的是菜单行,窗口最下面一行
3、是提示行。菜单可以用Alt键激活,然后用方向键选择菜单项,也可以直接用Alt-F打开File文件菜单,用Alt-E打开Edit编辑菜单,等等。编辑窗口用于输入源程序,源程序输入完毕后,用Alt-F打开File菜单,用其中的Save功能将文件存盘。如果在键入EDIT命令时未给出源程序文件名,则这时会弹出一个“Save as”窗口,在这个窗口中输入你想要保存的源程序路径和文件名(本例中为D:ASMHELLO.ASM)。(3)用MASM.EXE汇编源程序产生OBJ目标文件源文件HELLO.ASM建立后,要使用汇编程序对源程序文件汇编,汇编后产生二进制的目标文件(.OBJ文件)。在DOS命令提示符窗口
4、中的具体操作方法如下:选择“开始”“程序”“附件”“命令提示符”,打开DOS命令提示符窗口,然后用CD命令转到源程序目录下,接着输入MASM命令:D:ASMMASM HELLO.ASM操作时的屏幕显示如图1-1所示。如果没有错误,MASM就会在当前目录下建立一个HELLO.OBJ文件。如果源文件有错误,MASM会指出错误的行号和错误的原因。图1-2是在汇编过程中检查出两个错误的例子。在这个例子中,可以看到源程序的错误类型有两类:警告错误(Warning Errors)。警告错误不影响程序的运行,但可能会得出错误的结果。此例中无警告错误。严重错误(Severe Errors)。对于严重错误,MA
5、SM将无法生成OBJ文件。此例中有一个严重错误。在错误信息中,圆括号里的数字为有错误的行号(第2行),后面给出了错误类型及具体错误原因。如果出现了严重错误,你必须重新进入EDIT编辑器,根据错误的行号和错误原因来改正源程序中的错误,直到汇编没有错为止。(4)用LINK.EXE产生EXE可执行文件在上一步骤中,汇编程序产生的是二进制目标文件(OBJ文件),并不是可执行文件,要想使我们编制的程序能够运行,还必须用连接程序(LINK.EXE)把OBJ文件转换为可执行的EXE文件。具体操作如下: D:ASMLINK HELLO.OBJ操作时的屏幕显示如图1-3所示。如果没有错误,LINK就会建立一个H
6、ELLO.EXE文件。如果OBJ文件有错误,LINK会指出错误的原因。对于无堆栈警告(Warning:NO STACK segment)信息,可以不予理睬,它不影响程序的执行。如链接时有其它错误。须检查修改源程序,重新汇编、连接,直到正确。(5)执行程序建立了HELLO.EXE文件后,就可以直接在DOS下运行此程序,如下所示:D:ASMHELLO.EXE程序运行结束后,返回DOS。如果运行结果正确,那么程序运行结束时结果会直接显示在屏幕上。如果程序不显示结果,我们如何知道程序是否正确呢?例如,这里的HELLO.EXE程序并未显示出结果,所以我们不知道程序执行的结果是否正确。这时,我们就要使用T
7、D.EXE调试工具来查看运行结果。此外,大部分程序必须经过调试阶段才能纠正程序执行中的错误,调试程序时也要使用TD.EXE。下面简单介绍一下TD.EXE程序的使用说明。1.1.3 TD.EXE程序的使用说明(1)如何载入被调试程序 转到TD.EXE所在目录,在DOS提示符下键入以下命令(假定要调试的程序名为HELLO.EXE):D:ASMTD HELLO.EXE (2)如何输入(修改)汇编指令(a)用Tab键选择代码区为当前区域;(b)用方向键把光标移到期望的地址处,如果是输入一个新的程序段,建议把光标移到CS:0100H处;(c)打开指令编辑窗口:在光标处直接键入汇编指令,在输入汇编指令的同
8、时屏幕上就会自动弹出指令的临时编辑窗口。 (d)在临时编辑窗口中输入/编辑指令,每输入一条指令,按回车,输入的指令即可出现在光标处(替换掉原来的指令),同时光标自动下移一行,以便让你输入下一条指令。(3)如何查看/修改数据段的数据(a)用Tab键选择数据区为当前区域;(b)使用局部菜单中的“Goto”命令并结合使用方向键把光标移到期望的地址单元处(注意数据区的光标是一个下划线),数据区就从该地址处显示内存单元的内容。(c)若要修改该地址处的内容,则需打开数据编辑窗口。在光标处直接键输入数据,在输入数据的同时屏幕上就会自动弹出数据编辑窗口。(d)在数据编辑窗口中输入所需的数据,输入完后,按回车,
9、输入的数据就会替代光标处的原始数据。(4)如何修改寄存器内容(a)用Tab键选择寄存器区为当前区域;(b)用方向键把光标移到要修改的寄存器上;(c)打开编辑输入窗口:在光标处直接键入所需的值,在键入的同时屏幕上就会自动弹出编辑输入窗口。(d)在编辑输入框中键入所需的值,然后回车,这个新的值就会取代原来该寄存器的内容。(5)如何修改标志位内容(a)用Tab键选择标志区为当前区域;(b)用方向键把光标移到要修改的标志位上;(c)按回车键或空格键即可使标志位的值在0、1之间变化。 (6)如何指定程序的起始执行地址 方法1:(a)用Tab键选择代码区为当前区域;(b)用Alt-F10键激活代码区局部菜
10、单,选择局部菜单中的“New CS:IP”命令。方法2:(a)用Tab键选择寄存器区为当前区域;(b)用方向键把光标移到CS寄存器上,输入程序起始地址的段地址;(c)用方向键把光标移到IP寄存器上,输入程序起始地址的偏移量。 (7)如何单步跟踪程序的执行(a)用上述第6条中的方法首先指定程序的起始执行地址;(b)按F7或F8键,每次将只执行一条指令。注:若当前执行的指令是CALL指令,则F7将跟踪进入被调用的子程序,而F8则把CALL指令及其调用的子程序当作一条完整的指令,要执行完子程序才停在CALL指令的下一条指令上。 (8)如何只执行程序的某一部分指令 方法1:用设置断点的方法。(a)用上
11、述第6条中的方法首先指定程序的起始执行地址;(b)用方向键把光标移到要执行的程序段的最后一条指令的下一条指令上(注意,不能移到最后一条指令上,否则最后一条指令将不会被执行),按F2设置断点。也可按Alt-F2键,然后在弹出的输入窗口中输入断点地址。(c)按F9键执行,程序将会停在所设置的断点处。方法2:用“运行程序到光标处”的方法。(a)用上述第6条中的方法首先指定程序的起始执行地址;(b)用方向键把光标移到要执行的程序段的最后一条指令的下一条指令上(注意,不能移到最后一条指令上,否则最后一条指令将不会被执行)。(c)按F4键执行程序,程序将会执行到光标处停下。方法3:用“执行到指定位置”的方
12、法。(a)用上述第6条中的方法首先指定程序的起始执行地址;(b)按Alt-F9,在弹出的输入窗口中输入要停止的地址(即要停在哪条指令上,就输入哪条指令的地址),按回车,程序将会执行到指定位置处停下。 (9)如何查看被调试程序的显示输出按Alt-F5键。 (10)如何在Windows2000中把TD的窗口设置的大一些按Alt-O键,在下拉菜单中选择Display options项,在弹出的对话框中,用Tab键选Screen lines选项,用、键选中“43/50”,按回车。然后按F5键,使CPU窗口充满TD窗口。1.2 实验一:8088数据传送指令及移位指令的练习1.2.1实验目的(1)熟悉80
13、88指令系统的数据传送指令及移位指令。(2)利用TD调试工具来调试汇编语言程序。1.2.2实验内容按照题目要求预先编写好实验中的程序,完成以下任务。(1)通过下述程序段的输入和执行来熟悉TD的使用,并通过显示器屏幕观察程序的执行情况。练习程序段如下: MOV BL,08H MOV CL,BL MOV AX,03FFH MOV BX,AX MOV DS:0020H,BX (2)用以下程序段将一组数据压入(PUSH)堆栈区,然后通过不同的出栈顺序出栈,观察出栈后数据的变化情况。压栈程序段如下: MOV AX,0102H MOV BX,0304H MOV CX,0506H MOV DX,0708H
14、PUSH AX PUSH BX PUSH CX PUSH DX POP AXPOP BX POP CXPOP DX(3)将DS:1000H字节存储单元中的内容送到DS:2020H单元中存放。试分别用8088的直接寻址、寄存器间接寻址、变址寻址、寄存器相对寻址传送指令编写程序段,并上机验证结果(4)输入并运行下表中的程序段,把结果填入表右边的空格中,并分析结果,说明本程序段的功能是什么。程序段字单元(1A00H)=字单元(1A02H)=MOV 1A00H, 0AA55HMOV 1A02H, 2AD5HSHL WORD PTR1A02H,1 CMP 1A00H, 8000HCMCRCL WORD
15、PTR1A02H,1RCL WORD PTR1A00H,1(5)在al中存放了一个压缩bcd码,输入并运行下面的程序段,并分析结果。4001和4002单元的内容是什么,说明本程序段的功能是什么。mov bx, 4000h mov al, 68h mov bx, al mov ah, al and al, 0fh or al, 30h mov bx+1, al mov cl, 4 shr ah, cl or ah, 30h mov bx+2, ah1.2.3实验报告要求整理出运行正确的各题源程序和运行结果,并回答题目中的问题。1.3 实验二:算术逻辑运算及串指令的练习1.3.1 实验目的(1)熟
16、悉算术逻辑运算指令和串操作指令的功能。(2)了解标志寄存器各标志位的意义和指令执行对它的影响。(3)利用TD调试工具来调试汇编语言程序。1.3.2 实验任务(1) 实验程序段及结果表格标志位CFZFSFOFPFAF程序段:MOV AX, 0A0AHADD AX, 0FFFFHMOV CX, 0FF00HADC AX, CXSUB AX, AXINC AXOR CX, 0FFHAND CX, 0F0FHSHL CX,1RCL CX,1MOV BX, 4000HMOV BX, CX000000(2)用BX寄存器作为地址指针,从BX所指的内存单元(0010H)开始连续存入三个无符号数(10H、04H
17、、30H),接着计算内存单元中的这三个数之和,和放在0013H单元中,再求出这三个数之积,积放0014单元中。写出完成此功能的程序。(3)输入以下程序段并运行之,回答后面的问题。 CLDMOV DI,1000HMOV AX,55AAHMOV CX,10HREP STOSW上述程序段执行后:从DS:1000H开始的16个字单元的内容是什么?(4)在上题的基础上,再输入以下程序段并运行之,回答后面的问题。MOV SI,1000HMOV DI,2000HMOV CX,20HREP MOVSB程序段执行后: (a) 从DS:2000H开始的16个字单元的内容是什么? (b) (SI)= ?(DI)=
18、?(CX)= ?,并分析之(5)在以上两题的基础上,再输入以下三个程序段并依次运行之。程序段1:MOV SI,1000HMOV DI,2000HMOV CX,10HREPZ CMPSW程序段1执行后: (a) ZF=? 根据ZF的状态,两个串是否比较完了? (b)(SI)= ?(DI)= ?(CX)= ?,并分析之。程序段2:MOV 2008H,4455HMOV SI,1000HMOV DI,2000HMOV CX,10HREPZ CMPSW程序段2执行后: (a) ZF=? 根据ZF的状态,你认为两个串是否比较完了? (b)(SI)= ?(DI)= ?(CX)= ?,并分析之。1.3.3实验
19、报告要求(1)整理出完整的实验程序段和运行结果。(2)回答题目中的问题。1.4 实验三:数据的输入及显示程序设计1.4.1实验目的(1)学习如何从键盘读取数据以及如何将数据予以显示。(2)掌握简单的DOS系统功能调用。(3)学习8088汇编语言程序的基本结构和程序设计的基本方法。(4)熟悉在PC机上建立、汇编、链接、调试和运行8088汇编语言程序的全过程。1.4.2 实验任务(1)要在屏幕上显示一个字符串Hello, world,试编写程序段并上机进行验证。(2)从str1开始存放有一个字符串This is a string,要求把这个字符串从后往前传送到str2开始的内存区域中(即传送结束后
20、,从str2开始的内存单元的内容为gnirts a si sihT),试编写程序段并上机进行验证。(3)设a、b、c、d四个数分别以压缩的BCD码形式存放在内存NUM开始的四个单元,计算(a+b)-(c+d),并把结果显示在屏幕上。改变a,b,c,d内容,然后重新汇编、连接并运行程序,检查其结果与手工计算是否相符。下面是几组实验用的数据: (a)a09,b16,c04,d17 (b)a38,b41,c29,d34 (c)a70,b23,c42,d41 (d)a63,b73,c62,d501.4.3 实验报告要求整理出完整的实验程序和使用不同实验数据时的运行结果,对结果进行解释。1.5 实验四:
21、分支及循环程序设计1.5.1实验目的掌握分支程序和循环程序的设计方法。1.5.2 实验任务(1)从键盘输入4个十进制数字,依次保存在以DATA1为首的连续5字节内存单元的前4个单元中(先输入的在前,为高位),作为一个四位的十进制数乘以9后,结果保存在以DATA1为首的连续5字节内存单元中,然后在屏幕上以十进制方式显示出该运算结果。(2)从num单元开始存放了10个数(数的范围在099之间),对这10个数从大到小进行排序,并统计059、6079、8099的数各有多少。最后在屏幕上显示统计的结果。显示格式如下:80-99: xx60-79: xx0-59: xx1.5.3 实验报告要求整理出完整的
22、实验程序和使用不同实验数据时的运行结果,总结一下编制分支程序和循环程序的要点。第二章 硬件接口电路实验2.1 微机接口实验台使用说明本课程实验使用的是清华同方教学仪器设备公司生产的TPC-2003A通用32位微机接口试验台,通过一条50线扁平电缆将实验台和总线接口卡相连。2.1.1 TPC-2003A通用微机接口实验台简介(1)实验系统组成该系统由一块PCI总线扩展卡和一个扩展实验台组成,集成电路芯片(8251、74LS273、74LS244、6116)共4片。PCI总线卡插在机箱内任一PCI插槽上,提供PCI-ISA总线的转换与驱动,PCI卡与实验台之间由一条50芯扁平电缆连接。实验台采用开
23、放式结构,模块化设计支持开放实验。实验台上除固定电路外还设有用户扩展实验区。有四个通用集成电路插座,每个插座引脚都有对应的“自锁紧”插孔,利用这些插孔可以搭试更多的自己设计的实验。实验台自带5V电源保护电路。一旦接线发生错误,造成5V电源短路,立即报警并切断电源。实验输出信号都带有保护电阻,保护试验电路的安全。(2)试验台上的自锁紧插孔的使用本实验台采用了“自锁紧”插座及连接线,能够解决连线接触不良的现象。自锁紧插座插入连线时,应把插头稍微用力沿顺时针方向旋转一下,才能保证接触良好。拔出时,应先逆时针方向旋转待插头完全松开后,再向上拔出。2.1.2 实验台结构本实验台结构如图2-1所示。现将其
24、主要部件的功能和结构简介如下:图2-1 实验台结构图(1)I/O地址译码电路I/O地址译码电路如图2-2所示,这里选用PC机未用的地址空间:280H2BFH,共分8条译码输出线:Y0Y7,其地址分别是280H287H;288H28FH;290H297H;298H29FH;2A0H2A7H;2A8H2AFH;2B0H2B7H;2B8H2BFH,8根译码输出线在实验台“I/O地址”处分别由“自锁紧”插孔引出,供实验选用。图2-2 实验台的I/O地址译码电路(2)总线插孔采用“自锁紧”插座在标有“总线”区引出数据总线D7D0;地址总线A9A0;读、写信号、;中断请求信号IRQ;DMA请求信号DRQ1
25、;DMA响应信号、;及AEN信号,供学生搭试各种接口实验电路使用。(3)时钟电路时钟电路如图2-3所示,可以输出1MHZ、2MHZ两种信号,供A/D转换器、定时器/计数器、串行接口实验使用。图2-3 时钟电路(4)逻辑电平开关电路逻辑电平开关电路如图2-4所示,实验台右下方设有8个开关K7K0,开关拨到“1”位置时开关断开,输出高电平,向下打到“0”位置时开关接通输出低电平,电路中串接了保护电阻,使接口电路不直接同+5V、GND相连,可有效地防止学生因误操作、误编程损坏集成电路现象。图2-4 逻辑电平开关电路 图2-5 LED显示电路(5)LED显示电路LED显示电路如图2-5所示,实验台上设
26、有8个发光二极管及相关驱动电路(输入端L7L0),当输入信号为“1”时发光,为“0”时灭。(6)七段数码管显示电路如图2-6所示,实验台上设有两个共阴极七段数码管及驱动电路,段码为同相驱动器,位码为反相驱动器,从段码与位码的驱动器输入端(段码输入端:a、b、c、d、e、f、g、dp,位码输入端:s1、s2)输入不同的代码即可显示不同数字或符号。图2-6 七段数码管显示电路(7)单脉冲电路如图2-7所示,采用RS触发器产生,实验者每按一次开关即可以从两个插座上分别输出一个正脉冲及负脉冲,供“中断”、“DMA”、“定时器/计数器”等实验使用。实验台上有相同的电路两套。图2-7 单脉冲电路(8)逻辑
27、笔图2-8为逻辑笔电路,图中JP4是一个三端的选择端子,当12短接时测量CMOS电平,23短接时测TTL电平。图2-8 逻辑笔电路(a)当输入端Ui 接高电平时L12(红灯)亮。(b)当输入端Ui 接低电平时L13(绿灯)亮。(c)当输入端Ui 接中间态时(CMOS 1.35V-3.5V;TTL 0.7V-2.5V)L12(红灯)和L13(绿灯)都灭。(d)当输入端Ui 接单个正脉冲时,L13(绿灯)亮,同时在接收到单脉冲的瞬间L14(黄灯)闪烁一次。L11(红灯)亮。(e)当输入端Ui 接单个负脉冲时,L12(红灯)亮,同时在接收到单脉冲的瞬间L14(黄灯)闪烁一次。L11(红灯)亮。(f)
28、当输入端Ui 接连续正脉冲且动态频率小于5MHZ 时,L13(绿灯)亮,L14(黄灯)亮。L11(红灯)亮。(g)当输入端Ui 接连续负脉冲且动态频率小于5MHZ 时,L12(红灯)亮,L14(黄灯)亮。L11(红灯)亮。(h)当测过单脉冲或连续脉冲后,L11会一直亮,在下一次测量脉冲以前须按一次复位按钮KL1,L(红灯)11灭。(9)继电器及驱动电路如图2-9所示,实验台上设有一个5V直流继电器及相应的驱动电路,当其开关量输入端输入数字量“1”时,继电器动作:常开触点闭合、常闭触点断开。通过相应的实验使学生了解开关量控制的一般原理。图2-9 继电器及驱动电路 图2-10 复位电路(10)复位
29、电路如图2-10所示,能在上电时,或按下复位开关S2后产生一个高电平的复位信号供8255、8251等接口芯片使用。(11)接口集成电路实验台上有微机原理硬件实验最常用接口电路芯片,包括:可编程定时器/计数器(8253)、可编程并行接口(8255)、数/模转换器(DAC0832)、模/数转换器(ADC0809),这里芯片与CPU相连的引线除片选信号外都已连好,与外界连接的关键引脚在芯片周围用“自锁紧”插座引出,供学生实验时使用。其中数/模转换器附有双极性输出,模/数转换器附有双极性输入插座。具体电路可见下面实验说明。(12)跳线开关(JP)为了方便实验,实验台上设有跳线开关,分以下几种: (a)
30、USB模块电源跳线开关JA:这个跳线开关在实验台的左上角。当实验台50线总线插座与USB模块相连接时用短路片将JA短接,为USB模块提供5V电源。当实验台50线总线插座与PCI卡连接时,JA短路片要拔掉。 (b)模拟量输入选择开关JP2、JP3:在实验台的左下角,分别用于模/数转换模拟量的输入极性选择,JP2的1、2两点短路时ADC0832的IN2可输入双极性电压(5V5V),2、3两点短路时输入单极性电压(05V)。JP3用于选择IN1的输入极性,选择方法与JP2相同。(13)5V电源插针为了减少主机5V电源的负担和各主要芯片的安全,在主要接口芯片的左上角都有相应的电源连接插针(标记为5V),当实验需要该芯片时,用短路块短接插针即可接通5V电源。对用不到的芯片可将短
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1