汇编语言上机操作及程序调试的方法

合集下载

汇编语言的编程步骤与调试方法

汇编语言的编程步骤与调试方法

汇编语言的编程步骤与调试方法汇编语言是一种底层的程序设计语言,直接操作计算机硬件。

在编写汇编语言程序时,需要经过一系列的编程步骤和调试方法,以确保程序的正确性和可靠性。

下面是关于汇编语言的编程步骤和调试方法的一些详细介绍。

一、编程步骤:1.定义程序目标:明确程序的功能、输入和输出。

2.设计算法和逻辑:将目标转化为汇编语言指令,设计算法和逻辑流程。

3.选择寄存器和指令:根据算法和逻辑需求,选择合适的寄存器和指令。

4.编写指令:根据算法和逻辑需求,使用正确的指令来编写汇编语言程序。

5.汇编编译:使用汇编编译器将汇编代码翻译成机器代码。

6.汇编连接:使用链接程序将机器代码和其他必要的文件(如库文件)连接成可执行文件。

7.调试和测试:进行调试和测试,确保程序的正确性和可靠性。

8.优化和改进:根据测试结果,对程序进行优化和改进。

二、调试方法:1.插入调试指令:在程序中插入一些特定的调试指令,可以输出一些关键的变量或标志位,以便观察程序的执行路径和结果。

2.单步执行:逐条执行程序代码,并观察每条指令的执行结果和影响,以及寄存器和存储器的变化情况。

3.观察寄存器和存储器:利用调试器观察程序执行过程中的寄存器和存储器的变化情况,以确定代码逻辑是否正确。

4.打印和日志输出:通过在程序中插入打印和日志输出的语句,可以观察关键变量和代码的执行情况,以帮助调试。

5.内存和寄存器状态检查:检查程序执行过程中的内存和寄存器状态,特别是对一些关键变量和标志位进行监视,以便发现问题所在。

6.脱机调试:将程序转储至仿真器或虚拟机,并在其中进行无风险的调试,以排查错误。

三、汇编程序调试常见问题及解决方法:1.程序崩溃或死循环:检查程序中循环和分支语句的逻辑判断条件是否正确,以及循环内的寄存器和内存操作是否正确。

2.内存访问错误:查看程序访问的内存地址和存储器的范围是否正确,并检查程序中的指针操作是否正确。

3.寄存器使用错误:检查程序中使用的寄存器是否正确选择和使用,尤其是在多个函数调用的情况下,需要注意寄存器的保存和恢复。

微机实验汇编语言程序的调试与运行步骤

微机实验汇编语言程序的调试与运行步骤

软件实验一汇编语言程序的调试与运行一.实验目的1.学习数据传送和算术运算指令的用法2.熟悉在PC机上编辑、汇编、连接、调试和运行汇编语言程序的过程。

二.实验内容将两个多位十进制数相加,要求被加数和加数均以ASCII码形式各自顺序存放在DATA1和DA TA2为首的5个内存单元中,结果送回DATA1处。

三.程序框图图1.1 两个多位十进制相加程序流程图四.程序清单DISP MACRO XMOV DL,X ;要显示的字符送DL寄存器MOV AH,02H ;DOS功能调用号是02HINT 21H ;21H中断程序是DOS功能调用ENDMDATA SEGMENTDATA1 DB '12732'DATA2 DB '06815'N EQU $-DA TA2DATA ENDSSTACK SEGMENT STACKSTA DB 20 DUP (?)TOP EQU $-STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA,SS:STACK,ES:DA TA START:MOV AX,DA TAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXLEA SI,DATA1 ;☆MOV BX,0MOV CX,NCALL DISPL ;显示被加数DISP '+'LEA SI,DATA2MOV BX,0MOV CX,NCALL DISPL ;显示加数DISP '='LEA DI,DA TA1MOV CX,NCALL ADDA ;调用加法子程序LEA SI,DATA1MOV BX,0MOV CX,NCALL DISPL ;显示运算结果DISP 0DHDISP 0AHMOV AX,4C00HINT 21HDISPL PROC ;显示子程序DS1: MOV AH,02HMOV DL,[SI+BX]INT 21HINC BXLOOP DS1RETDISPL ENDPADDA PROC ;加法子程序PUSH CXMOV BX,0AD1: SUB BYTE PTR [SI+BX],30HSUB BYTE PTR [DI+BX],30HINC BXLOOP AD1POP CXPUSH CXMOV BX,N-1 ;☆☆CLCAD2: MOV AL,[SI+BX]ADC AL,[DI+BX]AAAMOV [DI+BX],ALDEC BXLOOP AD2POP CXPUSH CXMOV BX,0 ;☆☆☆AD3: ADD BYTE PTR [DI+BX],30HINC BXLOOP AD3POP CXRET ;☆☆☆☆ADDA ENDPCODE ENDSEND START五.调试步骤1.编辑源程序,建立一个以后缀为.ASM的文件.2.汇编源程序,检查程序有否错误,有错时回到编辑状态,修改程序中错误行。

