第十一章 汇编语言程序的开发 第一节 汇编语言程序的开发过程 .ASM .EXE .MAP .LST .CRF .OBJ 开始 编辑程序

Slides:



Advertisements
Similar presentations
3.1 表的建立 教学内容 :一、建立表结构 ; 二、输入数据. 重点 :建立表 难点 :建立表.
Advertisements

Assembly Language Programming 湛江师范学院 汇编语言程序设计实验课件 主讲教师:王 晓 晔.
广东外语外贸大学 信息科学技术学院 《汇编语言与计算机组成原理》 第一篇 汇编语言 调试程序DEBUG.
Oracle数据库 Oracle 子程序.
C语言实验 第一课 标题:学号+姓名.
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
在PHP和MYSQL中实现完美的中文显示
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年10月30日.
微机原理与接口技术 第2章 8086系统结构 朱华贵 2015年09月17日.
汇编语言程序设计 吴 向 军 中山大学计算机科学系
第八章 菜单设计 §8.1 Visual FoxPro 系统菜单 §8.2 为自己的程序添加菜单 §8.3 创建快捷菜单.
微机原理及应用 主讲:谢维成 西华大学 电气信息学院 1.
保留版权(C) 秦晓梅 汇编语言程序设计 实验教程 保留版权(C) 秦晓梅
SVN服务器的搭建(Windows) 柳峰
走进编程 程序的顺序结构(二).
辅导课程六.
网络常用常用命令 课件制作人:谢希仁.
DM81X 视频采集处理 ——简单采集显示例程讲解 广州创龙电子科技有限公司
汇编语言程序设计课程设计 第一次实验 DEBUG基本命令与数据传输指令
Zhao4zhong1 (赵中) C语言指针与汇编语言地址.
Zhao4zhong1 (赵中) C语言指针与汇编语言地址.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第十章 IDL访问数据库 10.1 数据库与数据库访问 1、数据库 数据库中数据的组织由低到高分为四级:字段、记录、表、数据库四种。
1.2 MATLAB变量表达式与数据格式 MATLAB变量与表达式 MATLAB的数据显示格式
《微机系统与接口》 《微机实验》课程资料 系网站:automation.seu.edu.cn 课程下载.
逆向工程-汇编语言
CPU结构和功能.
第四章 附件 (应用程序软件包).
Gzip编译及调试 曹益华
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
SOA – Experiment 2: Query Classification Web Service
第4章 汇编语言程序格式  汇编程序功能  伪操作  汇编语言程序格式  汇编语言程序的上机过程.
第7章 在C/C++中使用汇编 罗文坚 中国科大 计算机学院
第二章 登录UNIX操作系统.
C语言程序设计 主讲教师:陆幼利.
工业机器人技术基础及应用 主讲人:顾老师
可愛的鍬形蟲 五年四班2.
第1章 c++概述 1.1 C++语言的简史及特点 1.2 简单的C++程序 1.3 C++语言的基本组成
姚金宇 MIT SCHEME 使用说明 姚金宇
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月13日.
Logo语言. Logo语言 视图窗口 小海龟 ?: 提示符 l: 光标 命令窗口.
工业机器人知识要点解析 (ABB机器人) 主讲人:王老师
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
项目二:HTML语言基础.
Web安全基础教程
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
第4章 Excel电子表格制作软件 4.4 函数(一).
实验三 16位算术逻辑运算实验 不带进位控制的算术运算 置AR=1: 设置开关CN 1 不带进位 0 带进位运算;
本节内容 内存复制指令 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
iSIGHT 基本培训 使用 Excel的栅栏问题
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
LOGIX500软件入门 西安华光信息技术有限公司 2008年7月11日.
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Python 环境搭建 基于Anaconda和VSCode.
工业机器人知识要点解析 (ABB机器人) 主讲人:王老师
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
本节内容 导出表 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
数据表示 第 2 讲.
第8章 创建与使用图块 将一个或多个单一的实体对象整合为一个对象,这个对象就是图块。图块中的各实体可以具有各自的图层、线性、颜色等特征。在应用时,图块作为一个独立的、完整的对象进行操作,可以根据需要按一定比例和角度将图块插入到需要的位置。 2019/6/30.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年10月30日.
本节内容 进程 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第四章 UNIX文件系统.
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
第4章 汇编语言程序格式  汇编程序功能  伪操作  汇编语言程序格式  汇编语言程序的上机过程
顺序结构程序设计 ——关于“字符串”和数值.
RefWorks使用指南 归档、管理个人参考文献.
实验六、COM类型病毒分析实验 实验开发教师: 刘乃琦 谌黔燕.
跟我一起学编程系列课程: 第一篇汇编语言 16位汇编.
Presentation transcript:

第十一章 汇编语言程序的开发 第一节 汇编语言程序的开发过程 .ASM .EXE .MAP .LST .CRF .OBJ 开始 编辑程序 第十一章 汇编语言程序的开发 第一节 汇编语言程序的开发过程 开始 编辑程序 源程序 文件 宏汇编程序MASM 语法有错? 目标程序 连接程序LINK 可执行 调试程序DEBUG 程序正确? 结束 Y N .OBJ .ASM .EXE .MAP .LST .CRF

