




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验一汇编语言编程实验方法 李振宁 一 实验的一般步骤 准备工作 开始 运行 cmd 确定 进入dos平台 在命令行下一次输入命令 e cdbinmkdirworkcdwork设置环境变量在dos命令行下输入 pathe bin PATH 之后就可以在work目录下使用上级目录下的masm link等程序了 二 程序编写 progname hello asm function display hello SSEGSEGMENTPARASTACKDW256DUP SSEGENDS DSEGSEGMENT DATASEGMENTMESSDB HELLO 0DH 0AH DSEGENDS CSEGSEGMENT CODESEGMENTASSUMECS CSEG DS DSEGSTART MOVAX DSEGMOVDS AXMOVDX OFFSETMESSMOVAH 9INT21HMOVAH 4CHINT21HCSEGENDSENDSTART 三 汇编 masm的使用 用法 MASM option source asm out obj list lst cref crf 举例 MASM仅显示版本信息和简单用法 MASMHELLO ASM MASMHELLO ASMHELLO OBJ MASMHELLO 由于我们所用的masm版本是6 11 所以 其实际上是用的是ml exe 版本6 x中之所以保留masm exe 是为了兼容早期版本的用户的使用习惯 四 连接 link的使用 usage LINK options objs exefile mapfile libs deffile 使用方法与masm类似 mapfile 定位映像文件 libs 函数库文件 举例 我们现在使用的link exe版本是5 31 009 LINKHELLO OBJ HELLO EXE LINKHELLOLINKHELLO 操作步骤 进入工作目录设置环境变量path使用 记事本 编辑源代码文件汇编 masmhello asm连接 linkhello obj hello exe 运行hello exe 五 调试 debug的使用 每个版本的dos都带有debug调试器 原因是debug不仅是调试器 也是二机制文件编辑器 还是简单的系统维护工具 Debug能提供一个动态调试程序的环境 程序员利用这个环境 可方便的调试目标代码程序 DOS程序结构 EXE程序可执行程序 executalbleprogram 以 exe为后缀 由多个段组成 长度可大于64KB 磁盘上的 EXE文件和内存中的 exe文件不大一样 它包括 文件头 控制信息 重定位信息 装入模块 程序本身 程序由系统 命令解释器或者debug exe 装载进内存后 其段分布如图所示 初始化段寄存器内容如下 1 DS ES指向PSP ProgramSegmentPrefix 程序段前缀 包含一些系统信息和命令行参数 段地址 程序中须重新设置 使其指向数据段 和附加段 2 CS IP和SS SP由连接程序确定 如果不指定堆栈段 则SS PSP的段地址 SP 100H 堆栈段占用PSP的部分区域 有时也能正常工作 为安全 应设置堆栈段 DOS程序结构 com程序代码段 数据段以及堆栈段 附加段 合并成一个段 长度不超过64KB 磁盘上的COM文件是内存的完全映象 不含附加信息 com程序装载进内存后 1 所有段地址都指向PSP的段地址 2 执行起点 CS 0100处 3 SP自动设为0FFFEH 64K的最后一个字单元 且将0FFFEH和0FFFFH单元设为0 启动debug Debug 文件标识符 参数表 文件标识符 指定要调试的程序 如果缺省文件标识符 则认为暂时没有指定被调试对象 参数表给出被调试程序所要用的命令行参数 启动成功后 给出提示符 debug的两种启动过程 debug虽然没有指定被调试程序 但debug仍在内存区建立一个程序段前缀 做好准备工作 显示提示符 用户也可以下达命令 各段寄存器得初值是相同的 等于psp的段值 该值与可用内存区位置有关 段内偏移0 ffh的区域作为psp 指令指针IP的值定为100H 这种安排与调试 com类型的可执行文件相同 debughello exe如果找不到指定的命令文件 将提示信息 filenotfound 但仍给出debug提示符 结果和第一种情况相同 如果找到hello exe 则装载该程序文件 为其建立程序段前缀 重定位 作好运行程序的准备 各寄存的状态 DS ES都等于psp段值 CS等于代码段段值IP等于启动地址的偏移 SS等于堆栈段段值sp等于堆栈顶偏移BX CX为实际装载的长度 单位是字节 debug的退出 输入Q命令quit debug命令一览 A 地址 汇编C 范围 地址内存区域比较D 范围 显示内存单元内容E地址 字节值表 修改内存单元内容G 起始地址 断点地址表 断点执行H数值数值十六进制加减I端口地址从端口输入L 地址 驱动器号扇区号扇区数 从磁盘读M范围地址内存区域传送N文件标识符指定文件O端口字节值向端口输出P 地址 数值 执行过程Q退出debugR 寄存器名 显示和修改寄存器内容T 地址 数值 跟踪执行U 范围 反汇编w 地址 驱动器号扇区号扇区数 向磁盘写S范围字节值表在内存区域搜索 命令参数的说明 地址 表示一个内存区域的开始地址 由段值和偏移两部分组成 之间用冒号隔开 段值可省 端口地址 端口地址使用于输入输出命令 端口地址是一个2位16进制数 范围 用于指定内存区域 缓冲区 有两种表示方式 起始地址结束地址 如 CS 100110用起始地址和长度表示 长度必须以字母L开始 如 CS 100L10数值 一般表示命令重复的次数 最多可以是4位16进制数 字节值 表示输出到端口的值 最多可以是2位16进制数 字节值表 表示要替换或查找地若干个以字节为单位的值 各值间由空格等间隔分隔 驱动器号 表示要读写扇区所在的驱动器 0代表A驱动器 1代表B驱动器 依次类推 扇区号 表示dos逻辑扇区号 最多可以是3位16进制数 利用debug调试程序 首先装载被调试程序使用命令查看寄存器或内存区域等程序状态信息修改内存区域的值 运行程序 单步运行 断点运行等 查看程序代码列表 实验步骤 debughello exe装载hello exe利用命令 R显示各寄存器的内容和下一条要执行的指令 请查看各寄存器的当前值 实验步骤 利用反汇编命令u可把内存单元的内容作为机器指令 用助记符的形式显示出来 U未指定范围的u命令 从当时CS IP所指处开始 或者紧接着上次反汇编结束地址处开始反汇编 反汇编所制定的地址是很重要的 一般应是在一条有效指令的开始处 实验步骤 利用跟踪执行命令T和P可跟踪执行一条或几条指令 T2 P2 实验步骤 利用显示内存单元命令D可显示低端1M范围内的任意内存单元的内容 我们用D命令来查看数据段内存单元的内容 问题 如何查找数据段的地址 DDS 00L30命令显示出的信息格式 左边 内存单元地址 中间 字节值右边 字节值作为ASCII码所对应的符号 对于非ASCII码 或者非显示符号 用点或者空格表示 实验步骤 利用修改内存单元的命令E修改输出信息 把数据段中的 howdoyoudo 改为 howareyou eds 0 howareyou g 00000c查看程序输出的字符串信息 这是因为9h号dos功能调用显示字符串信息以符号 结尾的缘故 实验步骤 利用执行命令G可以设置断点执行被调试程序 G 00000c 实验步骤 查看数据段内存单元中的字符串信息 D0L20R命令查看并指定的修改寄存器内容 R设置标志寄存器的某个标记位 A命令修改代码段中内存单元中的汇编指令行 一 建立工作环境 所使用的工具命令行形式开发编辑器 记事本notepad edit等 Masm 编译器 用于把源程序转换成目标代码 Link 连接器 把目标代码连接成可执行文件 Debug 程序调试器 集成开发工具Masmforwindowsmasm32 MASM版本号 那么MASM ML 编译器的版本到底有哪些呢 教学上常用的版本是5 0版的 之前还有个4 0版 5 0版之后有个5 1版本 之后 从6 0版开始MASM就改名ML了 因为它把编译和连接组合在一起了 而且6 0版还对汇编语言进行了大幅改造 使之支持高级语言的很多特性 6 0版之后常看到的就是6 11 6 13 6 14MASM32 V8 0和V9 0 就是包含有ML6 14版 而不是ML8 0版 6 14之后就是6 15但不常见 但Microsoft从6 15版开始好象就不再单独发布MASM的开发工具包了 以后的ML还有7 0 7 1版 最新的是ML8 0版 但它们都只包含在VisualStudio Net和VisualStudio2005里面 而且如果你安装了VisualStudio2005的64位开发环境 你将得到一个MASMforx64 ml64 exe 支持Intel和AMD的64位CPU MASM版本号 Masm历史 版本演进 MASMVersion3 0InMASMversion3 0theassemblerisMASM EXE MASM EXE77 362bytes11 21 1984MicrosoftMACROAssemblerVersion3 00 C CopyrightMicrosoftCorp1981 1983 1984 MASM版本号 MASM4 00这是最先广泛使用的一个MASM版本 适用于DOS下的汇编编程 它很精巧 但使用起来不是很智能化 需要用户自己一板一眼地写出所有的东西 很多教科书上讲的8086汇编语法都是针对这个版本的 MASMVersion5 0InMASMversion5 0theassemblerisMASM EXE MASM EXE103 175bytes7 31 1987Microsoft R MacroAssemblerVersion5 00Copyright C MicrosoftCorp1981 1985 1987 Allrightsreserved MASM5 00比4 00在速度上快了很多 并将段定义的伪指令简化为类似 code与 data之类的定义方式 同时增加了对80386处理器指令的支持 对4 00版本的兼容性很好 MASM版本号 MASM5 10对程序员来说 这个版本最大的进步是增加了对 标号的支持 这样 程序员可以不再为标号的起名花掉很多时间 另外 MASM5 10增加了对OS 21 x的支持 MASMVersion5 1InMASMversion5 1theassemblerisMASM EXE MASM EXE110 703bytes2 1 1988Microsoft R MacroAssemblerVersion5 10Copyright C MicrosoftCorp1981 1988 Allrightsreserved MASM5 10B1989年推出 比上一个版本更稳定 更快 它是传统的DOS汇编编译器中最完善的版本 MASM版本号 MASMVersion6 0InMASMversion6 0theassemblerisML EXE MASM EXEisacompatibilitydriverforusersofearlierversionsofMASM MASM EXE21 025bytes4 2 1991Microsoft R MASMCompatibilityDriverCopyright C MicrosoftCorp1991 Allrightsreserved ML EXE244 690bytes4 3 1991Microsoft R MacroAssemblerVersion6 00Copyright C MicrosoftCorp1981 1991 Allrightsreserved 1992年发布 有了很多的改进 编译器可以使用扩展内存 这样可以编译更大的文件 可执行文件名相应从Masm exe改为Ml exe 从这个版本开始可以在命令行上用 asm同时编译多个源文件 源程序中数据结构的使用和命令行参数的语法也更像C的风格 MASM版本号 支援flat与386以上CPU保护模式 整合PWB Programmer sWorkBench 开发环境 这软件在同时期的QuickBASIC也找得到 支援DOSExtender 内建DOS 16M 开始支援OS 2与WinAPI 简易指令加入流程控制叙述 如 IF While Exit 等 强化对外部函式库的支援命令 如proto与invoke等指令 其中最核心的是将proc指令包装成符合高阶语言风格 支援C与Pascal风格 的形式 且invoke指令重新包装call与push pop指令 可以更直观 高阶地运用函式 这对呼叫高阶语言写成的函式 特别是繁复的WinAPI非常重要 masm与link整合为ML MASM版本号 MASM6 00A未发售的版本MASM6 00B最后一个支持OS 2的MASM版本 修正了上一版本中的一些错误 MASM6 10修正了一些错误 同时增加了 Sc选项 可以在产生的list文件中列出每条指令使用的时钟周期数 MASM6 10A1992年发布 修正了一些内存管理方面的问题
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 三河市2025河北廊坊三河市公开招聘事业单位工作人员50人笔试历年参考题库附带答案详解
- 2025重庆新华出版集团招聘编辑风控审计等岗位12人笔试参考题库附带答案详解
- 2025浙江绍兴滨海新区国有资本投资运营集团有限公司编外人员(劳务派遣)招聘2人笔试参考题库附带答案详解
- 卸车司机安全培训课件
- 2025江苏连云港市金灌投资发展集团有限公司灌南城市发展集团有限公司等招聘34人笔试参考题库附带答案详解
- 2025年阜阳阜南县清净水务有限公司招聘14人笔试参考题库附带答案详解
- 2025年福建武夷交通运输股份有限公司招聘10人笔试参考题库附带答案详解
- 2025年度吉林长春市轨道交通集团有限公司校园招聘535人笔试参考题库附带答案详解
- 2025年4月吉林省高速公路集团试验检测有限公司社会公开招聘9人笔试参考题库附带答案详解
- 2025届湖北联投校园招聘扬帆起航笔试参考题库附带答案详解
- ISO 22000-2018食品质量管理体系-食品链中各类组织的要求(2023-雷泽佳译)
- 卡巴斯基应急响应指南
- 理财规划大赛优秀作品范例(一)
- 2023年四川能投筠连电力招聘笔试参考题库附带答案详解
- 护理管理组织结构与设计
- 静配中心清洁消毒考核试题
- 一级烟草专卖管理师理论考试题库(含答案)
- 小学数学《分数除法》50道应用题包含答案
- 碳捕集、利用与封存技术课件
- 化工试生产总结报告
- 复句与单句的辨析课件
评论
0/150
提交评论