实验一汇编语言程序上机过程与调试

实验一汇编语言程序上机过程与调试

实验⼀汇编语⾔程序上机过程与调试实验⼀汇编语⾔程序上机过程与调试(基本指令实验)⼀、实验⽬的1、熟悉80X86寻址⽅式及基本指令的功能,进⼀步理解和巩固课堂学习的内容。

2、掌握汇编语⾔程序设计上机过程和汇编语⾔源程序结构,为后续汇编语⾔程序设计打好基础。

3、熟悉Masm for windows集成实验环境,以及DEBUG、CODEVIEW调试⼯具的使⽤⽅法。

⼆、实验预习要求1、熟悉汇编语⾔程序设计上机步骤,熟悉DEBUG、CODEVIEW调试⼯具的使⽤⽅法。

2、复习80X86操作数寻址⽅式及基本指令。

3、了解实验内容,并在实验前根据课堂所学知识回答有关问题(个别取决于程序实际运⾏环境的问题除外),以便在实验时进⾏验证。

三、实验内容(⼀)、读懂下列源程序,使⽤Masm for windows集成实验环境⽣成名为EX11.ASM的源程序,汇编⽣成EX11.OBJ⽂件和EX11.LST⽂件,连接⽣成EX11.EXE⽂件;⽤EDIT 或记事本打开EX11.LST⽂件,了解.LST⽂件包含的信息;使⽤DEBUG 和CODEVIEW调试⼯具单步执⾏EX11.EXE程序,注意观察IP值的变化,并回答下列问题。

1. 程序装⼊后,代码段寄存器CS的内容为0B68 H,代码段第⼀条可执⾏指令:MOV AX,DATA对应的机器代码为B81A0B H,它是⼀个3 个字节的指令,注意观察执⾏该指令时IP值的变化情况,该指令源操作数DATA的寻址⽅式是直接寻址,其值为0B6A 。

2. 执⾏完MOV DS,DA TA指令后,DS的内容为0B6A H,源程序在数据段中定义的数据82H,68H,88H被装⼊的存储单元的物理地址分别是0B6A0 H,0B6A1H,0B6A2H.3. 程序中第⼀条ADD AL,[BX]指令对应的机器代码为0207 H,它是⼀个2个字节的指令,注意观察执⾏该指令时IP值的变化情况;该指令源操作数的寻址⽅式是直接寻址,该操作数所在存储单元的逻辑地址(DS):(BX)为0B6A:0001 ,其物理地址为0B6A1H;执⾏完该指令后(AL)= EA H,CF= 0 ,OF= 0 ,ZF= 0,SF= 1 ,AF= 0 ,PF= 0 ;若两操作数为⽆符号数,计算结果是否正确?z 若两操作数为带符号数,计算结果是否正确?z若计算结果正确,结果是正数还是负数?f4.执⾏完第⼆条ADD AL,[BX]指令后(AL)= 72 H,CF= 1 ,OF= 1 ,ZF= 0 ,SF= 0,AF= 1 ,PF= 1 ;若两操作数为⽆符号数,计算结果是否正确?B 若两操作数为带符号数,计算结果是否正确?B5.指令MOV SUM,AL中,⽬的操作数的寻址⽅式为直接寻址。

汇编语言的编程步骤与调试方法

汇编语言的编程步骤与调试方法

