《2022年实验二简单程序的编写及汇编连接知识 .pdf》由会员分享,可在线阅读,更多相关《2022年实验二简单程序的编写及汇编连接知识 .pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、实验二简单程序的编写及汇编连接一、实验目的1 熟练掌握编写汇编语言源程序的基本方法和程序的基本框架。2 学会编写顺序结构、分支结构和循环结构的汇编程序。3 掌握程序中数据的产生与数输出的方法。4 熟悉建立源文件,进行汇编和连接的全过程,并对程序进行调试。二、实验要求1 预习附录2 的内容2 实验前准备分析题目,将程序中的原始数据、中间结果和最终结果的存取方式确定好。写出算法或画出流程图。写出源程序。对程序中的结果进行分析,并准备好上机调试的过程。3 本实验要求在PC 机上进行。4 汇编过程中出现问题,可用DEBUG 进行调试。三、实验内容1实验内容1 用 EDIT 应用程序编辑源程序(参考程序
2、见下),建立. ASM 文件;用 MASM 程序汇编该文件,生成.OBJ 文件; 查看.LST 文件的内容用 LINK 程序链接,生成. EXE 文件;使用 DEBUG 命令将. EXE 文件调进内存,执行后查看程序运行结果;使用 DEBUG 命令,检查各段在内存当中分配情况。参考程序:; exercize21 data segment org 0200h buffer dw 0, 1, -5, 10, 256, -128, -100, 45, 6, 3, dw -15,-67, 39, 4, 20, -1668, -32766, 32765, -525, dw 300 count equ (
3、$-buffer)/2 max dw ? data ends stack segment stack stack db 100 dup (s) stack ends code segment para code assume cs:code, ds:data, ss:stack sta proc far push ds xor ax, ax push ax mov ax, data mov ds, ax lea si, buffer 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1
4、 页,共 5 页 - - - - - - - - - mov cx, count dec cx mov ax, si chkmax: add si, 2 cmp si, ax jle next mov ax, si next: loop chkmax mov max, ax ret sta endp code ends end sta 实验报告要求:1 小结汇编语言源程序的编译及连接过程;2 通过 debug 调试工具查看并记录DS 在程序执行中的变化情况3 写出程序调试中出现的问题及解决方法;2实验内容2 编辑源程序 (参考程序见后),建立. ASM 文件;用 MASM 程序汇编产生. OB
5、J 文件;用 LINK 程序产生. EXE 文件;执行 . EXE 文件,观察程序运行现象;修改源程序,使输出的数字之间用空格间隔;参考程序:; display “ 09” 100 times stac segment stack stack db 100 dup (s) stac ends cod segment para code assume cs:cod, ss:stac sta proc far push ds xor ax, ax push ax mov cx, 100 mov bl, 0 goon: push cx mov ah, 2 mov dl, 0dh int 21h mo
6、v al, bl inc al daa and al, 0fh mov bl, al or al, 30h mov dl, al mov ah, 2 int 21h 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 5 页 - - - - - - - - - mov dx, 5 l1: mov cx, 0ffffh again: loop again dec dx jnz l1 pop cx loop goon ret sta endp cod ends end sta 3
7、实验内容3:编程完成以下功能,并上机调试通过。假设有20 个数据: 5, -4,0,3,100,-51,(自定),请编一子程序判断每个数是大于0,等于 0,还是小于0,由主程序调用该子程序,最后统计出大于零、小于零以及等于零的数据的个数。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 5 页 - - - - - - - - - 附录 2 汇编与宏汇编程序一、汇编程序汇编是把用汇编语言编写的源程序翻译(汇编)成机器语言的目标程序。汇编程序可以使用小汇编程序(ASM ) ,在
8、小汇编程序下汇编语言程序可在64KB 的内存条件下运行,小汇编程序不支持宏指令以及有关的功能,只能有限制地使用伪指令。也可以用宏汇编程序(MASM ) ,它必须在96KB 以上的内存条件下运行,宏汇编程序包括小汇编的功能,同时可以使用所有的宏指令和伪指令。由于宏汇编程序不但可以代替ASM ,而且可以汇编具有宏定义的汇编源程序,因此我们在汇编程序时使用宏汇编程序(MASM ) 。二、运行汇编程序的条件DOS 操作系统或Windows 操作系统汇编系统盘,其中应包含下列文件:MASM 宏汇编程序文件LINK 链接程序文件CREF 索引程序文件(可以不用 ) DEBUG 调试程序文本编辑程序(EDI
9、T, 记事本等)三、汇编语言程序的上机过程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 fi
10、lename .ASM: count Object filename count.OBJ: Source listing NUL.LST: count Cross-reference NUL.CRF: count 50310 + 431418 Bytes symbol space free 0 Warning Errors 0 Severe Errors 汇编程序的输入文件是.ASM 文件,其输出文件可以有3 个:第一个为OBJ 文件:这是我们汇编的主要目的,所以这个文件我们是需要的。对于Object filename count.OBJ: 项直接回车,即可在磁盘上建立这一目标文件。第二个是
11、LST 文件,称为列表文件。这个文件同时列出源程序和机器语言程序清单,并给出符号表,因而可使程序调试更加方便,这个文件是可有可无的,如果不需要则直接回车即可,如果需要这个文件,则可回答文件名。LST 文件中清单的最后部分为段名表和符号表,表中分别给出段名、段的大小及有关属性,以及用户定义的符号名、类型及属性。第三个文件是CRF 文件, 这个文件用来产生交叉引用表,对于一般程序不需要建立此文件,所以对于第三行的问题可直接回车,完成汇编过程。如果希望建立交叉引用表,则应该用文件名来回答。交叉引用表给出了用户定义的所有符号,对于每个符号列出了其定名师资料总结 - - -精品资料欢迎下载 - - -
12、- - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 5 页 - - - - - - - - - 义所在行号及引用的行号。到此为止,汇编过程已经完成了。但是,汇编程序还有另一个重要功能:可以给出源程序中的错误信息。警告错误 (Warning Error) 指出汇编程序所认为的一般性错误,严重错误(Severe Error)则指出汇编程序认为已使汇编程序无法进行正确汇编的错误。除给出错误的个数外,汇编程序还能指出错误信息,如5 号错误是符号重复定义错,9 号则是符号没有定义错等。如果你的程序有错,则应重新调用编辑程序修改错误,并重新
13、汇编直到汇编正确通过为止。当然汇编程序只能指出程序中的语法错误,至于程序的逻辑错误则应在程序调试时解决。4、用 LINK 程序产生EXE 文件汇编程序已产生出二进制的目标文件(OBJ),但 OBJ 文件并不是可执行文件,还必须使用连接程序LINK 把 OBJ 文件转换为可执行的EXE 文件。当然,如果一个程序是由多个模块组成,也应该通过LINK 把它们连接在一起,操作方法及机器回答如下:在命令提示符后,执行LINK count.obj后,将会出现如下信息:Microsoft (R) 8086 Object Linker Version 3.05 Copyright (C) Microsoft
14、Corp 1983, 1984, 1985. All rights reserved. Object Modules .OBJ: count Run File COUNT.EXE: List File NUL.MAP: count Libraries .LIB: Warning: no stack segment LINK 程序有两个输入文件OBJ 和 LIB 。OBJ 是我们需要连接的目标文件,LIB 则是程序中用到的库文件,如无特殊需要, 则直接回车即可。LINK 程序有两个输出文件,一个是 EXE 文件,另一个输出文件为MAP 文件,它是连接程序的列表文件,又称为连接映像(LINK MA
15、P) ,它给出了每个段在存储器中的分配情况。连接程序给出的无堆栈段的警告性错误并不影响程序的执行。到此为止,连接过程结束。5、程序的执行执行 EXE 文件运行程序,执行结束后返回DOS。如果用户程序已直接把结果在终端上显示出来,那么程序已经运行结束,结果也已得到了。但是有的时候结果并不显示,这时就需要使用DEBUG 程序的一些命令来查看。先运行 DEBUG 并装入要调试的EXE 文件,格式如下:C:debug count.exe 其中路径的具体情况依所用的计算机而定。然后就可以用DEBUG 命令来检查数据了。利用 DEBUG 调试程序对初学者是很重要的,特别是一些较大的程序,没有DEBUG 的帮助,调试将会是十分困难的。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 5 页 - - - - - - - - -