实验二 简单程序的编写及汇编连接

上传人:飞*** 文档编号:40528931 上传时间:2018-05-26 格式:DOC 页数:5 大小:47.50KB
返回 下载 相关 举报
实验二  简单程序的编写及汇编连接_第1页
第1页 / 共5页
实验二  简单程序的编写及汇编连接_第2页
第2页 / 共5页
实验二  简单程序的编写及汇编连接_第3页
第3页 / 共5页
实验二  简单程序的编写及汇编连接_第4页
第4页 / 共5页
实验二  简单程序的编写及汇编连接_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《实验二 简单程序的编写及汇编连接》由会员分享,可在线阅读,更多相关《实验二 简单程序的编写及汇编连接(5页珍藏版)》请在金锄头文库上搜索。

1、实验二实验二 简简单程序的编写及汇编连接单程序的编写及汇编连接、实验目的1 熟练掌握编写汇编语言源程序的基本方法和程序的基本框架。 2 学会编写顺序结构、分支结构和循环结构的汇编程序。 3 掌握程序中数据的产生与数输出的方法。 4 熟悉建立源文件,进行汇编和连接的全过程,并对程序进行调试。 、实验要求1 预习附录 2 的内容 2 实验前准备 分析题目,将程序中的原始数据、中间结果和最终结果的存取方式确定好。 写出算法或画出流程图。 写出源程序。 对程序中的结果进行分析,并准备好上机调试的过程。 3 本实验要求在 PC 机上进行。 4 汇编过程中出现问题,可用 DEBUG 进行调试。 、实验内容

2、1实验内容 1 用 EDIT 应用程序编辑源程序(参考程序见下),建立 .ASM 文件; 用 MASM 程序汇编该文件,生成 .OBJ 文件;查看 .LST 文件的内容 用 LINK 程序链接,生成 .EXE 文件; 使用 DEBUG 命令将 .EXE 文件调进内存,执行后查看程序运行结果; 使用 DEBUG 命令,检查各段在内存当中分配情况。 参考程序: ; exercize21 data segment org 0200hbuffer dw 0, 1, -5, 10, 256, -128, -100, 45, 6, 3,dw -15,-67, 39, 4, 20, -1668, -3276

3、6, 32765, -525, dw 300count equ ($-buffer)/2max dw ? data endsstack segment stack stackdb 100 dup (s) stack endscode segment para codeassume cs:code, ds:data, ss:stack sta proc farpush dsxor ax, axpush axmov ax, datamov ds, axlea si, buffermov cx, countdec cxmov ax, si chkmax: add si, 2cmp si, axjle

4、 nextmov ax, si next: loop chkmaxmov max, axret sta endp code endsend sta 实验报告要求: 1 小结汇编语言源程序的编译及连接过程; 2 通过 debug 调试工具查看并记录 DS 在程序执行中的变化情况 3 写出程序调试中出现的问题及解决方法;2实验内容 2 编辑源程序(参考程序见后),建立 .ASM 文件; 用 MASM 程序汇编产生 .OBJ 文件; 用 LINK 程序产生 .EXE 文件; 执行 .EXE 文件,观察程序运行现象; 修改源程序,使输出的数字之间用空格间隔; 参考程序: ; display “09”

5、100 times stac segment stack stackdb 100 dup (s) stac endscod segment para codeassume cs:cod, ss:stac sta proc farpush dsxor ax, axpush axmov cx, 100mov bl, 0goon: push cxmov ah, 2mov dl, 0dhint 21hmov al, blinc aldaaand al, 0fhmov bl, alor al, 30hmov dl, almov ah, 2int 21hmov dx, 5l1: mov cx, 0ffff

6、hagain: loop againdec dxjnz l1 pop cxloop goonret sta endp cod endsend sta3实验内容 3:编程完成以下功能,并上机调试通过。 假设有 20 个数据:5,-4,0,3,100,-51, (自定) ,请编一子程序判断每个 数是大于 0,等于 0,还是小于 0,由主程序调用该子程序,最后统计出大于零、小于零 以及等于零的数据的个数。附录附录 2 2 汇编与宏汇编程序汇编与宏汇编程序一、汇编程序 汇编是把用汇编语言编写的源程序翻译(汇编)成机器语言的目标程序。 汇编程序可以使用小汇编程序(ASM) ,在小汇编程序下汇编语言程序可