汇编语言得编程步骤与调试方法一、汇编源程序得建立1、使用工具sm文件;(2)ASM,MASM汇编程序,对源程序进行汇编,生成、obj文件-目标文件,以及调试用、LST-列表文件与、CRF-交叉引用表;(3)Link连接程序,对使用得目标文件与库文件进行连接,生成、exe文件,同时调试用、map-地址映像文件;如果源程序无语法错误,上述三步将生成可运行得、exe文件,如果运行结果无误,则完成对汇编程序得编程,如果运行后结果存在错误,需要进行调试。

(4)Debug调试程序,对、exe文件进行调试,修改,直到程序正确。

图3目标程序生成步骤图2、编程过程(1)用文本编辑软件,编写扩展名为、asm得源文程序文件。

(2)用汇编程序对编好得源文件进行汇编。

命令行:masm[*、asm]↙如果源文件中存在语法错误,则汇编程序将指出错误类型及位置,可根据这些信息重新编辑源文件,直至无语法错误,汇编后,将生成指定名称得目标文件、obj。

使用MASM50汇编程序进行汇编,输入命令行masm或者masm *、asm 后,根据提示,输入文件名,在汇编没有错误得情况下,如屏幕所示:汇编程序可生成三个文件,*、obj,*、lst与*、crf。

*、obj-目标文件,用于连接生成可执行文件;*、lst-列表文件(可选),汇编语言汇编得机器语言与汇编语言对照表,可用于调试;*、crf-交叉引用文件(可选),给出了用户定义得所有符号与对每个符号定义、引用得行号。

(3)目标文件得连接命令行:link[*、obj][*、obj] [*、lib] ↙连接程序,将多个目标程序及库文件,连接生成可执行得*、exe文件,同时可选择生成*、map文件。

*、map-地址映像文件,给出内存地址分配得有关信息。

下图所示屏幕,为Link连接两个目标文件,没有错误得情况下,生成*、e xe文件。

(4)执行程序执行*、exe文件,观察程序运行结果,如果存在错误,需要进行调试。

微机实验:汇编语言程序的调试与运行步骤

微机实验:汇编语言程序的调试与运行步骤

软件实验一汇编语言程序的调试与运行一.实验目的1.学习数据传送和算术运算指令的用法2.熟悉在PC机上编辑、汇编、连接、调试和运行汇编语言程序的过程。

二.实验内容将两个多位十进制数相加,要求被加数和加数均以ASCII码形式各自顺序存放在DATA1和DA TA2为首的5个内存单元中,结果送回DATA1处。

三.程序框图图1.1两个多位十进制相加程序流程图四.程序清单DISP MACRO XMOV DL,X;要显示的字符送DL寄存器MOV AH,02H;DOS功能调用号是02HINT21H;21H中断程序是DOS功能调用ENDMDATA SEGMENTDATA1DB'12732'DATA2DB'06815'N EQU$-DA TA2DATA ENDSSTACK SEGMENT STACKSTA DB20DUP(?)TOP EQU$-STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA,SS:STACK,ES:DA TA START:MOV AX,DA TAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXLEA SI,DA TA1;☆MOV BX,0MOV CX,NCALL DISPL;显示被加数DISP'+'LEA SI,DA TA2MOV BX,0MOV CX,NCALL DISPL;显示加数DISP'='LEA DI,DA TA1MOV CX,NCALL ADDA;调用加法子程序LEA SI,DA TA1MOV BX,0MOV CX,NCALL DISPL;显示运算结果DISP0DHDISP0AHMOV AX,4C00HINT21HDISPL PROC;显示子程序DS1:MOV AH,02HMOV DL,[SI+BX]INT21HINC BXLOOP DS1CALL DISPL;显示被加数DISP'+'LEA SI,DA TA2MOV BX,0MOV CX,NCALL DISPL;显示加数DISP'='LEA DI,DA TA1MOV CX,NCALL ADDA;调用加法子程序LEA SI,DA TA1MOV BX,0MOV CX,NCALL DISPL;显示运算结果DISP0DHDISP0AHMOV AX,4C00HINT21HDISPL PROC;显示子程序DS1:MOV AH,02HMOV DL,[SI+BX]INT21HINC BXLOOP DS1RETDISPL ENDPADDA PROC;加法子程序PUSH CXMOV BX,0AD1:SUB BYTE PTR[SI+BX],30HSUB BYTE PTR[DI+BX],30HINC BXLOOP AD1POP CXPUSH CXMOV BX,N-1;☆☆CLCAD2:MOV AL,[SI+BX]ADC AL,[DI+BX]AAAMOV[DI+BX],ALDEC BXLOOP AD2POP CXPUSH CXMOV BX,0;☆☆☆AD3:ADD BYTE PTR[DI+BX],30HINC BXLOOP AD3POP CXRET;☆☆☆☆ADDA ENDPCODE ENDSEND START2.简单叙述上机步骤,调试方法。