第二节 编辑 编辑就是将源程序输入到计算机中的过程。 编辑工具软件很多,只要能够以ASCII码格式保存文件的编辑程序都可以使用。常用的编辑程序有:写字板、记事本、 WORD等等。 注意:在很多的编辑程序中,当文件编辑输入完成后,可以用多种存储格式保存。但对于汇编语言源程序,必须使用ASCII格式,即纯文本格式进行 存储。

第三节 汇编 汇编就是把用汇编语言编写的源程序翻译成机器语言的目标程序。 MASM称为宏汇编程序,它包含有宏功能的处理,是一个常用的汇编程序。 汇编语言源程序经MASM汇编后,可以产生3个文件:目标文件(.OBJ)、列表文件(.LST)、交叉引用文件(.CRF)。

有两种调用MASM对汇编语言源程序进行汇编的方法: 1、提示应答方式 在DOS操作系统提示符下键入MASM〈回车〉,或直接从WINDOWS操作系统中,双击MASM.exe文件。 系统在显示版本号后,接着依次显示提示信息,并等待用户的输入。按照提示信息,键入相应的文件名,并按回车。如果默认系统给定的选择,则只需要按回车键。 Microsoft (R) Macro Assembler Version 5.00 Copyright (C) Microsoft Corp.1981-1985,1987,Allrights reserved Source filename [.ASM]: EXAMPLE<回车> Object filename [EXAMPLE]:<回车> Source listing [NUL.LST]: <回车> Cross-reference [NUL.CRF]:<回车> 例如:

如果在系统显示的提示信息后,输入了分号“;”,则表示后面的所有提示行都确认使用默认选择,并不再显示。 Source filename [.ASM]: EXAMPLE;<回车> 例如: 在结束提示应答后,MASM就对源程序进行扫描和语法检查。在没有严重语法错误的情况下,将生成.OBJ文件。若有语法错误将显示错误信息。

命令行方式是指在DOS状态下,将执行宏汇编MASM程序时所需要的所有文件名按照指定的格式,输入在一个命令行中。常用的命令格式为: 2. 命令行方式 命令行方式是指在DOS状态下,将执行宏汇编MASM程序时所需要的所有文件名按照指定的格式,输入在一个命令行中。常用的命令格式为: MASM <Sourcefile> [, [OBJfile] [,LSTfile] [,CRFfile ] ] ] [ ; ]<回车> (1)命令行格式中文件名的顺序应严格与命令格式指定的顺序一致。 (2)如果希望生成的目标文件、列表文件或交叉引用文件与源程序文件同名(扩展名不同),则可以不给出文件名,只需要在对应的位置输入逗号。 (3)如果在指定某文件后,直接键入分号“;”,则表明命令结束,其后都选定默认文件名。

例如: C:\MASM\> MASM EXAMPLE, , , <回车> 它表示对源程序EXAMPLE.ASM进行汇编,并按照默认约定生成目标文件EXAMPLE.OBJ,列表文件EXMAPLE.LST 和交叉引用文件EXAMPLE.CRF。 C:\MASM\> MASM EXAMPLE, ,<回车> 它表示对源程序EXAMPLE.ASM进行汇编,并按照默认约定生成目标文件EXAMPLE.OBJ,列表文件EXMAPLE.LST,但不生成交叉引用文件。

第四节 连接 由汇编程序生成的目标程序是不能直接运行的,必须将目标文件进行连接后,生成一个可执行文件(.EXE),才能运行该程序。 第四节 连接 由汇编程序生成的目标程序是不能直接运行的,必须将目标文件进行连接后,生成一个可执行文件(.EXE),才能运行该程序。 连接程序LINK.EXE能够把一个或多个独立的目标文件和定义在库文件(.LIB)中的子程序与变量,连接装配成一个可重定位的可执行文件(.EXE) 在连接过程中,除了生成可执行文件(.EXE)外,还可以根据用户的指定,生成相应的内存映像文件(.MAP)

一、LINK的操作 LINK的使用与MASM类似,也有提示应答方式和命令行两种使用方式。 1、提示应答方式 在DOS操作系统提示符下键入LINK〈回车〉,或直接从WINDOWS操作系统中,双击LINK.EXE文件。 系统将依次显示目标模块文件名、可执行文件名、映像文件名和库文件名等提示信息。 C:\MASM>LINK Microsoft (R) Corp. Overlay Linker Version 3.60 Copyright (C) Microsoft Corp. 1983-1987,All rights reserved Object Modules [.OBJ]:EXAMPLE<回车> Run file [EXAMPLE.EXE]: <回车> List file [NUL.MAP]: <回车> Libraries [.LIB]: <回车>

对于多个目标文件的连接,输入文件名时,文件名之间使用加号“+”。例如: Object Modules [.OBJ]:file1+file2+file3<回车> 2、命令行方式 LINK的命令行方式格式为: LINK OBJfiles [, EXEfile] [, [MAPfile] [,[Libraries] ] ] ] [ Options][;] 例如:C:\MASM> LINK EXAMPLE;<回车> 在连接中,可能因某种原因而导致错误的发生。这时应根据错误信息显示,确定发生错误的原因,并进行修改。然后再重新汇编、连接,直到正确第完成连接操作。

