您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > 11--汇编语言程序的上机过程
(一)汇编语言源程序上机处理过程(1)建立汇编语言的工作环境为能方便地编辑和处理汇编语言源程序,从而最终获得可执行程序文件,我们至少需要以下程序。1)文本编辑程序,例如记事本、写字板等2)汇编程序,例如MASM.EXE3)链接程序,例如LINK.EXE4)调试程序,例如DEBUG.EXE(2)建立ASM文件通过使用文本编辑程序(例如记事本、写字板等)建立一个后缀名为.ASM的汇编语言源程序文件。(3)使用MASM汇编程序产生OBJ文件使用汇编程序MASM对ASM源程序文件进行汇编,产生OBJ二进制目标文件。基本操作方法为:MASM↙然后根据提示进行操作。汇编程序的输入文件是ASM文件,其输出文件可以有以下三个。①OBJ二进制目标文件该文件是汇编操作的主要目的,是必需的。②LST列表文件该文件是ASCII文件,其内容包括以下两个部分。首先以源程序指令与目标机器指令相互对照的形式给出汇编结果。其次,LST清单的最后部分给出宏指令名表、段名表和符号表。宏指令名表本程序模块所定义的所有宏指令的名字和行数。段名表本程序模块所包含的所有逻辑段的段名、段的字节长度和段的属性(定位类型、组合类型和类别名)。符号表本程序模块所使用的所有标号、变量和过程的名字和属性(类型、段内偏移量和所属段),以及本程序模块使用EQU/=伪指令定义的所有符号的符号名、类型(NUMBER、TEXT、OPCODE等)和值。③CRF文件此文件用来产生交叉引用表REF。一般程序不需要建立此文件。如果需要建立交叉引用表,则还需要调用CREF.EXE文件如下。CREFCRF文件名交叉引用表排列出了程序模块所定义的所有符号,每一行列出一个符号的定义行号(#)和引用行号。(4)使用LINK程序产生EXE文件MASM汇编程序产生出二进制目标文件(OBJ文件),但是OBJ文件并不是可执行文件,还必须使用连接程序LINK把OBJ文件转换为可执行的EXE文件。如果一个程序由多个程序模块组成,也应该使用LINK把它们连接在一起。操作方法如下。LINK↙然后根据提示进行操作。LINK程序有两种类型的输入文件OBJ和LIB。1)OBJ文件:需要进行连接的目标文件。2)LIB文件:程序中需要用到的库文件。LINK程序有两个输出文件。1)EXE文件:可执行文件。2)MAP文件:连接映像文件。该文件给出各个物理段在起始地址为00000H的地址空间中的分配情况。(5)执行程序可执行文件名↙总结汇编程序具有以下作用①将指令性语句翻译为相应的机器代码指令。②确定标号、过程名和变量名在各自逻辑段内的偏移地址,这个偏移地址还不是这些名字的最终偏移地址。链接程序具有以下作用①在起始地址为00000H的地址空间中,安排所有逻辑段的空间位置,从而确定出所有物理段在这个地址空间中的段地址。②确定所有过程名、变量名和标号的段内偏移地址。(二)DEBUG调式程序一、调用DEBUG程序格式:DEBUG可执行程序完整文件名功能:将可执行程序装入内存,并初始化DS、ES、SS、SP、CS和IP,如下图所示。例如:debugstring.exe↙SS00FFH0000H程序段前缀区PSPINT20H指令低字节INT20H指令高字节┇┇PSP最后一个字节堆栈区第一个字节(用户程序第一个字节)┇堆栈区最后一个字节数据段区第一个字节┇数据段区最后一个字节SP栈底┇┇用户程序第一条指令┇用户程序第一条被执行的指令┇用户程序最后一条指令┇IPCS用户堆栈段区用户数据段区用户代码段区用户程序区DS、ES可用内存最低地址区的小段边界二、DEBUG命令(1)反汇编命令格式1:U[地址]地址格式如下段基址:偏移地址功能:从指定地址开始,反汇编32个字节。说明:①如果缺省全地址,则默认全地址为CS:IP,但是如果连续使用缺省全地址的U命令进行反汇编,则从第二个U命令开始,连续从上一个U命令的最后一条指令的下一个单元开始反汇编32个字节。②如果缺省段地址,则默认为CS。使用反汇编命令显示实际程序,可以了解各条实际的程序指令和各个物理段在实际内存中的位置。格式2:U地址范围地址范围的格式如下[起始地址结束地址]或[起始地址L字节长度]功能:对指定范围内的内存单元进行反汇编。(2)运行程序命令格式:G[=地址1][地址2][地址3]…功能:从[地址1]开始运行程序,直至断点[地址2]、[地址3]…。说明:①缺省所有地址时,从当前指令位置CS:IP开始运行程序,直至运行到当前指令位置。②缺省段地址时,默认当前代码段CS。(3)内存显示命令格式1:D[地址]功能:从指定地址开始,显示80H个字节的内存内容。格式2:D[范围]功能:显示指定地址范围内的内存内容。缺省段地址时,默认当前数据段DS。(4)内存修改命令格式1:E地址内容表功能:将内容表的内容填充到指定地址开始的内存单元中。格式2:E地址功能:修改指定地址单元的内容。缺省段地址时,默认当前数据段DS。(5)寄存器命令格式1:R功能:显示CPU所有内部寄存器的内容和标志位的状态。其中各标志位的状态表示如下。标志名置位(1)复位(0)溢出OFOV(溢出)NV(无溢出)方向DFDN(减量)UP(增量)中断允许IFEI(允许)DI(屏蔽)符号SFNG(负)PL(正)零ZFZR(零)NZ(非零)辅助进位AFAC(有进位)NA(无进位)奇偶PFPE(偶)PO(奇)进位CFCY(有进位)NC(无进位)格式2:R寄存器名功能:显示和修改指定寄存器的内容。格式3:RF功能:显示和修改标志位的状态。(6)汇编命令格式1:A[地址]功能:从指定地址开始允许输入汇编语句,DEBUG将把它们汇编成机器代码,相继存放在指定地址开始的存储单元中。(7)追踪命令格式1:T[=地址]功能:从指定地址开始,执行一条指令后停下来,显示所有寄存器内容和状态标志。格式2:T[=地址][值]功能:从指定地址开始,执行n条指令后停下来,n由[值]指定。说明:①缺省地址时,默认当前指令位置是CS:IP。②缺省段地址时,默认当前代码段CS。
本文标题:11--汇编语言程序的上机过程
链接地址:https://www.777doc.com/doc-3212032 .html