汇编语言上机调试步骤

汇编语言上机调试步骤
汇编语言上机调试步骤
(A+B)*(C-D)为例
1.编辑原文件 编辑原文件
A)在cmd下,用edit编写扩展名为.asm的原文 件,知道原程序文件存放的路径。 B)在记事本下编写原程序,扩展名为.asm。
2.生成 生成.obj文件 生成 文件
利用汇编程序masm把原文件生成obj文件。 具体步骤如图:
使用debug 把应用程序调入内存 u反汇编命令
注意观察 AX,DS
r 显示或改变一个或多个 CPU 寄存器的内容。
注意观察 AX,DS 单步调试命令(或跟踪命令)
下一步执行的指令
注意观察DS D(转储)示一定范围内存地址的内容。
观察这些 数据
观察这些 数据
观察AX的低8位
观察A 果
在运行下输入cmd,进入到masm下面: ,进入到 下面: 在运行下输入 下面
原程序路径 及原程序
生成的目标程序及 其位置
原程序是否有语法错误,如果没 有生产obj文件,否则不能生成 obj文件。
Link生成 生成exe文件 生成 文件
link命令输入 obj文件所在位置
exe文件所在位置
调试程序观察值

汇编上机调试

汇编上机调试

8、q命令——退出debug命令 格式:q
设DS=当前地址,BX=0300H,SI=0002H,请用DEBUG 的命令将存储器偏移地址300H~305H连续单元装入0AH、 0BH、0CH、0DH、0EH、0FH,在DEBUG状态下键入下 列指令,用单步执行的方法,分析每条指令源操作数的寻 址方式,并记录每条程序中数据传送完毕后,AX中的内 容是什么? MOV AX, MOV AX, MOV AX, BX 0304H [0304H]
6、运行.exe文件
用debug命令查看不带回显的程序结果
1、编辑并保存
2、编译并修改源程序,形成.obj文件
3、连接.obj文件,形成.exe文件
4、运行.exe文件
5、用debug调试.exe文件
6、键入g <结束地址>命令,运行程序,用d或r命令观察结果
从汇编语言源程序到可执行程序的生成过程如图所示。
myfile.asm myfile.obj
汇编语言源程序
汇 编
目标程序
可执行程序
myfile.exe
连 接
1、双击“Masm for Windows集成环境”图标
2、编译源程序
3、保存文件
4、编译并修改源程序,形成.obj文件
5、连接.obj文件,形成.exe文件
MOV MOV MOV MOV
AX, AX, AX, AX,
[BX] 0001[BX] [BX][SI] 0001[BX][SI]
§ 汇编工具MASM
调试带回显的程序结果
1.汇编 把汇编语言程序翻译成机器语言描述的目标程序的过程。 2.连接 主要实现多个目标文件及库文件的连接,形成可执行程 序。
INT 20

实验二-汇编语言程序的上机步骤

实验二-汇编语言程序的上机步骤

实验二汇编语言程序的上机步骤一、实验目的熟练掌握汇编语言程序的上机步骤和程序调试方法。

二、实验内容及步骤1.通过CMD命令进入DOS方式。

2.通过CD命令和MD命令建立和进入用户程序目录。

3.将实验一笑脸程序补充为一个完整的汇编语言程序。

4.熟读第五部分内容:环境简介5.通过编辑——汇编——连接步骤生成.EXE形式的笑脸程序Smile.exe。

6.运行Smile.exe程序,观察运行结果。