二、内存映像文件 内存映像文件是在连接目标文件时,如果指定了相应的选择项,而生成的。它的扩展名为MAP。 内存映像文件中包含了程序中定义的段的起始地址、结束地址、长度、段名和类别名。 下面是一个示例: Start Stop Length Name Class 00000H 00011H 00012H DATA DATA 00020H 0005FH 00040H STACK STACK 00060H 00077H 00018H CODE CODE 在调试较大的程序时,使用MAP文件中的相关信息将会给调试工作带来很大的帮助。

第五节 调试与运行 调试的主要任务就是检查和修改程序中的错误。 程序中的错误可分为两类:语法错误和逻辑错误 语法错误在程序的汇编和连接过程中都会被发现。而程序的逻辑错误在这两个过程中是发现不了的。需要使用一定的调试工具软件,进行仔细认真的调试才能发现。 汇编语言程序调试中常用的一个工具软件是DEBUG。下面介绍DEBUG软件的使用基础。

一、DEBUG的启动与退出 DEBUG的启动方法有两种: 1. 在DOS状态下输入DEBUG命令 进入DEBUG状态后,系统的提示符将变为“-”。这时用户可以输入各种DEBUG命令。 2.在DOS状态下输入DEBUG命令的同时,指定要调试的文件名。 例如:C\>DEBUG EXAMPLE.EXE<回车> 然后在DEBUG状态下可以对装载的文件进行各种操作。

二、DEBUG常用命令 一个DEBUG命令为一个字母,其后空一格,可以再跟一些参数。DEBUG中的数字用的是十六进制,不必加H 1.装载用户程序 要对程序进行调试,首先需要将程序文件装入内存。在进入DEBUG状态后,装载程序方法是,先使用N命令指定文件名,再用L命令将指定的文件装入内存。

格式:N 文件名 文件名需指定扩展名。如果需要还应指明盘符和路径。 格式:L 将由N命令指定的文件装入到内存中。 例如: -N TEST.EXE -L

2. 退出DEBUG 格式:q 退出DEBUG

DEBUG命令中的参数多数为地址或者地址范围. 地址书写格式为: [段基值]:偏移地址 地址范围的书写格式为: [段基值]:起始偏移地址 终止偏移地址 [段基值]:起始偏移地址 L长度 段基值可用寄存器名或者十六进制的数。段基缺省为DS 3. D(Dump)命令 格式:D [地址] 格式:D 地址范围 功能:显示指定地址范围内的内存单元 的内容。

例如: -D -D 200 2FF -D 200 L 100 -D DS:200 -D 0FDAB:200

3. R(Register)命令 格式:R[寄存器名] 功能:显示CPU中的一个或所有16位寄存器的内容。标志寄存器的内容为各标志位的状态(置位/复位),每个状态用两个字符来表示。 标志位 置 位(1) 复 位(0) 溢出位OF OV NV 方向位DF DN UP 中断位IF EI DI 符号位SF NG PL 零值位ZF ZR NZ 辅助进位AF AC NA 奇偶位PF PE PO 进位位CF CY NC

4. A(Assemble)命令 格式:A [地址] 功能:将从键盘直接输入的汇编指令翻译成目标代码,并存放在内存单元中。 参数地址是用来存放目标代码的起始地址。 利用此命令可以方便地用DEBUG来调试简单的指令序列。 5. U(Unassemble)命令 格式:U [地址]/[地址范围] 功能:将指定内存中的目标代码反汇编成8086/8088的汇编指令格式在屏幕上显示出来。

6. G(Go)命令 格式:G [=起始地址] [断点地址1,断点地址2,…] 功能:从起始地址执行程序,直到程序结束或遇到断点为止。 如果不指定起始地址,则从CS:IP处开始执行。如果执行到结束,则显示“Program Terminated normally”。如果遇到断点,则停止执行,并显示寄存器状态。

7. 单步执行命令T和P 这两个命令是逐条跟踪指令的运行。它们的区别是T命令对于子程序调用指令的执行,将转入相应的子程序内部,而P命令则将整个子程序作为一条指令来执行。 格式:T [=地址] [指令条数] 格式:P [=地址] [指令条数]

8. 十六进制算术运算命令H 格式:H 值1 值2 显示十六进制数值1与值2的和与差。

9. 修改内存单元命令E 格式:E 地址,内容表 内容表可以是以逗号或空格分割的两位十六进制数,也可以是用引号括起来的字符串,或是二者的组合 格式:E 地址 再修改数据时可用下列的键进行操作: 键入空格 修改后一个字节单元的内容 键入- 另起一行,修改前一个字节单元的内容 回车结束修改

10. 填充内存命令F 格式:F 地址范围,内容表 将内容表的字符逐个填入指定的地址范围,内容表中的内容用完后,重复使用。 内容表可以是以逗号或空格分割的两位十六进制数,也可以是用引号括起来的字符串,或是二者的组合