当前位置:文档之家› 计算机硬件实验指导书(崔丽群))

计算机硬件实验指导书(崔丽群))

《计算机硬件基础》课程实验指导书辽宁工程技术大学软件学院2010年2月目录实验上机操作范例实验一汇编语言程序的调试与运行实验二简单程序设计实验三循环程序设计实验四综合程序设计(一)实验五综合程序设计(二)实验六高级汇编技术实验上机操作范例【范例】完成具有如下功能的分段函数1 X>0Y = 0 X=0-1 X<0其中:X存放在内存单元中,Y为结果单元。

【问题分析】根据题意画出程序流程图,如图1所示。

图1 分段函数的程序流程图根据程序流程图编写如下程序DSEG SEGMENTX DW ?Y DW ?DSEG ENDSCSEG SEGMENTASSUME CS: CSEG, DS: DSEGSTART:MOV AX, DSEGMOV DS, AXLEA SI, XMOV AX, [SI]AND AX, AXJNS LP1MOV Y, 0FFH ; X<0JMP END1LP1: JNZ LP2MOV Y, 00HJMP END1LP2: MOV Y, 01HEND1: MOV AH, 4CHINT 21HCSEG ENDSEND START汇编语言程序的开发分为以下4个部分:编辑(生成.asm文件)—→汇编(生成.obj文件)—→连接(生成.exe文件)—→调试。

下面分别通过两种上机环境介绍汇编语言源程序从编辑到生成一个可执行文件(.exe文件)的过程。

一种方法是利用Microsoft公司提供的MASM5版本的工具包(包括edit.exe、masm.exe、link.exe、debug.exe),如图2所示;另一种是利用汇编集成编辑器来完成。

图2 D盘下的MASM5工具包下面的例子按以下几个步骤完成:(1)先编写一个fenduan.asm文件;(2)保存并通过运行masm.exe生成目标文件fenduan.obj;(3)再利用link.exe生成可执行文件fenduan.exe;(4)运行fenduan.exe文件;(5)运行debug fenduan.exe后即可对程序进行跟踪调试。

一、通过DOS调用MASM5图3 运行对话框单击“开始”,选中其中的“运行”命令,会弹出图3所示的对话框。

键入“command”或“cmd”,单击“确定”,会弹出图4所示的命令框。

图4利用DOS中的命令找到MASM5所在文件夹,如图5所示MASM5文件夹放在D盘下。

注意MASM5文件夹中一定要包含masm.exe、link.exe、debug.exe文件。

图51、编辑编辑的命令格式是:edit 文件名.asm编辑源程序有两种方法:【方法一】在DOS下直接输入edit 文件名.asm,如图6所示。

回车,得到如图7所示的编辑环境,此时我们就可以在这个环境下进行编辑了。

图6 编辑fenduan.asm文件图7 fenduan.asm文件的编辑窗口【方法二】直接在TXT文档中进行编辑打开记事本,在记事本中编写汇编语言源程序,如图8所示。

图8 记事本中编写汇编语言源程序把文件扩展名改为.asm并进行保存,这时弹出图9所示窗口,单击“是”,这样就可以在DOS环境下直接调用该文件。

图9 重命名对话框若访问已经保存的fenduan.asm文件,如图10所示可在DOS环境下键入“edit fenduan.asm”,按回车,这时就弹出fenduan.asm文件的编辑窗口,如图11所示。

图10图11 fenduan.asm文件编辑窗口2、汇编汇编的命令格式是:masm 文件名.asm (扩展名.asm可以省略)图12 汇编fenduan.asm文件汇编fenduan.asm文件,在DOS环境下键入“masm fenduan.asm”,按回车。

如图12所示生成fenduan.obj文件,显示的信息含义为:Object filename [FENDUAN.OBJ]: ←是否改动输出OBJ文件名,如不改就按回车键“ENTER”。

Source list ing [NUL.LST]: ← 是否需要列表文件(LST),不需要就按回车键。

Cross-reference [NUL.CRF]: ←是否需要对照文件(CRF),不需要则按回车键。

50676 + 415740 Bytes symbol space free0 Warning Errors ←警告错误,表示编译器对某些语句不理解,通常是输入错误。

0 Severe Errors ←严重错误,会造成程序无法执行,通常是语法结构错误。

如果没有一个错误存在,即可生成OBJ文件。

OBJ中包含的是编译后的二进制结果,它还无法被DOS载入内存中加以执行,必须加以链结(Linking)。

以LINK将OBJ文件(FENDUAN.OBJ)链结成EXE 文件(FENDUAN.EXE)。

3、连接连接的命令格式:link 文件名.obj (扩展名.obj可以省略)图13 链接fenduan.obj文件链接fenduan.obj文件,在DOS环境下键入“link fenduan.obj”,按回车。

如图13所示生成了fenduan.exe文件,显示的信息含义为:Microsoft (R) Overlay Linker Version 3.60Copyright (C) Microsoft Corp 1983-1987. All rights reserved.Run File [SMILE.EXE]: ← 是否改动输出EXE文件名,如不改就ENTER。