7.用“DUBUG Smile.exe”命令将Smile.exe程序装入内存,通过R命令读取Smile.exe程序在内存的地址。

8.用反汇编U命令观察笑脸程序。

9.重复实验一“使用DEBUG调试程序”中的步骤(4)和(5),观察程序运行结果。

10.验证题以下程序段用以显示信息“Press any key when you ready.”。

在用户按下任一键后,另起一行显示信息“Input your password:”。

DSEG SEGMENT use16MESS1 DB ‘Press any key when you ready’,0AH,0DH,‘$’MESS2 DB ‘Input your password:’,’$’DSEG ENDSSSEG SEGMENT STACKDB 80H DUP(0)SSEG ENDSCSEG SEGMENTASSUME DS:DSEG,SS:SSEG,CS:CSEGSTART:MOV AX,DSEGMOV DS,AXMOV DX,OFFSET MESS1MOV AH,09HINT 21H ;显示“press any key when you ready.”MOV AH,08HINT 21H ;等待用户按任一键MOV DX,OFFSET MESS2MOV AH,09HINT 21H ;显示“Input your password:”MOV AH,4CHINT 21HCSEG ENDSEND START三、实验要求认真完成实验每一步骤,详细记录实验过程、现象和结果,及时整理实验报告。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

汇编语言上机操作及程序调试的方法第一节在IBM-PC机上运行汇编源程序所必备的软件为了在IBM-PC机上运行汇编源程序,机器上必须有DOS操作系统环境,DOS系统盘上应有下列文件:EDIT 文件编辑程序MASM 宏汇编程序CREF 交叉引用文件处理程序LINK 链接程序LIB 库管理程序DEBUG 调试程序第二节在IBM-PC机上运行汇编源程序的步骤当用户编制好汇编语言源程序之后,要在机器上运行,必须经过以下几个步骤:1.用EDIT命令建立与修改汇编源程序文件(ASM文件)源程序就是用汇编语言的语句编写的程序,它不能被机器识别。

源程序必须以ASM为附加文件名。

至于EDIT的使用方法可以查阅手册。

2.用MASM命令汇编源文件以产生相应的目标文件(OBJ文件)源程序建立以后,必须经过汇编,转换成用二进制代码表示的目标文件,机器才可运行。

汇编是通过调用PC—DOS下的宏汇编程序MASM实现的。

汇编过程中,汇编程序对源文件进行二次扫描,如果源程序中有语法错误,则汇编过程结束后,汇编程序会指出源程序中的错误,这时,用户可以再用编辑程序来修改源程序中的错误,最后,得到没有语法错误的OBJ文件。

3.用LINK命令连接目标文件以产生可执行文件(EXE文件)由于汇编之后所得到的目标代码的存放地址并不是可执行的绝对地址,而是浮动的相对地址,因而,必须经过连接,把程序的各个模块连接在一起,或把要调用的子程序与主程序连接在一起,把相对地址变成绝对地址,形成可执行的文件。

连接是由调用PC—DOS下的LINK程序来实现的。

4.调试、运行可执行文件。

经过以上过程,在盘上有了可执行文件,则可在DOS提示符下,直接打入文件名(不用扩展名),就可以把执行文件从盘上装入内存,且立即执行此程序。

然而通常一个较复杂、较长的汇编语言源程序,希望一点错误也没有的可能性是很小的,这样就需要调用PC —DOS 支持下的DEBUG 程序,来调试我们的目标程序。

被调试程序在DEBUG 的管理下,可以单步执行程序,也可以设置断点,可以显示和修改CPU 内部寄存器和标志位的内容等,这样就便于寻找程序中的错误。

在发现了错误以后,通常还要重复上述的编辑、汇编,连接和调试程序的全过程,直至程序运行正确为止。

已调试的目标程序,任何时候都可在PC DOS 下,通过打入文件名即可运行它。

上机过程示意图如下: 汇编语言程序编辑程序汇编程序连接程序调试程序有错吗?运行程序Y N图2-1 汇编语言程序上机过程流程为了便于操作,下面将上机操作全过程中的主要部分分别加以介绍,编辑程序因为使用普遍,在此不做介绍。