7、在 64KB 的 内存条件下运行,小汇编程序不支持宏指令以及有关的功能,只能有限制地使用伪指令。 也可以用宏汇编程序(MASM) ,它必须在 96KB 以上的内存条件下运行,宏汇编程序包 括小汇编的功能,同时可以使用所有的宏指令和伪指令。由于宏汇编程序不但可以代替 ASM,而且可以汇编具有宏定义的汇编源程序,因此我们在汇编程序时使用宏汇编程序 (MASM) 。二、运行汇编程序的条件 DOS 操作系统或 Windows 操作系统 汇编系统盘,其中应包含下列文件: MASM宏汇编程序文件 LINK链接程序文件 CREF索引程序文件(可以不用) DEBUG 调试程序 文本编辑程序(EDIT, 记事本

8、等)三、汇编语言程序的上机过程 1、建立汇编语言的工作环境:在磁盘上安装宏汇编等类似的汇编程序。 2、编辑源程序,建立一个后缀为 ASM 的源程序文件:可用任何字处理软件实现 3、用 MASM 程序产生 OBJ 文件 源文件建立后,就可用汇编程序对源文件进行汇编,其操作与汇编程序回答如下: 假设源文件名为 count.asm,则执行 masm.exe 后,显示如下:Microsoft (R) Macro Assembler Version 5.00 Copyright (C) Microsoft Corp 1981-1985, 1987. All rights reserved.Source

9、filename .ASM: count Object filename count.OBJ: Source listing NUL.LST: count Cross-reference NUL.CRF: count50310 + 431418 Bytes symbol space free0 Warning Errors0 Severe Errors 汇编程序的输入文件是.ASM 文件,其输出文件可以有 3 个: 第一个为 OBJ 文件:这是我们汇编的主要目的,所以这个文件我们是需要的。对于 Object filename count.OBJ:项直接回车,即可在磁盘上建立这一目标文件。 第二

10、个是 LST 文件,称为列表文件。这个文件同时列出源程序和机器语言程序清单, 并给出符号表,因而可使程序调试更加方便,这个文件是可有可无的,如果不需要则直接 回车即可,如果需要这个文件,则可回答文件名。LST 文件中清单的最后部分为段名表和 符号表,表中分别给出段名、段的大小及有关属性,以及用户定义的符号名、类型及属性。第三个文件是 CRF 文件,这个文件用来产生交叉引用表,对于一般程序不需要建立此文件,所以对于第三行的问题可直接回车,完成汇编过程。如果希望建立交叉引用表, 则应该用文件名来回答。交叉引用表给出了用户定义的所有符号,对于每个符号列出了其 定义所在行号及引用的行号。 到此为止,汇

11、编过程已经完成了。但是,汇编程序还有另一个重要功能:可以给出源 程序中的错误信息。警告错误(Warning Error)指出汇编程序所认为的一般性错误,严重错 误(Severe Error)则指出汇编程序认为已使汇编程序无法进行正确汇编的错误。除给出错误 的个数外,汇编程序还能指出错误信息,如 5 号错误是符号重复定义错,9 号则是符号没 有定义错等。如果你的程序有错,则应重新调用编辑程序修改错误,并重新汇编直到汇编 正确通过为止。当然汇编程序只能指出程序中的语法错误,至于程序的逻辑错误则应在程 序调试时解决。 4、用 LINK 程序产生 EXE 文件 汇编程序已产生出二进制的目标文件(OBJ

12、),但 OBJ 文件并不是可执行文件,还 必须使用连接程序 LINK 把 OBJ 文件转换为可执行的 EXE 文件。当然,如果一个程序是 由多个模块组成,也应该通过 LINK 把它们连接在一起,操作方法及机器回答如下: 在命令提示符后,执行 LINK count.obj 后,将会出现如下信息:Microsoft (R) 8086 Object Linker Version 3.05 Copyright (C) Microsoft Corp 1983, 1984, 1985. All rights reserved.Object Modules .OBJ: count Run File COUN

13、T.EXE: List File NUL.MAP: count Libraries .LIB: Warning: no stack segment LINK 程序有两个输入文件 OBJ 和 LIB。OBJ 是我们需要连接的目标文件,LIB 则是 程序中用到的库文件,如无特殊需要,则直接回车即可。LINK 程序有两个输出文件,一 个是 EXE 文件,另一个输出文件为 MAP 文件,它是连接程序的列表文件,又称为连接映 像(LINK MAP),它给出了每个段在存储器中的分配情况。连接程序给出的无堆栈段的警 告性错误并不影响程序的执行。到此为止,连接过程结束。 5、程序的执行 执行 EXE 文件运行程序,执行结束后返回 DOS。如果用户程序已直接把结果在终端 上显示出来,那么程序已经运行结束,结果也已得到了。但是有的时候结果并不显示,这 时就需要使用 DEBUG 程序的一些命令来查看。先运行 DEBUG 并装入要调试的 EXE 文 件,格式如下: C:debug count.exe 其中路径的具体情况依所用的计算机而定。然后就可以用 DEBUG 命令来检查数据了。 利用 DEBUG 调试程序对初学者是很重要的,特别是一些较大的程序,没有 DEBUG 的帮 助,调试将会是十分困难的。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号