List File [NUL.MAP]: ← 是否需要列表文件(MAP),不需要则ENTER。

Libraries [.LIB]: ←是否需要库文件,要就键入文件名,不需要则ENTER。

LINK : warning L4021: no stack segment← 由于COM文件不使用堆栈段,所以错误信息。

"no stack segment"并不影响程序正常执行。

4、调试调试的命令格式是:DEBUG 文件名.exe ←.exe可以省略。

若调试fenduan.exe文件,如图14所示在DOS环境下键入“debug fenduan.exe”,按回车,这时进入debug动态调试窗口。

先用命令U反汇编整个程序,查看每条指令的物理地址,其显示内容如图14和15所示。

图14 调试fenduan.exe图15 用u命令反汇编fenduan程序在这里,出现的反汇编指令如下所示:内存地址指令代码反汇编的程序代码13E0:0000 B8DF13 MOV AX, 13DF ;数据段的首地址DS 13DF13E0:0003 8ED8 MOV DS, AX13E0:0005 8D360000 LEA SI, [0000] ;变量X的偏移地址000013E0:0009 8B04 MOV AX, [SI]13E0:000B 23C0 AND AX, AX13E0:000D 7909 JNS 001813E0:000F C7060200FF00 MOV WORD PTR [0002],00FF ;变量Y的偏移地址000213E0:0015 EB12 JMP 0029 ;跳转到该程序段偏移地址为0029处执行13E0:0017 90 NOP13E0:0018 7509 JNZ 002313E0:001A C70602000000 MOV WORD PTR [0002],000013E0:0020 EB07 JMP 002913E0:0022 90 NOP13E0:0023 C70602000100 MOV WORD PTR [0002],000113E0:0029 B44C MOV AH,4C13E0:002B CD21 INT 21假设我们给变量X赋值为F723H,如图16所示。

图16 为变量X赋值从反汇编地址中找到执行的起始地址为0000到002B。

然后执行,如图17所示。

图17 设置断点如图18所示查看Y变量中的值,通过反汇编命令我们知道Y变量的偏移地址为0002H。

图18 查看Y变量此时,我们观察到X变量为F723H时,X小于0,则Y应为-1(即FFH),说明调试成功。

二、汇编的集成开发环境图19 汇编集成编辑器窗口该环境可以分为四个大的部分。

如图19所示,最上面的两行是工具栏,在里面可以找到相应的操作。

左边是汇编的实用工具,可以进行相应的ASCII码和十、十六进制的转换。

右边的是编辑区,在这里面实际上已经给出了基本的程序模版,也就是说给出了四个段(堆栈段、数据段、附加段和程序段)的定义,我们只需要往各个段里面添加相应的内容就可以了。

最下面的是信息的提示栏,在汇编、连接和运行调试的过程中会显示相应的信息。

1、编辑我们首先把程序写入编辑区。

然后保存起来。

在汇编之前要设置相应的汇编器和连接器的路径。

如图20所示在工具栏中单击“选项”,再单击“设置编译器”。

图20 编辑程序会弹出一个编辑选项对话框,如图21所示。

图21 编辑选项对话框在这里选择编译器类型选择MASM,然后设置相应的路径,也就是找到该环境自带的MASM.EXE和LINK.EXE文件,如图22所示。

图22 masm文件夹接下来就可以进行汇编、连接和调试了。

如图23所示可以直接在工具栏中单击“编译”然后选择相应的选项,也可以直接单击工具栏第二行中的图形,只要把鼠标放在相应的图形上,在环境的左下角就有相应的说明。

图23 编译窗口说明2、汇编点击工具栏中编译图标或在“编译”中选择编译选项或用快捷键ALT+F5。

如图24所示编译过后,下面的信息栏会告诉我们错误信息。

如果没有错误就可以进行接下来的连接了。

图24 编译程序3、连接如图25所示,点击工具栏中连接图标或在“编译”中选择连接选项或用快捷键ALT+F7。

连接后,下面的信息栏会告诉我们该程序的连接信息。

图25 连接程序4、调试点击工具栏中调试图标或在“编译”中选择调试选项或用快捷键ALT+F10。

同样,我们也要先进行反汇编。

如图26所示。

图26 用u命令反汇编程序如图27所示给变量X赋值为1111H。

图27 为变量X赋值找到程序的起始位置0000至002B。

如图28所示通过设置断点执行这个起始范围的程序。

图28 设置断点如图29所示,查看Y变量单元的值是否符合分段函数的要求。

此时,我们观察到X变量为1111H时,X大于0,则Y应为1(即01H),说明调试成功。

图29 查看Y变量实验一汇编语言程序的调试与运行一、实验目的1.熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。

2.掌握数据在内存中的存放方式和内存操作数的寻址方式。

3.掌握汇编语言源程序的组成格式。

4.掌握8086/8088指令及伪指令的格式及用法。

相关主题