第三节 宏汇编程序经过编辑命令建立和修改后存盘的汇编语言源程序(扩展名为.ASM),要在机器上运行,必须先由汇编程序把它汇编为机器码的目标程序。

经过IBM 汇编程序汇编后的程序在盘上建立三个文件:一个是扩展名为.OBJ 的目标程序。

在此程序中,操作码部分已变为机器码,但操作数地址只是一个可浮动的相对地址,而不是内存中的绝对地址。

第二个是扩展名为.LST 的汇编列表文件,它把源程序(包括注释)和汇编后的目标程序都制表,可以打印出来供检查用。

第三个是扩展名为.CRF的符号交叉列表文件,可以对符号进行前后对照。

在汇编时,汇编程序对要不要建立这些文件,有如下提示:例如对exam.asm文件进行汇编:在DOS状态下,打入MASM调用宏汇编程序,屏幕显示与操作如下:C>MASM ↙此时,屏幕上出现如下信息:The IBM Personal Comporter MACRO Assemble,1.00(C)Copyright。

IBM Corp 1981.Source filename[.ASM]:exam ↙Object filename[exam.Obj]:↙Source Listing[Nul.1st]:exam ↙Cross reference[Nul.crf]:exam ↙Warning SeveresErrors Errors0 0从上面操作过程中可以见到,汇编程序的输入文件就是:用户编写的源程序,它必须以ASM为文件扩展名,在汇编调入后,先显示版本号,然后出现第一行提示,询问要汇编的源文件名。

用户输入文件名,则出现第二个提示,询问目标程序的文件名,括号内的为机器规定默认的(default)文件名,通常直接按回车,表示采用默认文件名,接着出现第三个提示,问是否要建立可打印文件,若要,打入文件名,若不要,可直接回车。

最后出现第四个提示,询问是否要建立交叉索引文件,若需要则打入文件名,若不要直接回车。

在回答了第四个询问后,汇编程序就对源程序进行汇编。

汇编过程结束时,如果程序有错误会给出源程序的警告性错误(warning errors)和严重错误(severs errors)。

前者指出一般性错误,后者指出语法性错误。

当存在这两类错误时,屏幕上除指出错误个数外,还给出错误信息代号。

程序员可以通过查代码手册弄清楚错误的性质。

如果汇编过程中,发现有错误,则程序员应该重新用编辑命令修改错误,再进行汇编,最终直到汇编正确通过。

要指出的是汇编过程只能指出源程序中的语法错误,并不能指出算法错误和其他错误。

注意:汇编后建立的.CRF文件是不能单独使用的,若需要了解源程序中的符号(包括变量)在定义和引用时的情况,还要调用CREF文件对CRF文件进行处理,生成.REF文件后,才能打印(或显示)输出.其过程如下:C> CREF ↙Cref filename [.CRF]: exam ↙List filename [exam.REF]: ↙在DOS状态下,打入CREF,就会调入交叉引用文件处理程序CREF。

CREF 运行时,首先询问要处理的文件名。

在键入文件名后,出现第二个提示,询问.REF文件名,可用回车承认默认的.REF文件名。

于是就建立了一个扩展名为.REF的文件,然后返回DOS状态。

