微机原理与接口技术实验
更新时间:2023-10-07 19:34:01 阅读量: 综合文库 文档下载
微机原理及接口技术 实 验 指 导 书
武汉理工大学教材中心
2012年7月
目 录
DVCC-32JHP微型计算机实验平台技术说明??????????????????
1
实验一、软件开发环境与DEBUG调试????????????????????7 实验二、指令系统及汇编??????????????????????????10 实验三、汇编语言程序设计及调试一?????????????????????14 实验四、汇编语言程序设计及调试二?????????????????????17 实验五、汇编语言程序设计及调试三?????????????????????20 实验六、8255可编程并行接口的应用?????????????????????23 实验七、8253可编程定时/计数器的应用设计?????????????????26
DVCC-32JHP微型计算机实验平台技术说明
科学技术的发展,将微机的应用带入各个领域,于是掌握微机系统知识及微机接口技术就显得尤为重要。纵观微机的发展,无论是微处理器、微机接口还是微机操作平台,都发生了巨大的变化,于是教学生学习并掌握微机新技术就成为高校培养人才新的目标。
1.1微机的发展变化
微机的发展变化主要体现在两个方面:第一方面属于微处理器的发展变化,第二方面属于微机体系结构及微机操作平台的发展变化。
微处理器作为微机中的核心部件,从早期的8位处理器,发展到16位的8086/8088,32位的80386及奔腾系列,已经历了6代的变化(现在INTEL公司还推出了64位的Itanium)。从80386开始的32位80x86系列CPU提出了实模式、保护模式及虚拟86模式三种工作模式的概念:在实模式下。CPU相当于一个可以进行32位处理的快速8086;在保护模式下,CPU的工作原理和机制与16位处理器的工作原理及机制产生了本质的不同:它采用了新的应用数据结构、虚拟存储管理方案、新的中断/异常处理机制并从硬件上支持了多任务,目前微机主流操作系统(如windows 9x)都是基于CPU的保护模式来工作的。而虚拟86模式,是保护模式下一个可以仿真8086的任务。
在微处理器发展的同时,微机体系机构也从早期CPU总线直接与外设相连发展到现在采用的多级总线结构,PC微机的外围总线也由低速总线发展到以PCI总线为主的高速总线,于是外围高速设备得到越来越广泛的使用,社会对接口应用开发人员掌握的软硬件知识及具备的软硬件开发能力提出了更高的要求。而微机操作平台方面,Windows 9x操作系统已经成为PC微机操作系统的主流,由于Windows是基于CPU保护模式工作的,它与在16位操作系统时代的DOS、Windows3. 1有所不同。如在以往的操作系统上,用户程序可以通过直接调用BIOS或者DOS功能调用实现对硬件的访问操作。而32位操作系统Windows9x,在CPU保护模式的支持下,对系统核心程序及系统硬件操作采取了屏蔽的策略,若要实现对硬件中断、DMA、I/O或者是绝对存储访问,都必须通过设备驱动程序。这使得系统变得更安全,也使得在Windows上从事核心软件开发及硬件控制对一般程序员变得非常困难。于是大多数应用开发者只能停留在为别人的核心技术开发外包程序的层面上,对许多技术的核心不能碰、也不敢碰,阻碍了我国自主科技产业创新与发展的速度。
1.2微机的系统机构
PC微机的发展过程中,无论是徽处理器还是微机的系统结构始终都保持着向上兼容性。从PC/XT总线结构开始,系统总线不断升级,相继出现了ISA总线、EISA总线、MCA(微通道结构)总线、VESA局部总线、PCI局部总线和AGP接口,微机的整体处理速度和可靠性得到了提高。
1.2.1基于PC/XT总线的微机结构
在采用8088作为处理器的第一代通用微型计算机中,系统中的所有其他部件直接与处理器相连,处理器作为系统核心,通过PC总线对系统中的其他部件进行控制及数据交换。这种PC总线称为XT总线,它采用了8位数据总线和20位地址总线。以CPU时钟作为总线时钟,可支持4通道DMA和8级硬件中断。其结构示意如图1-2-1所示。
1.2.2 PC AT/ISA总线的微机结构
1984年IBM公司公布了PC/AT系统总线结构,系统中采用了80286微处理器和80287协处理器。PC/AT支持与PC/XT兼容的结构,且性能比PC/XT增强了许多。后来Intel公司联合其他几家微处理器生产厂家推出了一个公开的总线标准称为ISA总线规范,它支持了24为地址线、16位数据线、15级硬件中断和7个DMA通道。其结构示意如图l-2-2所示。
1
8088 DRAM 8个8位扩展插槽
DRMA控制器 8087可选 系统总线 扩展总线缓冲
ROM BIOS DMA控制器 8253 8259 8255 8250 图1-1-1 PC和PC/XT系统结构
1.2.3基于南北桥结构中心结构的微机系统
随着微处理器和操作系统的变化,用户对微机处理的高速性提出新的要求,为了提高处理器与各部件及部件与部件间传输信息的整体效率,微机系统中采用了十分明确的总线分级结构,即CPU总线、局部总线(PCI总线)、系统总线结构。连接各级总线的是一些高集成度的多功能桥路芯片,它们可以起到信号速度、电平转换和控制协议转换的作用。按照芯片组功能和连接方法的划分,该结构可以分成南北桥结构和中心结构。
在南北桥结构中,各级总线主要通过两片桥芯片进行连接。一片称作北桥的用于连接CPU总线和PCI总线,另一片称作南桥,用于连接PCI总线和系统总线。常用的芯片组有Inte l公司的440系列,如440BX,其南桥芯片为82371EB,集成了PCI-ISA连接器、IDE控制器、USB控制器、2个增强型DMA控制器、2个8259中断控制器、8253/8254定时/计数器、电源管理逻辑和可选的I/O APIC等。这种总线结构可以使高速外围设备通过PCI插槽直接与PCI相连,适应当前高速外设与微处理器连接的需求。其结构示意如图l-2-3所示。 80486-XX DRMA
实时钟/日历 CMOS RAM ISA总线 L2Cache DRMA与L2Cache控制器 CPU总线 8个8位 扩展插槽 8042MPU键盘 鼠标控制器 PC AT/ISA核心逻辑芯片组 6个16位 AT/ISA 扩展插槽 ROM BIOS 图1-2-2 PCAT/ISA 的总线结构
2
2个USB接口 南桥芯片组 2个IDE接口 系统BIOS ISA总线 I/O APIC PCI总线 CPU总线 图形设备 北桥芯片组 主存 PentiunⅡ PentiunⅡ 图1-2-3 微机的南北桥总线结构
在中心机构的微机中,芯片组由3个芯片组成:存储控制中心MCH、I/O控制中心ICH和固件中心FWH。MCH用于提供高速AGP接口、动态显示管理、电源管理和内存管理功能。ICH提供了音频编码和调制解调器编码接口、IDE控制器、USB接口、局域网络接口,并与PCI总线及其插槽连接在一起。ICH还和Super I/O控制器相连,而super I/O主要为系统中的慢速设备如串口、并口、键盘、鼠标等,提供与系统通信的数据交换接口。固件中心包含了主板BIOS、显示BIOS和可用于数字加密、安全认证等领域的硬件随机数产生器。其结构示意如图1-2-4所示。
2个USB接口 2个IDE接口 AC`97编码 Lan连接器 I/O 控制中心 Super I/O 固件中心 PCI总线 CPU总线 CPU CPU AGP图形控制存储控制中心 主存储器 图1-2-4 中心结构的微机结构
1.3 实验程序开发集成环境
将实验程序开发工具(汇编语言、C/C++语言程序开发包),故障诊断程序和外设模块实验演示程
3
序集成在一个环境中,构成一个用户应用程序集成开发环境(IDE)。实验程序的编辑、编译、连接、调试、运行和修改的全过程都在这个IDE中完成。如图1-3-1所示。
图1-3-1 DVCC-32HJP集成开发环境 for Windows
1.3.1实验程序开发工具
DVCC32JHP集成开发软件安装完成后,在桌面和开始菜单里都可以找到该软件,点击它就可以运行了。该软件支持两种类型的程序开发:汇编程序(.asm文件)和C语言程序(.cpp, .h文件)。除了一般的编辑功能外,本软件还支持语法高亮,大大提高了程序的可读性。用户编辑好程序并保存后,即可方便地进行编译。
1 .新建一个源程序
DVCC32JHP集成开发软件运行后,选择菜单栏中的“文件”菜单,菜单下拉后选择“新建”,或是在工具栏中单击“新建”,会弹出“新建”窗口,用户选择新建表单中的“ASM”或“CPP”,点击“确定”即可新建对应的汇编或c语言程序,点击“取消”则取消新建源文件操作。
2. 打开一个源程序
集成开发环境下,选择菜单栏中的“文件”菜单,菜单下拉后选择“打开”,或是在工具栏中单击“打开”,会弹出“打开”文件选择窗口,在窗口中“文件类型”下拉菜单中选择“ASM文档(*.asm)”或“CPP文档(*.cpp)”一项,程序即显示当前目录下所有的asm或cpp文档,单击要选择的文件,选中的文件名会显示在“文件名”中,单击“打开”则打开当前选中的cpp文档显示在文档显示区域。点击“取消”则取消新建源文件操作。
3. 编辑源程序
本软件提供了基本的编辑功能,并实现了实时的语法高亮,各项操作说明如下: 撤消
集成开发环境下,选择菜单栏中的“编辑”菜单,菜单下拉后选择“撤消”,或是在工具栏中单击“撤消”,即可撤消上一步剪切或粘贴操作。
4
剪切
集成开发环境下,选择菜单栏中的“编辑”菜单,菜单下拉后选择“剪切”,或是在工具栏中单击“剪切”,即可将文档显示区域中选中的内容剪切到剪贴板。
复制
集成开发环境下,选择菜单栏中的“编辑”菜单,菜单下拉后选择“复制”,或是在工具栏中单击“复制”,即可将文档显示区域中选中的内容复制到剪贴板。 粘贴
集成开发环境下,选择菜单栏中的“编辑”菜单,菜单下拉后选择“粘贴”,或是在工具栏中单击“粘贴”,即可将剪贴板中当前内容粘贴到文档显示区域光标所在处。
全选
集成开发环境下,选择菜单栏中的“编辑”菜单,菜单下拉后选择“全选”,即可将文档区域中所有内容选中。
查找
集成开发环境下,选择菜单栏中的“编辑”菜单,菜单下拉后选择“查找”,弹出查找对话框。在查找内容一栏中输入需要查找的内容,可以选择区分大小写和全字匹配,单击查找下一个,程序则在文档显示区域中搜索与查找内容匹配的字符串,找到第一个后则高亮显示,用户点击查找下一个,则继续搜索下一个匹配字符串,点击“取消”退出查找操作。
替换
集成开发环境下,选择菜单栏中的“编辑”菜单,菜单下拉后选择“替换”,弹出查找替换对话框。点击“替换”,在查找内容一栏中输入被替换的内容,在替换一栏中输入替换的内容,可以选择区分大小写和全字匹配。单击“查找下一个”,程序则在文档显示区域中搜索与查找内容匹配的字符串,找到第一个后则高亮显示,用户可单击“替换”将匹配的字符串替换,也可单击“全部替换”,将当前文档显示区域中所有与查找内容匹配的字符串全部替换。单击“查找下一个”则继续搜索下一个匹配字符串。也可单击“取消”退出查找操作。
4. 保存源程序
集成开发环境下,选择菜单栏中的“文件”菜单,菜单下拉后选择“保存”,如果是无标题文档,用户需在提示下输入文档的名称及选择保存的路径,单击确定后保存;否则程序自动保存当前文档显示区域中显示的文档。或者选择菜单栏中的“文件”菜单,菜单下拉后选择“另存为”,并在提示下输入文档的名称及选择保存的路径,单击确定后保存。
5. 编译源程序
5.1 编译调试窗口
集成开发环境下,选择菜单栏中的“查看”菜单,单击编译调试窗口选项或是单击工具栏中“显示/隐藏编译调试窗口”按钮则可对状态栏的显示进行操作。若当前环境显示编译调试窗口,则单击编译调试窗口选项即可隐藏该窗口,编译调试窗口选项前选中标记将消失;若当前隐藏编译调试窗口,则单击编译调试窗口选项即可显示该窗口,编译调试窗口选项前选中标记将显示。
5.2 ASM编译 汇编
集成开发环境下,选择菜单栏中的“ASM编译”菜单,选择汇编选项则程序对当前ASM源文件进行汇编,编译调试窗口中输出汇编结果,若程序有错,则详细报告错误信息。
汇编+链接
集成开发环境下,选择菜单栏中的“ASM编译”菜单,选择汇编+链接选项则程序对当前ASM源文件进行汇编与链接,编译调试窗口中输出汇编与链接的结果,若程序汇编或链接有错,则详细报告错误信息。
汇编+链接+运行 集成开发环境下,选择菜单栏中的“ASM编译”菜单,选择汇编+链接+运行选项则程序对当前ASM源文件进行汇编与链接,编译调试窗口中输出汇编与链接的结果,若程序汇编或链接有错,则详细报
5
告错误信息。若汇编与链接成功,程序自动运行。
5.3 CPP编译
编译
集成开发环境下,选择菜单栏中的“CPP编译”菜单,选择编译选项则程序对当前CPP源文件进行编译,编译调试窗口中输出编译结果,若程序有错,则详细报告错误信息。
编译+链接
集成开发环境下,选择菜单栏中的“CPP编译”菜单,选择编译+链接选项则程序对当前CPP源文件进行编译与链接,编译调试窗口中输出编译与链接的结果,若程序编译或链接有错,则详细报告错误信息。
编译+链接+运行
集成开发环境下,选择菜单栏中的“CPP编译”菜单,选择编译+链接+运行选项则程序对当前CPP源文件进行编译与链接,编译调试窗口中输出编译与链接的结果,若程序编译或链接有错,则详细报告错误信息。若编译与链接成功,程序自动运行。
1.3.2 用户程序的调试和运行
1. Windows状态下ASM程序的调试和运行 ● 开始调试
在ASM程序正常链接之后,选择菜单栏中的“ASM调试”菜单,再选择“开始调试”选项,则对源程序进行反汇编,进入ASM的调试状态,并在寄存器窗口中显示主要的寄存器的当前值。
● 寄存器窗口
在ASM调试状态下,选择菜单栏中的“View”菜单,单击“Registers”寄存器窗口选项,则打开寄存器窗口,寄存器窗口中显示主要的寄存器名称及其在当前程序中的对应值,你可以直接修改其值。点击寄存器窗口左上方的“■”,可以关闭寄存器窗口。
● 设置新的IP地址
在ASM的调试状态下,将光标移到要设定的新IP行上,点击左键,选定该行,再点击右键,在弹出的窗口里,选择“New CS:IP”选项,当前行就被设置成新的IP值,指示起始地址的“→”符号会移到该行,以后的程序运行就从新的IP开始。
还有一种方法可以设置新的IP,在寄存器窗口内直接修改IP值。 ● 设置/清除断点
在ASM的调试状态下,选择菜单栏中的“Break Points”菜单,选择“Toggle”或按F2键设置断点。如果当前光标所在行未设断点,则选择该选项后该行设置断点;否则,该行原设置的断点被清除。被设置成断点的行光带变成红色。
● 连续运行
在ASM的调试状态下,选择菜单栏中的“Run”或按F9键,则程序连续运行,直至碰到断点或程序运行结束。
● 单步
在ASM的调试状态,选择菜单栏中的“Step over”或按F8键,则程序往后运行一条语句。 ● 跟踪
在ASM的调试状态下,选择菜单栏中的“Trace into”或按F7键,则程序往后运行一条语句,但在调用子程序时,将跳入子程序进行调试。
● 清除全部断点 在ASM的调试状态下,选择菜单栏中的“Break Points”菜单,再选择“Delete all”选项,则将当前程序中所有断点全部清除。
● 退出调试
6
在ASM的调试状态下,选择菜单栏中的“File”菜单中的“Quit”项,则退出ASM的调试,返回到集成软件环境。
2. 纯DOS状态下ASM程序的调试和运行
由于部分实验中,要直接写PCI卡上9054芯片的控制寄存器,如有关中断和DMA传输以及扩展RAM的读写,所以只能在纯DOS环境中才能进行调试和运行。WINDOWS重启进入MSDOS方式由于系统资源被重新规划过,所以不能正常进行实验。
在纯DOS环境中,建议用PC机里纯DOS环境中的DEBUG调试软件。
3.C语言程序的调试
大多数实验所用的程序需要用到配套的Visual Studio生成的静态链接库(.lib)或动态链接库(.dll)文件,因此本软件采用了Visual C++的调试系统。由于版权问题,本软件没有提供Visual C++的调试器,需要用户自己安装。在CPP运行环境下,选择菜单栏中的“CPP调试”菜单,选择开始调试选项,如果用户安装了Visual C++,本软件将会自动调用Visual C++,如果用户没有安装Visual C++,本软件将会给出提示。C语言程序的调试方法详见Visual C++的调试系统有关资料。
1.3.3实验指南
1 实验的查看和演示
本软件提供了实验项目的查看和演示功能,包括实验说明、实验原理图、实验流程图、ASM程序和CPP程序,并可以运行实验程序,使用户能方便快捷地了解感兴趣的实验。
在集成软件环境下,选择菜单栏中的“演示实验”菜单,选择DVCC32JHP演示实验选项,则出现DVCC32JHP演示实验对话框。各实验有几个子项,包括实验说明、实验原理图、实验流程图、ASM程序和CPP程序和运行实验。也许你的软件中不具有所有子项,比如没有CPP程序(会在后续升级版本中加入)或实验原理图(本来就没有硬件图)或可执行文件(目前环境下该实验项目不能运行)。双击对应子项,即可查看对应的项目。
实验说明
双击实验说明子项,即可弹出对应实验的实验说明。 实验原理图
双击实验原理图子项,即可弹出对应实验的实验原理图。 实验流程图
双击实验流程图子项,即可弹出对应实验的实验流程图。 ASM程序
双击ASM程序子项,即可弹出对应实验的ASM程序源文件。 CPP程序
双击CPP程序子项,即可弹出对应实验的CPP程序源文件。 运行实验
双击运行实验子项,即可执行对应实验的可执行程序。
2 实验项目的添加和删除
除已有的实验外,本软件还支持自动添加实验,方便用户扩展实验内容。被添加的实验也能在演示实验中进行查看,查看方式和已有的实验相同。
1. 添加实验
在当前运行环境下,选择菜单栏中的“演示实验”菜单,选择自定义实验选项,则出现DVCC32JHP
7
自定义实验对话框,用户可以对自定义实验进行添加和删除操作。点击添加实验按钮,则弹出添加实验对话框。用户可以直接输入目标文件地址或是通过右侧的浏览按钮来选择文件,需要注意的是,添加实验时实验名称和可执行程序是必不可少的。
2. 删除实验
自定义实验是可以删除的。在当前运行环境下,选择菜单栏中的“演示实验”菜单,选择自定义实验选项,在自定义实验对话框中选定待删除的实验,点击删除实验按钮,则弹出确认对话框,确认后选定的实验将被删除,否则取消删除操作。
1.4汇编程序使用方法
1. 本汇编程序支持win9x/win2k/winxp系统。 2. 因为pci总线结构支持p&p即插即用功能,每台微机分配给pci扩展板的资源是动态浮动的,不像isa总线是固定死的,因此分配给设备的i/o基地址、mem基地址空间及int中断号会因为不同的微机而变化(详细介绍请参看pci总线规范文档或本设备实验指导书),所以实验前需要确定当前微机中pci卡的资源,并用其替换程序中的相应值,重新编译链接后才能实现实验效果。
3.确定当前微机中pci卡的资源的方法
首先您必须确认您已按使用说明书中的要求正确安装好软件和硬件。然后启动微机并打开“控制面板”-〉“系统”-〉“设备管理器”并查到“微机原理教学实验装置”,如图7-1所示。
图7-1 设备管理窗口
打开“DVCC”,然后点击“资源”,显示如图7-2。通过资源类型小框中的上下箭头可以查看到更多内容。您就可以看到DVCC卡资源占有情况。
8
图7-2 DVCC卡属性
如果您按使用说明书中的要求正确安装好软件和硬件以后,但发现您的微机中DVCC卡的资源没有被分配,这应该是系统没有分配好资源导致的,实验会做不了,您可以将驱动卸掉再重新安装,看看还出现这种情况否,或换一台机器试重新一下,确认是DVCC卡的问题还是操作系统安装驱动程序时出现的问题,直到正确获取DVCC卡硬件资源。
4.替换程序中的相应基地址值
需要替换的基地址值为每个汇编程序头中的定义行:
● io基地址为:ioport equ 0c400h-0280h ;DVCC 卡中设备的io地址 或 ioport_data equ 0c400h-0280h ;DVCC 卡中设备的io地址
或 ioport_cent equ 0c000h ;DVCC 卡中PCI接口芯片的io地址 ● mem基地址为:mem_data equ 0fe000000h ;DVCC 卡中设备的mem地址
其中“0c400h”是pci接口在微机中被动态分配的io基地址,即需要替换的地址。
“0c000h”是DVCC卡中PCI接口芯片上的设置寄存器组占用的io地址,因为某些实验需要设置该芯片的寄存器。
“0fe000000h”是pci接口在微机中被动态分配的mem基地址,也是需要替换的地址,相当于设备存储器的起始地址0h。
替换方法如下:
● 在所获取的DVCC卡资源中,找到两个输入/输出范围(数值可能不会与图中相同),其中一个范围大小是0ffh的是PCI接口芯片上的设置寄存器组占用的io地址空间,另一个范围大小是07fh的是DVCC设备的io地址空间;两个内存范围(数值可能不会与图中相同),一个范围大小是0ffh的是PCI接口芯片占用的mem地址空间,另一个范围大小是0fffffh的是DVCC设备的mem地址空间。它们的起始地址即为我们需要的基址值。
图中PCI接口芯片输入输出范围是FE00-FEff,基址为FE00;DVCC设备的输入输出范围是FF00-FF7f,基址为FF00;DVCC设备的内存范围是F6000000-f60fffff,基址为F6000000。
● 记录下基址值
● 用记录下的基址值替换每个汇编程序头中定义行中的值,即替换“0c400h”为“0ff00h”,“0c000h”为“0fe00h”,“0fe000000h”为“0f6000000h”,并重新编译链接后即可。
9
如果程序中使用了中断,则需要根据DVCC属性窗口中的中断请求号码来修改程序中的中断向量、中断掩码的参数,并重新编译链接后即可。
值得注意的是:有些微机中在Windows和纯DOS状态下获取的DVCC卡资源中的中断申请号会不一样,这是因为Windows下资源被重新规划过,因次,在做有关中断的实验时,中断申请号应以纯DOS下获取的为准。纯DOS下获取DVCC卡资源的方法用实验教程里边实验一中的方法获取,即运行PORTR或PORTR1程序。或者直接用自动获取DVCC卡资源的实验程序,免去人工修改基地址值的麻烦,但会影响学生具体知识点的学习和掌握。
10
实验一、软件开发环境与DEBUG调试
一、实验目的:
1.在DEBUG环境下,通过跟踪调试,理解和熟悉数据传输、数据处理、过程控制、CPU制指令的功能,了解寻址方式、堆栈等基本概念。
2.了解计算机的开发环境,理解DEBUG的使用方法,熟悉调试环境。 3.熟悉在MF平台中汇编程序的编写、调试方法。 二、调试程序(DEBUG)功能介绍
DEBUG是DOS操作系统支持的一种系统软件,是MS公司献给用户的一个通用软件工具,主要用于8088/8086汇编语言程序的调试.它不仅为用户和系统管理员提供了一个可控制的程序调试与开发环境,以便动态地监视管理被调试程序的执行,帮助人们查出程序在逻辑功能上的深层次错误和不完善地方,验证程序的正确性.还为我们提供了一个观察研究窗口,为分析、解剖、开发程序提供了有力的实验手段。因此,熟练地掌握DEBUG的使用很必要也很重要.
介绍下列几种常用DEBUG命令的功能及使用格式:
子命令及其功能 命令格式 Assemble ——对指令语句进行汇编 A[(地址)]
Dump ——显示内存单元内容 D[(地址或地址范围)] Enter ——显示和修改存储单元内容 E[(地址 字符串)] Fill —— 向内存区填充数值或字符代码 F[(地址 字符串)] Load —— 装载文件或扇区数据 L[(地址)] Perform ——单步执行 P[(地址)]
Register —— 显示修改寄存器及标志位 R[(寄存器名)]
Go ——运行调试的程序 G[(始地址 断点地址)] Trace —— 跟踪执行单条或多条指令 T[(地址 条数)] Uasemble ——对指令代码反汇编 U[(地址)] Quit ——返回D0S Q 三、用DEBUG调试简单程序:
由DOS进入DEBUG调试环境.
1.C:\>DEBUG↙ 将调试程序装入内存 注意:当机器控制权由DOS成功地转移给调试程序DEBUG后,将显示“-”,它是DEUBG的状态提示符,表示可以接受调试子命令了.
2.-R↙ 显示CPU中各寄存器当前初始内容
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=11D8 ES=11D8 SS=11D8 CS=11D8 IP=0100 NV UP EI PL NZ NA PO NC 11D8:0100 7303 JNB 0105 说明:
(1)此时,调试工作区的四个段值相同,指向同一起点,表明四个段共用64KB空间;
(2)SS:SP指向堆栈栈顶单元,是本段的最高可用地址,表明堆栈自动由栈顶使用,栈区由底往上(低址方向)生长;
(3)CS:IP为调试工作区地址,IP指向将要执行的指令单元(IP默认值为0100); (4)FLAG寄存器中八个标志位状态如下表所示
11
标志位含义 OF溢出 DF方向 IF中断 SF符号 ZF全零 AF辅助进位 PF奇偶 CF进位 1对应符号 OV有溢出 DN递减 EI允许中断 NG负 ZR全零 AC有半位进位 PE偶 CY有进位 0对应符号 NV无溢出 UP递增 DI禁止中断 PL正 NZ非零 NA无半位进位 PO奇 NC无进位
(5)每条指令执行结束,DEBUG均显示各寄存器内容,便于及时观察结果. 3.在“-” 提示符后输入所需DEBUG命令进行程序调试. 4.切换DOS -Q↙
四、实验程序:(需填写偏移地址)
1.寻址方式
—ACS:0100
:0100 DB 02,4A,58,1F,7D,31
MOV AL,[0100] MOV AX,[0101] MOV SI,0102 MOV AX,[SI] MOV BP,0103 MOV AX,[BP] MOV SI,2 MOV AX,0100[SI] MOV BX,4
MOV AX,0100[BX][SI] INT 20
(1)程序中寻址方式包括:_________________________________; (2)用P命令单步执行指令,记录AX的变化; (3)比较BX和BP寻址的区别。
2.指针传送
—ACS:0100
:0100 MOV AX,DS
ADD AX,0010
MOV [0202],AX LDS SI,[0200] MOV AX,[SI] ADD AL,AH DAA INC SI INC SI
MOV AX,[SI] ADC AL,AH
12
DAA INT 20
(1)向DS:0200开始的11个单元填充04,01,1F,27,38,81,17,25,79,28,76 —F DS:0200 L B (2)用P命令单步执行指令:
第一个DAA执行前AL= ,执行后AL=
第二个DAA执行前AL= ,执行后AL=
(3)执行LDS后,DS= ,SI= ,则LDS功能是
3.字符串传送、查找 (;分号后加注释) —ACS:0100
:0100 DB “IT’S A TEST PROGRAM”
MOV SI,0100 MOV DI,0300
MOV CX,0013
REP MOVSB ; LEA DI,[0300] MOV CX,0013 MOV AL,50
REPNZ SCASB ;
INT 20
(1)程序执行首地址IP=
(2)程序完成 功能
(3)LEA DI,[0300]等价于MOV DI,0300还是MOV DI,[0300]?该指令功能为 比较LEA与LDS的差别。
(4)执行完REPNZ SCASB后DI= ,CX=
4.堆栈、交换 —ACS:0100
:0100 MOV AX,241D
MOV BX,1BC2 PUSH AX PUSH BX POP AX POP BX
XCHG AH,BL MUL BX
INT 20
(1)观察每条指令执行后各寄存器的变化,记录AX、BX、DX的变化情况
(2)观察SS:SP的值和堆栈区的变化(查询堆栈方法:SP变化时,—DSS:SP=当前值) 记录数据在寄存器和堆栈之间的流向
例:PUSH AX AX=241D 堆栈SP=FFEC 1D SP=FFEE FFED 24 (3)试述堆栈的功能、操作过程和特点。
13
实验二、指令系统及汇编
一、实验目的:
1.在DEBUG环境下,了解指令的功能,理解各类指令的执行过程,熟悉汇编语言程序的结构,汇编语言程序的执行过程和调试方法。
2.理解在DEBUG环境下,汇编语言程序的编译方法,通过程序运行,了解指令功能,进一步熟悉调试环境和程序调试方法。
3.掌握在MF平台中汇编程序的编写、调试方法。
二、实验要求:
1.观察指令结构运行过程,将偏移地址写在程序前,判断FLAG变化后的状态,分号后加注释。 2.熟悉8086/8088几种转移指令。
三、实验程序:
1.测试、位移、跳转指令
—ACS:0100
:0100 MOV AX,[0200]
MOV CX,0
TEST AX,FFFF ; JZ 0112 ; SHL AX,1 ; JNC 0110 ; INC CX ; JMP 0106 ;
INT 20
(1)记录SHL AX,1每执行一次后,AX= , PF= ,SF= ,ZF= ,CX= 值。
(2)该程序功能为
2.条件比较指令 —ACS:0150
:0150 MOV AX,1000
MOV DS,AX
MOV AL,42 MOV SI,0
MOV [SI],AL
INC SI ; CMP SI,10 ;
JNZ 015A ; INT 20
(1)指令执行前,—D1000:0000到000F单元的内容 指令执行后,—D1000:0000到000F单元的内容 (2)该程序功能为 。 (3)该程序循环 次,控制循环的寄存器是
(4)该程序功能如果用DEBUG命令替代,应为
14
3.循环控制指令 —ACS:0100
:0100 MOV AX,01
MOV BX,02 MOV CX,03 MOV DX,04
INC AX
ADD AX,BX
SHR DX,1 ; LOOP 010C ;
INT 20
(1)用T命令执行指令,观察CX的变化,程序执行后AX= ,BX= ,
CX= ,DX= (2)将LOOP改成LOOPNE,程序执行后AX= ,BX= ,CX= ,DX= , (3)将LOOP改成LOOPE,程序执行后AX= ,BX= ,CX= ,DX=
4.子程序调用及返回指令 —ACS:0100
:0100 MOV AX,0200
MOV DX,1E4F CALL AX
MOV DX,167C ADD DH,DL MOV [0300],DX
INT 20
—ACS:0200
:0200 MOV AX,010B
PUSH AX
POP AX RET
(1)用T命令跟踪执行程序,记录IP、SP及CALL、RET执行过程中堆栈区变化 IP SP 堆栈 (2)程序执行结束后,DS:0300中内容为
(3)程序执行过程中,调用与返回地址偏移 (4)简述子程序调用与返回过程。
15
实验三、汇编语言程序设计及调试一
——分支程序
一、实验目的:
了解汇编语言程序设计的完整过程,了解汇编程序设计与调试的基本技术,熟悉分支程序的基本结构及编程方法。
二、实验要求:
给定分支程序的设计要求,编写程序流程图并完成程序设计,并验证程序的正确性。 三、实验基本原理与方法:
预习教课书分支程序结构内容,根据题意正确写出CMP、TEST及用到的条件转移指令功能,画出分支程序流程图。 四、实验内容:
1.编制计算下面函数值的程序(x,y的值在-128~+127之间) 1 x>=0,y>=0 a= -1 x<0,y<0 0 x,y异号
输入数据为x、y,输出数据为a.
2.完成实验填空题,画出程序流程图,并验证程序的正确性。
五、实验步骤:
1.在MF2KP集成开发环境中编写汇编程序,然后连接,编译,生成exe文件; 2.启动MF2KP环境中的DEBUG程序;
3.在程序的退出处设置断点,利用Add Watch命令查看A中的内容是否正确。
六、实验资源配置:
PC机,Windows2000操作系统,MF2KP集成开发环境。 七、实验软件编程:
1.软件流程图见图2.2:
开始 N x<0 Y Y N Y<0 N y>=0 -1?A 0?A 1?A 程序结束
16
图2.2
2.实验程序如下所示
;*----------------------------------------------------------* ;* Aexp4.asm(分支程序设计实验) * ;* Copyright (c) 2002 by HUST * ;* 程序调试:在EXIT:MOV AH,4CH处设置断点,利用Add Watch * ;* 命令查看A中的内容是否正确 * ;*----------------------------------------------------------* STACK SEGMENT STACK DB 200 DUP(0) STACK ENDS DATA SEGMENT X DB -2 Y DB 8 A DB ? DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX
CMP X,0 ;x与0进行比较 JS L1 ;x<0转L1 CMP Y,0
JL L2 ;y<0转L2 MOV A,1 ;1送A JMP EXIT L1: CMP Y,0
JGE L2 ;y>=0转L2
MOV A,-1 ;x<0,y<0时,-1送A JMP EXIT
L2: MOV A,0 ;x与y异号时,0送A EXIT: MOV AH,4CH INT 21H CODE ENDS END START
八、实验填空设计:
1.设计一段程序将A单元中有符号数的原码转换为补码,并存入B单元中。 参考程序:
DATA SEGMENT A DB B DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START:MOV AX, DATA MOV DS,AX
17
MOV AL,A TEST AL,
XOR AL,7FH ADD AL,1 TS: MOV B,AL MOV AH,4CH INT 21H
CODE ENDS
END START
2.设计一段程序判断A单元无符号数1的个数的奇偶性,若为偶则在B单元存入FFH,否则存入00H。 参考程序:
DATA SEGMENT A DB B DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX, DATA
MOV DS,AX MOV AL,A
TEST AL, ST1
MOV AL,00H
MOV [SI],AL JMP ST2
ST1: MOV AL,0FFH ST2: MOV B,AL MOV AH,4CH
INT 21H
CODE ENDS END START
◇ 按要求完成实验调试,得出正确结果.
18
实验四、汇编语言程序设计及调试二
——循环程序
一、实验目的:
了解汇编语言程序设计的完整过程,了解汇编程序设计与调试的基本技术,熟悉循环程序的基本结构及编程方法。
二、实验要求:
给定循环程序的设计要求,编写程序流程图并完成程序设计,并验证程序的正确性。 三、实验基本原理与方法:
预习教课书循环程序结构内容,简述循环程序结构主要设计思想,画出两种循环程序结构流程图。 四、实验内容:
1.求某数据区内负数的个数。设在以BUF为首址的字存储区输入n个有符号二进制数,统计的负数个数放在存储单位R中。
2.完成实验填空题,画出程序流程图,并验证程序的正确性。 五、实验步骤:
1. 在MF2KP环境下输入汇编程序,编译、连接,生成.exe文件。 2. 启动调试程序(Debug)。
3. 在程序的退出处设置断点,利用Add Watch命令查看R中的内容是否正确。 六、实验资源与配置:
IBMPC微机,Win2000操作系统,MF2KP微机原理实验集成开发环境。 七、 实验的软件编程:
1.参考程序如下所示:
;*------------------------------------------------------------------------------ * ;* Aexp5.asm(循环程序设计实验) * ;* Copyright (c) 2002 by HUST * ;* 程序调试:在MOV AH,4CH处设置断点,利用Add Watch命令查看R中的内容是否正确 * ;*-------------------------------------------------------------------------------* STACK SEGMENT STACK DB 200 DUP(?) STACK ENDS DATA SEGMENT
BUF DW -6,90,100,-3,-1,5,0,134 ;比较的数据 N EQU ($-BUF)/2 ;个数 R DB ? DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK START:MOV AX,DATA MOV DS,AX
LEA SI,BUF ;取存储区首址
MOV BL,0 ;BL存放负数个数的初值 MOV CX,N ;CX中存放数据个数的初值 L1: MOV AX,[SI] ;取存储区数据 CMP AX,0 JGE A2
19
INC BL ;负数则BL加1 A2: ADD SI,2 DEC CX JNZ L1
MOV R,BL ;;将结果放入R中 MOV AH,4CH INT 21H CODE ENDS END START
2.流程图如图2.3所示:
实验填空题程序设计:
图2.3
2.设计一段程序统计从BUF1开始的10个单元中的负数的个数,并将其存入BUF2单元中。 参考程序:
DATA SEGMENT
BUF1 DB BUF2 DB ? DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START:MOV AX, DATA
20
MOV DS,AX
MOV CX,000AH MOV BX,0
MOV SI,OFFSET BUF1 ST1: MOV AL,[SI] INC SI
AND AL, JZ INC BX ST2: LOOP ST1 MOV BUF2,BX MOV AH,4CH INT 21
CODE ENDS
END START
3.设计一段程序将A单元与B单元中的BCD码相加,将和转换成ASCII码存入[SI+6] 和[SI+7]单元,并在C单元显示‘53+24=77’的字符串。 参考程序:
DATA SEGMENT A DB 53H B DB 24H
C DB ‘53+24= $’ DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX, DATA MOV DS,AX MOV SI,OFFSET C MOV AL,A ADD AL,B MOV AH,AL AND AL,0FH ADD AL,30H AND AH,0F0H ADD AH,30H MOV [SI+6],AH MOV [SI+7],AL
MOV DX,OFFSET C MOV AH,9 INT 21 CODE ENDS END START
21
实验五、汇编语言程序设计及调试三
——子程序
一、实验目的:
了解汇编语言程序设计的完整过程,了解汇编程序设计与调试的基本技术,熟悉子程序的基本结构及编程方法。
二、实验要求:
给定子程序的设计要求,编写程序流程图并完成程序设计,验证程序的正确性。 三、实验基本原理与方法:
预习教课书子程序结构内容,简述子程序的过程定义和调用方法, 子程序、子程序的嵌套、递归子程序的结构, 子程序的程序设计、编制及调用。
四、实验内容:
1.在以BUF为首址的字节存储区存放有n个无符号数,求该序列中的最大值和最小值。 2.完成实验测试题的程序设计,画出程序流程图,并验证程序的正确性。 五、实验步骤:
1.在MF2KP环境下输入汇编程序,编译、连接,生成.exe文件。 2.启动调试程序(Debug)。
3.在程序的退出处设置断点,利用Add Watch命令查看max、min中的内容是否正确。 六、实验资源配置:
IBMPC微机,Win2000操作系统,MF2KP微机原理实验集成开发环境。
七、实验流程图如图2.4所示:
图2.4
22
八、参考程序如下所示:
;*------------------------------------------------------------* ;* Aexp7.asm(子程序设计实验) * ;* Copyright (c) 2002 by HUST * ;* 程序调试:在主程序MOV AH,4CH处设置断点,利用Add Watch * ;* 命令查看MAX,MIN中的内容是否正确 * ;*-----------------------------------------------------------* STACK SEGMENT STACK
DB 200 DUP(?) STACK ENDS DATA SEGMENT
BUF DB 34H,22H,4H,5H,9H,23H,1H,65H,99H N EQU $-BUF MAX DB ? MIN DB ? DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX
MOV SI,OFFSET BUF ;数据首址àSI MOV CX,N ;数据个数àCX CALL MAXMIN
MOV MAX,BH ;存入最大值 MOV MIN,BL ;存入最小值 MOV AH,4CH INT 21H MAXMIN PROC PUSH AX
MOV BH,[SI] ;将第一个数据àBH,BL MOV BL,BH
DEC CX ;需比较的数据个数减1 A1: INC SI MOV AL,[SI] CMP AL,BH JBE A2
MOV BH,AL ;如(AL)>(BH),则(AL)àBH JMP A3 A2: CMP AL,BL JAE A3
MOV BL,AL ;如(AL)<(BL),则(AL)àBL A3: LOOP A1 ;循环,直到CX=0 POP AX RET MAXMIN ENDP
23
正在阅读:
微机原理与接口技术实验10-07
妈妈您辛苦了作文600字04-01
中级职称个人专业技术工作总结 Microsoft Word 文档07-24
收集露珠作文350字06-21
人教版七年级unit4(21页)Where‘s my schoolbag说课稿(原创)08-25
各种灭火剂分类及适用范围10-10
2019年抓基层党建和落实全面从严治党主体责任述职述责报告09-27
- 高一物理牛顿运动定律全套学习学案
- 水处理一级反渗透加还原剂亚硫酸氢钠后为什么ORP会升高
- 毕业设计(论文)-正文董家口 - 图文
- 荣盛酒店经营管理公司录用通知及入职承诺书II
- 第二讲 大学英语四级快速阅读技巧
- 质量管理体系文件(2015年委托第三方医药物流配送企业专用版本)
- 214071收款办法
- 苏轼对《文选》选文的评价
- 《诊断学基础B》1-8作业
- 广东省东莞市高一数学下学期期末教学质量检查试题
- 海南电网公司VIS推广应用管理办法
- 红星照耀中国习题
- 苏教版小学语文六年级上册期末复习资料之生字词整理
- 局域网组建与应用—王向东
- 税务稽查内部管理文书样式
- 环保社会实践调查表
- 九年级思品第一单元复习
- 2016年全国注册咨询工程师继续教育公路路线设计规范试卷
- 毕业设计-青岛港董家口港区防波堤设计
- 撞背锻炼方法与益处
- 微机
- 接口
- 原理
- 实验
- 技术
- 2014年下学期内科护理期末复习题3
- 陈姓男孩取名大全
- 数字档案馆建设现状与发展趋势及对策研究
- 2018国家社科基金申请报告书模板(最新详细版) - 图文
- 应用勾股定理, 把握数学思想
- 人教版八年级下册地理知识点
- 热工基础答案1—6章 于秋红
- 2014中国汉字听写大会词语
- 婚礼当天时间流程安排
- 康佳电视进入总线方法
- 葡萄酒自酿手册 - 图文
- 2014版航天器温控产品项目(立项及贷款用)可行性研究报告编制机构服务流程及案例展示 - 图文
- 2013年1月自考电子商务与现代物流试卷及答案
- 运27第6章习题
- 2015-2020年中国商业地产市场分析及投资策略研究报告 - 图文
- 领导学原理
- 2011年度公司高、中层管理干部考核办法
- 新课程理念下课堂教学评价方式的研究
- NYPE46(土产格式)中英对照版本
- 2019届全国通用版中考地理专题三地形气候河流对人类生产生活的影响复习练