




已阅读5页,还剩36页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
10 1汇编语言程序设计上机概述10 2汇编程序10 3连接程序10 4调试工具 第10章汇编语言程序设计上机指导 10 1汇编语言程序设计上机概述 10 1 1上机环境为了对包括Pentium指令在内的汇编语言的源程序文件进行汇编 应有一台Pentium以上的计算机 操作系统使用DOS5 0以上版本或在Windows操作系统命令提示符下进行 编辑程序可用EDIT等 MASM5 0以上宏汇编系统 包括 1 MASM 汇编程序 2 LINK 连接程序 3 CREF 索引程序 4 LIB 库管理程序用DEBUG调试程序时 假定后面的内容假定在C盘上建立了MASM子目录 且上述程序都在该目录中或建立了相应路径 第10章汇编语言程序设计上机指导 10 1 2汇编语言源程序上机操作步骤从编写好的汇编语言源程序到计算机可以运行这个程序 中间要经历一些步骤 可以归纳如下 1 编辑源文件根据给定的任务编写程序 一般在编辑过程中总会有错误产生 因此还要进行人工检查 重新编辑修改 直到所编辑的源程序认为无误为止 最后将它以一个源程序文件 ASM文件 存盘 2 汇编源程序文件由编辑程序所建立的 ASM文件只是一个文本文件 计算机无法直接运行该文件 需要经过汇编程序的汇编 使其转换为目标代码文件 它是通过调用宏汇编MASM程序完成这一汇编操作的 汇编程序还将对源程序进行语法检查 如发现有错 将给出错误原因 程序设计者可根据它分析和修改源程序 并再经过汇编 直到无误为止 此时得到的是一个目标文件 OBJ 第10章汇编语言程序设计上机指导 3 目标文件目标文件为浮动的相对地址 是不可以直接执行的 必须经过连接 把有关模块连接在一起构成统一的编址 从而为运行提供条件 在运行时 装填到内存中的具体位置由段地址来确定 连接过程是由LINK连接程序实现的 此时得到的是一个可执行文件 EXE文件 4 运行可执行文件得到该可执行文件后 就可以直接调用运行该可执行文件 如果程序设计正确 则可获得正确的运行结果 但对于一个较大的程序 往往会有很多设计上的逻辑错误 不可能一次就得到正确的结果 返回本章首页 第10章汇编语言程序设计上机指导 10 2 1汇编程序的类别经过编辑程序所建立的汇编语言源程序 是不能直接在计算机上运行的 必须经过汇编 连接后才能运行 目前使用的汇编程序中 主要有Microsoft公司的宏汇编MASM5 0和MASM6 11及Borland公司的TruboAssember5 0等版本 它们的基本功能是相似的 但高版本功能更强一些 另外 MASM6 11系统所提供的编程集成环境PWB将源程序的编辑 汇编 连接和运行集成在一起 也是一种不错的选择 MASM5 0支持80386以下CPU的指令集 以下以MASM5 0为例介绍汇编程序 10 2汇编程序 第10章汇编语言程序设计上机指导 10 2 2汇编过程宏汇编程序是二次扫描的汇编程序 它两次从头到尾逐行扫描源程序完成汇编过程 第一次扫描用来定义源程序每个行的相对位置 汇编程序中有一个软件计数器 称为定位计数器或地址计数器LC LocationCounter 当每个段开始时 LC复位 LC 0 汇编程序在逐行扫描中 LC按每行指令的字节数进行计数 读入一个源程序行后 先查看其是否为伪指令 若为伪指令则LC不计数 否则将指令长度 指令字节数 送L 再检查此行语句是否有标号 若有则把标号写到一个符号表中 并且把现行LC 即为上一条指令的计数结果 赋给标号且填入符号表中 然后将LC L LC 形成下一条指令的地址 即这条指令在段中的相对位置 称为段内偏移量 若语句没有标号则直接将LC十L LC及其后的操作 其它行按同样的方法处理 直至扫描到END指令时结束第一次扫描 这样通过第一次扫描可将源程序中的标号 变量的偏移量等填进符号表中 从而构成并得到了各条指令的相对地址和一张符号表 在第一次扫描时还计算出了源程序机器码的总长度 并可检查出一些语法错误 但不产生机器码 第10章汇编语言程序设计上机指导 汇编程序的第二次扫描是把汇编指令翻译成机器码 它根据汇编程序中的指令代码表找到汇编指令助记符对应的机器指令操作码 再根据第一次扫描产生的符号表 将指令中的符号操作数在符号表中查到 并找到其偏移值 从而将每条汇编指令翻译成机器代码并写到目标程序文件中去 在第二次扫描时 还要进行语法检查 将第一次扫描时未检查到的语法错误查出并显示 在第二次扫描后除了产生出目标程序文件 OBJ 外 还可根据需要产生列表文件 LST 和交叉索引文件 CRF 第10章汇编语言程序设计上机指导 其中 目标程序文件 其扩展名为 OBJ 在这个程序文件中 操作码部分已变成了机器码 可由机器识别 但地址操作数部分只是一个可浮动的相对地址 而不是内存中的绝对地址 列表文件 其扩展名为 LST 此文件包含源程序及其注释 地址和目标码 即汇编后的目标程序 它们都是用ASCII码表示的文本文件 需要时可用编辑程序将其打开以供查阅 交叉索引文件 其扩展名为 CRF 交叉索引文件是用来了解源程序中每个符号是在哪里定义的 哪些指令用到了这个符号 给出该指令的行号 交叉索引文件对较大的程序很有用 可以用来帮助查错 要把交叉索引文件打印出来 必须用CREF程序生成交叉索引列表文件 然后用编辑程序等查看 第10章汇编语言程序设计上机指导 10 2 3操作过程首先启动操作系统 假设MASM系统 以MASM5 0为例 已预先装在硬盘的MASM子目录中 下面均以C盘上操作为例进行说明 假设事先用编辑程序编辑的源程序为yfile ASM 则汇编过程如下 C MASM masmMicrosoft R MacroAssemblerVersion5 00Copyright C MicrosoftCorp1981 1985 1987 Allrightsreserved Sourcefilename ASM MyfileObjectfilename OBJ Sourcelisting NUL LST Cross reference NUL CRF 51698 417454BytessymbolspacefreeOWarningErrorsOSevereErrors 第10章汇编语言程序设计上机指导 宏汇编程序被调入以后 先显示版本号 然后依次提出提示 请求用户回答 第一行提问被汇编的源文件的名字 方括号内表示此文件带有后缀 ASM ASM是该源程序文件的隐含扩展名 此时应键入将要汇编的源程序文件的名字 并按回车键 第二行提问汇编后目标文件的名字 括号中的名字表示约定的文件名 其文件名部分自动采用源程序文件名 若采用这个名字则直接键入回车键 否则键入另起的名字 第10章汇编语言程序设计上机指导 第三行提问是否要建立列表文件 括号中的NUL为 空 的意思 表示不建立列表文件 若要建立列表文件 则需键入文件名 名字任选 也可同源程序文件名 但后缀必须为 LST 后缀可由用户连同文件名一起键入 也可不键入 即自动采用隐含值 如果不需要建立列表文件 则在第三行提问后直接按回车键 第四行是询问是否要建立交叉索引文件 括号中的意义同第三行 若不需交叉索引文件 可直接按回车键 否则键入交叉索引文件名 第10章汇编语言程序设计上机指导 也可以直接用下面的命令进行汇编 C MASM MASMMyfile提示同上 第10章汇编语言程序设计上机指导 用EDIT编辑程序观看列表文件的操作步骤如下 C MASM EDIT文件名 LST汇编后 也可查看交叉索引文件 以了解源程序中的符号定义和引用情况 其操作步骤如下 C MASM CREFCreffilename CRF 交叉索引文件名Listfilename filename REF C MASM EDITfilename REF在第一行提示下 打入汇编时在第四行询问时所键入的交叉索引文件名 第二行提示 可直接回车 表示采用括号中的文件名 第三行的EDIT程序就可列出交叉索引的列表文件了 如果在汇编时没有要求产生交叉索引文件 当然也就无需用CREF产生交叉索引文件了 返回本章首页 第10章汇编语言程序设计上机指导 10 3 1连接程序的作用由汇编程序生成的目标程序文件仍然不能执行 必须经过连接程序LINK连接以后 才能变成可执行文件 因为目标程序文件中有些指令地址还未完全确定 因此仍未成为可以用操作系统装入的程序形式 再者可能要将几个目标文件组合成一个功能更强的实用文件 甚至要和某些高级语言的目标程序文件进行组合 这些都要由连接程序LINK来完成 通过连接程序可将若干个目标文件连接成一个地址可浮动的 可由操作系统装入程序对地址定位的可执行文件 10 3连接程序 第10章汇编语言程序设计上机指导 这里要注意的是 连接程序LINK并不仅是为汇编语言程序所专用的 它作为Microsoft的80X86目标连接程序 可将宏汇编或高级语言 例如C PASCAL等 编译生成的目标文件连接在一起 成为一个可执行程序 并以后缀为 EXE的文件方式存盘 在操作系统命令提示符下 可直接输入该文件名来执行这个程序 第10章汇编语言程序设计上机指导 10 3 2连接过程在连接之前 源程序必须通过汇编或编译成为目标文件 在执行连接操作时 以一定的格式将这些目标文件与需要的库文件一起提供给连接程序 连接程序将它们的代码和数据进行组合 成为可执行文件 操作系统能够利用装入程序将可执行文件加载到内存的适当位置 然后运行之 注意 连接程序LINK只能处理在1MB地址以下运行的程序 第10章汇编语言程序设计上机指导 10 3 3LINK的使用与操作LINK连接目标文件有两种常用的操作方式 会话方式 命令方式不论在哪种操作方式下 若想停止连接程序的工作 可按CTRL C键来中断LINK程序的执行 第10章汇编语言程序设计上机指导 1 会话方式首先在含有LINK程序的软盘插入软盘驱动器中 或预先将其存在硬盘上 在操作系统命令提示符下键入LINK 连接程序就被调入 LINK程序将显示有关信息并依次给出提示信息请用户逐行回答 屏幕显示如下 C MASM LINKMicrosoft R OverlayLinkerVersion3 60Copyright C MicrosoftCorp1985 1987 Allrightsreserved ObjectModules OBJ myfileRunFile MYFILE EXE ListFile NUL MAP Libraries LIB Warning nostacksegment 第10章汇编语言程序设计上机指导 第一行提示要求输入目标模块名 此时应键入你要连接的目标文件名 后缀 OBJ可省略 LINK程序自动加上 OBJ为后缀 若要连接的是多个目标模块时 一定要用 号或空格将每个文件名分开 如果输入的名字一行放不下 就在该行的最后输入一个 号 然后按回车键 这时连接程序就提示用户追加目标文件 所有目标文件输入完后回车 第二行提示要求输入将要生成的可执行文件的文件名 括号内为LINK程序给出的隐含文件名 它与第一行提示中的目标模块名一样 只是将后缀换成 EXE 若第一行回答的目标模块是多个的话 则隐含的可执行文件名取为第一个目标文件名 此行可不输入文件名而直接回车 第10章汇编语言程序设计上机指导 第三行提示问是否要建立列表 映象 文件 若要建立 可键入列表文件名 这时可不输入扩展名 由LINK程序自动按隐含值 MAP为扩展名 如果不想要列表文件 此行提示时直接按回车键即可 第四行提示问是否需要连接库文件 若不需要 则直接按回车键 所谓库文件 是一些经常使用的目标文件的集合 它是为了提高效率 为了调试的方便而建立的 宏汇编语言可以把一些经常使用的子程序段单独汇编 这些单独汇编和调试的程序作为外部子程序 将它们以目标文件的形式存储起来而成为一个文件库 可把若干个目标文件集中起来 组成一个文件库 由库管理程序LIB对其进行编辑管理 第10章汇编语言程序设计上机指导 例10 1 连接目标模块ex1 OBJ ex2 OBJ ex3 OBJ建立一个名为ex1 EXE的可执行文件 操作如下 C MASM LINKMicrosoft R OverlayLinkerVersion3 60Copyright C MicrosoftCorp1985 1987 Allrightsreserved ObjectModules OBJ ex1 ex2 ObjectModules OBJ ex3 pauseRunFile EX1 EXE ListFile NULMAP Libraries LIB 第10章汇编语言程序设计上机指导 第一行目标模块没输完 最后键入 号 则LINK程序 第二行继续提示输入目标模块 第二行末尾的 pause 为LINK程序的可选择的参数项 这里键入了这个参数 表示当几个目标模块不在一张磁盘上时 连接过程中需要换盘 在换盘时此参数可使连接程序暂停 待换好盘后继续执行 第三行键入回车表示执行程序名选择括号里提示的名字 第四行键入回车表示不建立列表文件 第五行键入回车表示连接过程中不需要用文件库中的目标模块 第10章汇编语言程序设计上机指导 例10 2 连接目标模块ex1 OBJ ex2 OBJ程序时用到了A驱动器上LIB目录下的库文件EX LIB 可执行文件名为exa EXE 建立一个名为aaa MAP的映象 列表 文件 操作过程 C MASM LINKMicrosoft R OverlayLinkerVersion3 60Copyright C MicrosoftCorp1985 1987 Allrightsreserved ObjectModules OBJ ex1 ex2RunFile EX1 EXE exa exeListFile NUL MAP aaaLibraries LIB a lib ex注 关于库文件的建立方法见10 3 4节 第10章汇编语言程序设计上机指导 目前常用的汇编语言调试工具主要有DEBUG CodeView及TurboDebuger等 其中DEBUG通过单步 设置断点等方式为汇编语言程序员提供了非常有效的调试手段 10 4调试工具 第10章汇编语言程序设计上机指导 10 4 1DEBUG程序的调用在操作系统的命令提示符下 可键入命令 C MASM DEBUG d PATH filename ext parm1 parm2 其中 文件名是被调试文件的名字 如用户键入文件名 则DEBUG将指定的文件装入存储器中 用户可对其进行调试 如果未键入文件名 则用户可以用当前存储器的内容工作 或者用DEBUG命令N和L把需要的文件装入存储器后再进行调试 命令中的d指定驱动器 PATH为路径 parm1和parm2则为运行被调试文件时所需要的命令参数 在DEBUG程序调入后 将出现提示符 此时就可用DEBUG命令来调试程序 第10章汇编语言程序设计上机指导 10 4 2DEBUG的主要命令1 显示存储单元的命令D DUMP 格式为 D address 或 D range 例如 按指定范围显示存储单元内容的方法为 D10012018E4 0100726F7220720D6164 696E672064726976rorr adingdriv18E4 01107375246669636965 6E74206D656D6F72su ficientmemor 其中0100H至011FH是DEBUG显示的单元内容 左边用10六进制表示每个字节 右边用ASCII字符表示每个字节 表示不可显示的字符 这里没有指定段地址 D命令自动显示DS段的内容 如果只指定首地址 则显示从首地址开始的80个字节的内容 如果完全没有指定地址 则显示上一个D命令显示的最后一个单元后的内容 第10章汇编语言程序设计上机指导 2 修改存储单元内容的命令E Enter 此命令有两种格式如下 第一种格式可以用给定的内容表来替代指定范围的存储单元内容 命令格式为 Eaddress list 例如 Eds 100F5 OK 78其中F5 O K 和78各占一个字节 该命令可以用这五个字节来替代存储单元DS 0100到0104的原先的内容 第10章汇编语言程序设计上机指导 第二种格式则是采用逐个单元相继修改的方法 命令格式为 Eadress例如 Ees 100则可能显示为 18E4 010089 如果需要把该单元的内容修改为78 则用户可以直接键入78 再按 空格 键可接着显示下一个单元的内容 如 18E4 010089 781B 这样 用户可以不断修改相继单元的内容 直到用Enter键结束该命令为止 第10章汇编语言程序设计上机指导 4 检查和修改寄存器内容的命令R Register 它有三种格式如下 1 显示CPU内所有寄存器内容和标志位状态 其格式为 R例如 RAX 0000BX 0000CX 010ADX 0000SP FFFEEP 0000SI 0000DI 0000DS 18E4ES 18E4SS 18E4CS 18E4IP 0100NVUPDIPLNZNAPONC18E4 0100C70604023801MOVWORDPTR 0204 0138DS 0204 0138其中标志位状态的含义如下 第10章汇编语言程序设计上机指导 表10 1DEBUG中标志位的符号表示 第10章汇编语言程序设计上机指导 2 显示和修改某个寄存器内容 其格式为 Rregistername例如 键入 RAX系统将响应如下 AXFlF4 即AX寄存器的当前内容为F1F4 如不修改则按Enter键 否则 可键入欲修改的内容 如 RBXBX0369 059F则把BX寄存器的内容修改为059FH 第10章汇编语言程序设计上机指导 3 显示和修改标志位状态 命令格式为 RF系统将响应 如 OVDNEINGZRACPECY 此时 如不修改其内容可按Enter键 否则 可键入欲修改的内容 如 OVDNEINGZRACPECY PONZDINV可见键入的顺序可以是任意的 且标志间也可不用空格 第10章汇编语言程序设计上机指导 5 运行命令G Go 其格式为 G address1 address2 address3 其中 地址1指定了运行的起始地址 如不指定则从当前的CS IP开始运行 后面的地址均为断点地址 当指令执行到断点时 就停止执行并显示当前所有寄存器及标志位的内容 和下一条将要执行的指令 第10章汇编语言程序设计上机指导 6 跟踪命令T Trace 有两种格式 1 逐条指令跟踪 T adress 从指定地址起执行一条指令后停下来 显示所有寄存器内容及标志位的值 如未指定地址则从当前的CS IP开始执行 2 多条指令跟踪 T address Value 从指定地址起执行n条指令后停下来 n由value指定 第10章汇编语言程序设计上机指导 7 程序步跟踪命令P Programmingstep 由于T命令在遇到操作系统或BIOS中断时会跟踪到中断服务程序内部 有时出现死机现象 因而可用步跟踪命令P Programmingstep 代替T命令 以避免上述现象 P命令的使用格式为 P address Value 第10章汇编语言程序设计上机指导 8 汇编命令A Assemble 其格式为 A address 该命令允许键入汇编语言语句 并能把它们汇编成机器代码 相继地存放在从指定地址开始的存储区中 必须注意 DEBUG把键入的数字均看成10六进制数 所以如要键入10进制数 则其后应加以说明 如100D 第10章汇编语言程序设计上机指导 9 反汇编命令U Unassemble 有两种格式 1 从指定地址开始 反汇编32个字节 其格式为 U address 例如 U10018E4 0100C70604023801MOVWORDRTR 0204 013818E4 0106C70606020002MOVWORDPTR 0206 020018E4 010CC70608020202MOVWORDPIR 0208 020218E4 01
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年长春市市直事业单位公开招聘高层次人才(4号)(17人)模拟试卷及答案详解(名师系列)
- 乐理高考模拟试卷及答案
- 2025年电焊安全考试试卷及答案
- 2025北京市通州区马驹桥镇招考20人模拟试卷及答案详解(夺冠系列)
- 物流管理模拟试题及答案
- 民航消防考试试题及答案
- 2025年乐寿企业文化试卷及答案
- 建筑工程安全培训考试题及答案解析
- 法律漏洞的填补课件
- 2025年氢能基础设施建设与氢能产业投资收益预测报告
- 尿常规和粪常规解读课件
- 设备类风险辨识培训课件
- 黔菜菜名英译规范
- 神经病学诱发电位技术操作规范2023版
- 2023年高考地理真题 (浙江6月) 【备课精讲精研】 详细评讲
- 结婚函调报告表
- JJG 1036-2022电子天平
- FZ/T 64087-2022木棉纤维絮片
- GB/T 19812.6-2022塑料节水灌溉器材第6部分:输水用聚乙烯(PE)管材
- GB/T 7131-1986裂解气相色谱法鉴定聚合物
- GB/T 11379-2008金属覆盖层工程用铬电镀层
评论
0/150
提交评论