在DOS状态,用TYPE命令打印此文件,得如下显示信息:Symbol Cross_Reference (# is definition)Cref_1BUF * * * * * * * * * * * 8# 16CODE * * * * * * * * * * 12# 13 21DATA * * * * * * * * * * 7# 11 13 14STACK * * * * * * * * * * 1# 6 13START * * * * * * * * * * 14# 22其中,有#号者是此符号被定义时的语句行号,后面是引用此符号的语句行号。

第四节连接程序(Link)由汇编程序建立的目标码文件必须经过连接以后,才能成为可执行文件。

连接程序并不是专为汇编语言设计的。

利用它可以把若干个模块连接在一起,这些模块可以是汇编程序产生的目标码文件,也可以是其它高级语言编译程序产生的目标文件。

在连接过程中,又建立了几个文件。

具体操作如下(以exam.obj进行连接为例):C>LINK ↙此时,屏幕上出现如下信息:IBM 5552 multistation Linker 2.00(C)Copyright IBM Corp.1985 Corp.1985Object modules[.OBJ]exam ↙Run File[exam.EXE]: ↙List File[NUL.MAP]:exam ↙Libraries[.LIB]: ↙Warning: NOSTACK Segment首先询问要连接的目标文件,操作员键入文件名作为回答(此处是exam)。

如果有多个要连接的目标文件,应一次键入。

各目标文件名之间用“+”号隔开。

第二个提示询问要产生的可执行文件的文件名,一般直接回车就采用了括号内规定的默认文件名。

第三个提示询问是否要建立地址分配文件。

键入文件名再回车表示要建立,直接按回车键表示不要建立。

最后询问是否用到库文件,如果没有库文件,则直接键入回车即可(如果用户用到库文件,则键入库文件名。

建立库文件的方法见第五节)。

回答以上问题后,连接程序便开始进行连接。

若连接过程有错,则显示错误信息。

若有错误就要重新调用编辑程序修改源文件,然后重新汇编、连接,直至无错。

LINK过程产生两个输出文件,一个是扩展名为EXE的执行文件.产生此文件当然是LINK过程的主要目的,另一个是扩展名为MAP列表分配文件,有人也称它为映象文件,它给出每个段在内存中的分配情况。

比如某个列表分配文件为如下内容:C>TYPE exam.Map ↙Warning:No STACK SegmentStart Stop Length Name00000H 0015H 0016H CODE00020H 0045H 0026H DATA00050H 0061H 0012H EXTRAPrograme Entry point at 0002:0000由上面看出,变量CODE的起始地址是0000H,结束地址是0015H,字节数是16H,以此类推。

另外从LINK过程提示信息中,可看到最后给出一个“无堆栈段”的警告性错误,这并不影响程序的执行。

当源程序中设置了堆栈段,则无此提示信息。

第五节子程序库的建立方法在处理比较复杂的问题时,往往需要把某些经常被反复调用的子程序汇编成目标模块,集合在一起组成一个“子程序库”(.LIB),以方便调用。

建立子程序库是调用DOS的库管理程序LIB来实现的。

库管理程序LIB的启动方式分为提问方式、命令方式、文件方式三种,此处仅介绍提问方式。

在DOS状态,键入“LIB↙”之后,DOS把LIB装入主存并向用户提问,用户根据要求键入相应的回答。

LIB的提问信息及其回答如表1所示,回答时可用的命令字符如表2所示。

表1 LIB的提示信息及回答表2 库管理命令字符下面举例说明子程序库的建立方法.建立一子程序库WAN.LIB,将子模块QUEUE、F10T2、F2T10放入该库中,其操作步骤如下:⑴建立它们的源文件QUEUE.ASM、F10T2.ASM、F2T10.ASM。

⑵将这三个源文件模块分别汇编,生成目标文件QUEUE.OBJ、F10T2.OBJ、F2T10.OBJ。

⑶调用库管理程序LIB建立子程序库WAN.LIB,并将三个目标文件加入库中,既可逐个加入,也可一次加入。

如果逐个加入,可用以下方法(一):C> LIB↙Microsoft (R) Library Manager Version 3.04Copyright (C) Microsoft Corp 1983,1984,1985,1986.All rights reserved.Library name: WAN↙Library does not exist. Create? Y↙Operations: +QUEUE↙List file: ↙C> LIB↙Microsoft (R) Library Manager Version 3.04Copyright (C) Microsoft Corp 1983,1984,1985,1986.All rights reserved.Library name: WAN↙Library does not exist. Create? Y↙Operations: +F10T2↙List file: ↙C> LIB↙Microsoft (R) Library Manager Version 3.04Copyright (C) Microsoft Corp 1983,1984,1985,1986.All rights reserved.Library name: WAN↙Library does not exist. Create? Y↙Operations: +F2T10↙List file: ↙如果一次加入,可用如下方法(二):C> LIB↙Microsoft (R) Library Manager Version 3.04Copyright (C) Microsoft Corp 1983,1984,1985,1986.All rights reserved.Library name: WAN↙Library does not exist. Create? Y↙Operations: +QUEUE+F10T2+F2T10↙List file: ↙库文件建立以后,库中的子程序可以方便地被其它程序调用。

相关文档
最新文档