辽工大实验二 简单程序设计要求.docx
- 文档编号:5462366
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:20
- 大小:475.75KB
辽工大实验二 简单程序设计要求.docx
《辽工大实验二 简单程序设计要求.docx》由会员分享,可在线阅读,更多相关《辽工大实验二 简单程序设计要求.docx(20页珍藏版)》请在冰点文库上搜索。
辽工大实验二简单程序设计要求
实验上机操作范例
【范例】完成具有如下功能的分段函数
1X>0
Y=0X=0
-1X<0
其中:
X存放在内存单元中,Y为结果单元。
【问题分析】根据题意画出程序流程图,如图1所示。
图1分段函数的程序流程图
根据程序流程图编写如下程序
DSEGSEGMENT
XDW?
YDW?
DSEGENDS
CSEGSEGMENT
ASSUMECS:
CSEG,DS:
DSEG
START:
MOVAX,DSEG
MOVDS,AX
LEASI,X
MOVAX,[SI]
ANDAX,AX
JNSLP1
MOVY,0FFH;X<0
JMPEND1
LP1:
JNZLP2
MOVY,00H
JMPEND1
LP2:
MOVY,01H
END1:
MOVAH,4CH
INT21H
CSEGENDS
ENDSTART
汇编语言程序的开发分为以下4个部分:
编辑(生成.asm文件)—→汇编(生成.obj文件)—→连接(生成.exe文件)—→调试。
下面分别通过两种上机环境介绍汇编语言源程序从编辑到生成一个可执行文件(.exe文件)的过程。
一种方法是利用Microsoft公司提供的MASM5版本的工具包(包括edit.exe、masm.exe、link.exe、debug.exe),如图2所示;另一种是利用汇编集成编辑器来完成。
图2D盘下的MASM5工具包
下面的例子按以下几个步骤完成:
(1)先编写一个fenduan.asm文件;
(2)保存并通过运行masm.exe生成目标文件fenduan.obj;
(3)再利用link.exe生成可执行文件fenduan.exe;
(4)运行fenduan.exe文件;
(5)运行debugfenduan.exe后即可对程序进行跟踪调试。
一、通过DOS调用MASM5
图3运行对话框
单击“开始”,选中其中的“运行”命令,会弹出图3所示的对话框。
键入“command”或“cmd”,单击“确定”,会弹出图4所示的命令框。
图4
利用DOS中的命令找到MASM5所在文件夹,如图5所示MASM5文件夹放在D盘下。
注意MASM5文件夹中一定要包含masm.exe、link.exe、debug.exe文件。
图5
1、编辑
编辑的命令格式是:
edit文件名.asm
编辑源程序有两种方法:
【方法一】在DOS下直接输入edit文件名.asm,如图6所示。
回车,得到如图7所示的编辑环境,此时我们就可以在这个环境下进行编辑了。
图6编辑fenduan.asm文件
图7fenduan.asm文件的编辑窗口
【方法二】直接在TXT文档中进行编辑
打开记事本,在记事本中编写汇编语言源程序,如图8所示。
图8记事本中编写汇编语言源程序
把文件扩展名改为.asm并进行保存,这时弹出图9所示窗口,单击“是”,这样就可以在DOS环境下直接调用该文件。
图9重命名对话框
若访问已经保存的fenduan.asm文件,如图10所示可在DOS环境下键入“editfenduan.asm”,按回车,这时就弹出fenduan.asm文件的编辑窗口,如图11所示。
图10
图11fenduan.asm文件编辑窗口
2、汇编
汇编的命令格式是:
masm文件名.asm(扩展名.asm可以省略)
图12汇编fenduan.asm文件
汇编fenduan.asm文件,在DOS环境下键入“masmfenduan.asm”,按回车。
如图12所示生成fenduan.obj文件,显示的信息含义为:
Objectfilename[FENDUAN.OBJ]:
←是否改动输出OBJ文件名,如不改就按回车键“ENTER”。
Sourcelisting[NUL.LST]:
←是否需要列表文件(LST),不需要就按回车键。
Cross-reference[NUL.CRF]:
←是否需要对照文件(CRF),不需要则按回车键。
50676+415740Bytessymbolspacefree
0WarningErrors←警告错误,表示编译器对某些语句不理解,通常是输入错误。
0SevereErrors←严重错误,会造成程序无法执行,通常是语法结构错误。
如果没有一个错误存在,即可生成OBJ文件。
OBJ中包含的是编译后的二进制结果,它还无法被DOS载入内存中加以执行,必须加以链结(Linking)。
以LINK将OBJ文件(FENDUAN.OBJ)链结成EXE文件(FENDUAN.EXE)。
3、连接
连接的命令格式:
link文件名.obj(扩展名.obj可以省略)
图13链接fenduan.obj文件
链接fenduan.obj文件,在DOS环境下键入“linkfenduan.obj”,按回车。
如图13所示生成了fenduan.exe文件,显示的信息含义为:
Microsoft(R)OverlayLinkerVersion3.60
Copyright(C)MicrosoftCorp1983-1987.Allrightsreserved.
RunFile[SMILE.EXE]:
←是否改动输出EXE文件名,如不改就ENTER。
ListFile[NUL.MAP]:
←是否需要列表文件(MAP),不需要则ENTER。
Libraries[.LIB]:
←是否需要库文件,要就键入文件名,不需要则ENTER。
LINK:
warningL4021:
nostacksegment←由于COM文件不使用堆栈段,所以错误信息。
"nostacksegment"并不影响程序正常执行。
4、调试
调试的命令格式是:
DEBUG文件名.exe←.exe可以省略。
若调试fenduan.exe文件,如图14所示在DOS环境下键入“debugfenduan.exe”,按回车,这时进入debug动态调试窗口。
先用命令U反汇编整个程序,查看每条指令的物理地址,其显示内容如图14和15所示。
图14调试fenduan.exe
图15用u命令反汇编fenduan程序
在这里,出现的反汇编指令如下所示:
内存地址指令代码反汇编的程序代码
13E0:
0000B8DF13MOVAX,13DF;数据段的首地址DS13DF
13E0:
00038ED8MOVDS,AX
13E0:
00058D360000LEASI,[0000];变量X的偏移地址0000
13E0:
00098B04MOVAX,[SI]
13E0:
000B23C0ANDAX,AX
13E0:
000D7909JNS0018
13E0:
000FC7060200FF00MOVWORDPTR[0002],00FF;变量Y的偏移地址0002
13E0:
0015EB12JMP0029;跳转到该程序段偏移地址为0029处执行
13E0:
001790NOP
13E0:
00187509JNZ0023
13E0:
001AC70602000000MOVWORDPTR[0002],0000
13E0:
0020EB07JMP0029
13E0:
002290NOP
13E0:
0023C70602000100MOVWORDPTR[0002],0001
13E0:
0029B44CMOVAH,4C
13E0:
002BCD21INT21
假设我们给变量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所示。
图22masm文件夹
接下来就可以进行汇编、连接和调试了。
如图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.熟练掌握宏汇编程序设计的思想。
2.掌握顺序程序设计的思想及方法。
3.熟练掌握分支程序的结构。
4.掌握分支程序设计的思想、方法及上机调试过程。
二、实验准备知识
1.8086/8088宏汇编指令及伪指令
2.汇编语言程序设计的步骤
(1)分析问题
(2)确定算法
(3)绘制程序框图
(4)分配存储空间和工作单元
(5)编写汇编语言源程序
(6)静态检查
(7)上机调试
3.顺序程序设计的思想和方法
(1)顺序程序是指完全按顺序逐条执行的指令序列,是没有分支、循环等转移指令的程序,按指令书写的自然次序,由程序开始顺利依次执行直到程序结束为止。
(2)顺序结构是最基本的程序结构。
(3)完全采用顺序结构编写的程序并不多见,它通常作为程序的一部分,用以构造程序中的一些基本功能。
顺序程序特点:
(1)程序要有良好的结构,简明,易读,易调试
(2)执行速度快
(3)占用存储空间少
4.分支程序设计的思想和方法
(1)分支程序根据条件是真或假决定执行与否
(2)判断的条件是各种指令,如CMP、TEST等执行后形成的状态标志
(3)用转移指令Jcc和JMP可以实现分支控制
(4)分支结构有:
①单分支结构
②双分支结构
③多分支结构
三、实验性质
本实验为设计性实验。
四、实验学时
本实验学时为2学时。
五、实验内容
1.编写一个程序,计算表达式(XY-Z)/X的值,其中:
X、Y、Z均为16位带符号数,存放在数据段中,要求将表达式的计算结果存放在数据段中的RESULT起始的单元中。
2.设数据区中NUM1、NUM2字节单元中存放的是两个无符号数,试编写程序完成下述功能之一的操作:
(1)如果两个数均为偶数,则两个数分别加1后送入DA1、DA2字节单元中;
(2)如果一个为偶数,一个为奇数,则奇数送入DA1,偶数送入DA2字节单元中;
(3)如果两个数均为奇数,则两个数分别送入DA1、DA2字节单元中;
3.在内存BUFFER单元中存有10个8位数,试编程找出其中的最大值及最小值,并放在指定的存储单元MAX和MIN中。
六、实验要求
1.实验前要做好充分准备,包括汇编程序清单,调试步骤,调试方法,以及对程序结果的分析等。
2.独立完成,严禁抄袭。
3.学会解决调试过程中的错误。
七、实验报告内容
1.写出源程序清单、结果及在DEBUG状态下运行的过程。
2.写出调试过程中遇到的问题是如何解决的,并对调试过程中的问题进行分析。
3.写出调试的指令及运行结果,并对执行结果进行分析。
4.收获及体会。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 辽工大实验二 简单程序设计要求 辽工大 实验 简单 程序设计 要求