汇编语言讲义第四章 汇编语言程序格式1_第1页
汇编语言讲义第四章 汇编语言程序格式1_第2页
汇编语言讲义第四章 汇编语言程序格式1_第3页
汇编语言讲义第四章 汇编语言程序格式1_第4页
汇编语言讲义第四章 汇编语言程序格式1_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、汇编语言程序设计汇编语言程序设计 教学重点教学重点 第第3章学习了章学习了8086硬指令,硬指令, 第第4章介绍章介绍MASM基本的基本的 伪指令(伪操作)。第伪指令(伪操作)。第4 章重点掌握:章重点掌握: 程序的格式、开发方法程序的格式、开发方法 参数的表达、变量的定参数的表达、变量的定 义义 变量和标号的属性变量和标号的属性 硬指令和伪指令硬指令和伪指令 使使CPU产生动作、并在程序执行时才处理的语产生动作、并在程序执行时才处理的语 句,就是第句,就是第3章学习的处理器指令。章学习的处理器指令。 (伪操作:(伪操作:Directive)不产生不产生CPU动作、在程动作、在程 序执行前由汇

2、编程序处理的说明性语句,例如,处理器选序执行前由汇编程序处理的说明性语句,例如,处理器选 择、定义程序模式、定义数据、分配存储区、指示程序结择、定义程序模式、定义数据、分配存储区、指示程序结 束等等。束等等。 伪指令与具体的处理器类型无关,但与汇编程序的版本有伪指令与具体的处理器类型无关,但与汇编程序的版本有 关。关。 第四章第四章 汇编语言程序格式汇编语言程序格式 4.1汇编语言程序的开发汇编语言程序的开发 4.2参数、变量、标号及相关伪操作参数、变量、标号及相关伪操作 4.3程序段的定义的相关伪操作程序段的定义的相关伪操作 退出退出 4.1 汇编语言程序的开发汇编语言程序的开发 4.1.1

3、 汇编程序功能汇编程序功能 4.1.2 汇编语言程序的语句格式汇编语言程序的语句格式 4.1.3 汇编语言程序的程序格式汇编语言程序的程序格式 4.1.4 汇编语言程序的上机过程汇编语言程序的上机过程 目目 录录 退出退出 4.1.1 汇编程序功能汇编程序功能 汇编语言程序的建立及汇编过程汇编语言程序的建立及汇编过程 汇编程序的主要功能汇编程序的主要功能 常用的汇编程序常用的汇编程序 目目 录录 退出退出 (1)汇编语言程序的建立及汇编过)汇编语言程序的建立及汇编过 程程 汇编语言程序的建立及汇编过程,如图汇编语言程序的建立及汇编过程,如图4.1所示。所示。 在计算机上运行汇编语言程序的步骤是

4、:在计算机上运行汇编语言程序的步骤是: 用用编辑程序编辑程序建立建立ASM源文件;源文件; 用用MASM程序程序把把ASM文件转换成文件转换成OBJ文件;文件; 用用LINK程序程序把把OBJ文件转换成文件转换成EXE文件;文件; 用用DOS命令命令直接键入文件名就可执行该程序。直接键入文件名就可执行该程序。 目目 录录 退出退出 (2)汇编程序的主要功能)汇编程序的主要功能 检查源程序。检查源程序。 测出源程序中的语法错误,并给出出错信息。测出源程序中的语法错误,并给出出错信息。 产生源程序的目标程序,并可给出列表文件(同时列出汇产生源程序的目标程序,并可给出列表文件(同时列出汇 编语言和机

5、器语言的文件,称为编语言和机器语言的文件,称为LST文件)。文件)。 展开宏指令。展开宏指令。 目目 录录 退出退出 (3)常用的汇编程序)常用的汇编程序 Microsoft公司推出的宏汇编程序公司推出的宏汇编程序MASM(Macro Assembler);); Borland公司推出的公司推出的TASM(Turbo Assembler)。)。 本课程采用本课程采用MASM和和EMU8086进行程序调试进行程序调试 退出退出 目目 录录 图图4.1 汇编语言程序的建立及汇编过汇编语言程序的建立及汇编过 程程 编辑程序编辑程序汇编程序汇编程序 连接程序连接程序 MASM LINK PROGR.A

6、SM 文件文件 PROGR.OBJ 文件文件 PROGR.EXE 文件文件 返回返回 4.1.2 汇编语言程序的语句格式汇编语言程序的语句格式 汇编语言语句格式:汇编语言语句格式: nameoperation operand ; comment 执行性语句执行性语句由硬指令构成的语句,它通常对应一条机由硬指令构成的语句,它通常对应一条机 器指令,出现在程序的代码段中:器指令,出现在程序的代码段中: 标号标号: 硬指令助记符硬指令助记符 操作数,操作数操作数,操作数;注释;注释 说明性语句说明性语句由伪指令构成的语句,它通常指示汇编程由伪指令构成的语句,它通常指示汇编程 序如何汇编源程序:序如何

7、汇编源程序: 名字名字 伪指令助记符伪指令助记符 参数,参数参数,参数,;注释;注释 退出退出 目目 录录 1. 名字(名字(name)项)项 源程序中用下列字符来表示名字项(源程序中用下列字符来表示名字项(name): 字母字母AZ 数字数字09 专用字符专用字符?,?, , , ,$ 注意:注意: 名字不能以数字开头。名字不能以数字开头。 名字中如果用到名字中如果用到 ,则必须是第一个字符。,则必须是第一个字符。 汇编程序只识别名字的前汇编程序只识别名字的前31个字符。个字符。 默认情况下,汇编程序不区别标识符中的字母大小写。默认情况下,汇编程序不区别标识符中的字母大小写。 退出退出 目目

8、 录录 标号、名字与标识符标号、名字与标识符 name可以是标号或变量。它们都用来表示本语句的符号可以是标号或变量。它们都用来表示本语句的符号 地址,都是可有可无的,只有当需要用到符号地址来访问地址,都是可有可无的,只有当需要用到符号地址来访问 该语句时,它才需要出现。该语句时,它才需要出现。 标号:标号: 在代码段中定义,是反映硬指令位置(逻辑地址)的在代码段中定义,是反映硬指令位置(逻辑地址)的 标识符,后跟一个冒号分隔。标识符,后跟一个冒号分隔。 经常在转移指令或经常在转移指令或CALL指令的操作数字段出现,用以指令的操作数字段出现,用以 表示转向地址。表示转向地址。 退出退出 目目 录

9、录 标号、名字与标识符标号、名字与标识符 名字:名字: 是反映伪指令位置(逻辑地址)和属性的标识符,后是反映伪指令位置(逻辑地址)和属性的标识符,后 跟空格或制表符分隔,没有冒号。跟空格或制表符分隔,没有冒号。 可用可用LABEL或或EQU伪操作来定义。伪操作来定义。 还可以作为过程名定义(第六章中介绍)。还可以作为过程名定义(第六章中介绍)。 标识符标识符(Identifier):): 每个标识符的定义是唯一的,还不能是汇编语言采用每个标识符的定义是唯一的,还不能是汇编语言采用 的的保留字保留字。 退出退出 目目 录录 2. 保留字保留字 保留字(保留字(Reserved Word)是汇编程

10、序已经利用的标识符,)是汇编程序已经利用的标识符, 主要有:主要有: 硬指令助记符硬指令助记符例如:例如:MOV、ADD 伪指令助记符伪指令助记符例如:例如:DB、EQU 操作符操作符例如:例如:OFFSET、PTR 寄存器名寄存器名例如:例如:AX、CS 预定义符号预定义符号例如:例如:data 退出退出 目目 录录 3. 指令助记符指令助记符 硬指令助记符硬指令助记符可以是任何一条处理器指令,也可以是一条可以是任何一条处理器指令,也可以是一条 宏指令宏指令 伪指令助记符伪指令助记符将在本章和下章学习。将在本章和下章学习。 前一章引入的定义字节数据和字符串的前一章引入的定义字节数据和字符串的

11、DB就是伪指令。就是伪指令。 退出退出 目目 录录 4. 操作数与参数操作数与参数 处理器指令的处理器指令的操作数操作数可以是立即数、寄存器和存储单元。可以是立即数、寄存器和存储单元。 伪指令的伪指令的参数参数可以是常数、变量名、表达式等,可以有多可以是常数、变量名、表达式等,可以有多 个,参数之间用逗号分隔。个,参数之间用逗号分隔。 退出退出 目目 录录 5. 注释(注释(comment)项)项 注释(注释(comment)项:项: 用来说明程序或语句的功能。用来说明程序或语句的功能。 ;为注释的开始。;为注释的开始。 ;可以从一行的第一个字符开始,此时整行都是注释,;可以从一行的第一个字符

12、开始,此时整行都是注释, 常用来说明下面一段程序的功能。常用来说明下面一段程序的功能。 汇编程序在翻译源程序时将跳过该部分,不对它们做任何汇编程序在翻译源程序时将跳过该部分,不对它们做任何 处理。处理。 退出退出 目目 录录 6. 分隔符分隔符 语句的语句的4个组成部分要用分隔符分开。个组成部分要用分隔符分开。 标号后用冒号,注释前用分号。标号后用冒号,注释前用分号。 操作数之间和参数之间使用逗号分隔。操作数之间和参数之间使用逗号分隔。 其他部分通常采用空格或制表符。其他部分通常采用空格或制表符。 多个空格和与一个制表符的作用相同。多个空格和与一个制表符的作用相同。 MASM支持续行符支持续行

13、符 “”。 退出退出 目目 录录 4.1.3 汇编语言程序的程序格式汇编语言程序的程序格式 完整的汇编语言源程序由完整的汇编语言源程序由段段组成。组成。 一个汇编语言源程序可以包含若干个代码段、数据段、附一个汇编语言源程序可以包含若干个代码段、数据段、附 加段或堆栈段,段与段之间的顺序可随意排列。加段或堆栈段,段与段之间的顺序可随意排列。 需独立运行的程序必须包含一个代码段,并指示程序执行需独立运行的程序必须包含一个代码段,并指示程序执行 的起始点,一个程序只有一个起始点。的起始点,一个程序只有一个起始点。 所有的可执行性语句必须位于某一个代码段内,说明性语所有的可执行性语句必须位于某一个代码

14、段内,说明性语 句可根据需要位于任一段内。句可根据需要位于任一段内。 通常,程序还需要一个堆栈段。通常,程序还需要一个堆栈段。 汇编语言源程序段定义格式有两种:汇编语言源程序段定义格式有两种: 简化段定义格式简化段定义格式从从MASM 5.0开始支持开始支持 完整段定义格式完整段定义格式MASM 5.0以前就具有以前就具有 退出退出 目目 录录 ;PROGRAM TITLE GOES HERE- ;Followed by descriptive phrases ;EQU STATEMENTS GO HERE ;* Datarea segment;define data segment ;DAT

15、A GOES HERE Datarea ends ;* Prognam segment;define code segment ;- 汇编语言源程序举例汇编语言源程序举例1 退出退出 目目 录录 Main procfar;main part of program assumecs: program , ds: datarea Start:;starting execution address ;set up stack for return push ds;save old data segment sub ax , ax;put zero in ax push ax;save it on s

16、tack ;set DS register to current data segment mov ax , datarea;datarea segment addr mov ds , ax;into DS register ;MAIN PART OF PROGRAM GOES HERE 汇编语言源程序举例汇编语言源程序举例1 首先把首先把DS的内容和的内容和0作为段地址和偏移地址作为段地址和偏移地址 入栈,以便在程序结束时用入栈,以便在程序结束时用RET指令返回指令返回 DOS,这是一种工作方式。如果在主程序,这是一种工作方式。如果在主程序 开始时没有这三条指令在堆栈段建立返回开始时没有这三

17、条指令在堆栈段建立返回 信息,则在程序结束时就不能直接用信息,则在程序结束时就不能直接用RET 返回指令,而应该用返回指令,而应该用DOS功能调用功能调用4CH: MOV AX , 4C00H INT 21H 这种方式更加普遍。这种方式更加普遍。 退出退出 目目 录录 ret;return to DOS Main endp;end of main part of program ;- Sub1procnear;define subprocedure ;SUBROUTINE GOES HERE Sub1endp;end of subprocedure ;- Prognam end;end of

18、code segment ;* end start;end of assembly 汇编语言源程序举例汇编语言源程序举例1 退出退出 目目 录录 .model small;define memory model .stack 100h;define stack segment .data;define data segment ;DATA GOES HERE .code;define code segment Main procfar Start: mov ax , data;data segment addr mov ds , ax;into DS register 汇编语言源程序举例汇编语

19、言源程序举例2 退出退出 目目 录录 ;MAIN PART OF PROGRAM GOES HERE mov ax , 4c00h int 21h;return to DOS Main endp;end of main program end start;end of assembly 汇编语言源程序举例汇编语言源程序举例2 退出退出 目目 录录 4.1.4 汇编语言程序的上机过程汇编语言程序的上机过程 建立汇编语言的工作环境建立汇编语言的工作环境 建立建立ASM文件;文件; 用用MASM程序程序产生产生OBJ文件;文件; 用用LINK程序程序产生产生EXE文件;文件; 程序的执行。程序的执行

20、。 退出退出 目目 录录 1. 建立汇编语言的工作环境建立汇编语言的工作环境 为运行汇编语言程序至少要在磁盘上建立以下文件:为运行汇编语言程序至少要在磁盘上建立以下文件: 编辑程序,如编辑程序,如EDIT.EXE 汇编程序,如汇编程序,如MASM.EXE 连接程序,如连接程序,如LINK.EXE 调试程序,如调试程序,如DEBUG.COM 必要时,还可建立如必要时,还可建立如CREF.EXE,EXE2BIN.EXE等文件。等文件。 退出退出 目目 录录 2. 建立建立ASM文件文件 用编辑程序用编辑程序EDIT在磁盘上建立如下的源程序在磁盘上建立如下的源程序 EX_MOVS.ASM。 例例4.

21、30 把把40个字母个字母a的字符串从源缓冲区传送到目的缓冲的字符串从源缓冲区传送到目的缓冲 区。区。 退出退出 目目 录录 ;PROGRAM TITLES GOES HERE-ex_movs ;* Datasegment;define data segment source_bufferdb40 dup(a) Dataends ;* Extra segment;define extra segment dest_bufferdb40 dup(?) Extra ends ;* Code segment;define code segment ;- 汇编语言源程序汇编语言源程序.ASM 退出退出

22、 目目 录录 Main procfar;main part of program assume cs: code , ds: data , es: extra Start:;starting execution address ;set up stack for return push ds;save old data segment sub ax , ax;put zero in ax push ax;save it on stack 汇编语言源汇编语言源 程序程序.ASM 退出退出 目目 录录 ;set DS register to current data segment mov ax

23、, datarea;datarea segment addr mov ds , ax;into DS register ;set ES register to current extra segment mov ax , extra;extra segment addr mov es , ax;into ES register ;MAIN PART OF PROGRAM GOES HERE 汇编语言源汇编语言源 程序程序.ASM 退出退出 目目 录录 lea si , source_buffer;put offset addr of source ;buffer in SI lea di ,

24、dest_buffer;put offset addr of dest ;buffer in DI cld;set DF flag to forward mov cx , 40;put count in CX rep movsb;move entire string ret;return to DOS Main endp;end of code segment ;- Code ends;end of code segment ;* end start;end of assembly 退出退出 目目 录录 3. 用用MASM程序产生程序产生OBJ文件文件 用汇编程序对源程序文件汇编,产生二进制的

25、目标文件(用汇编程序对源程序文件汇编,产生二进制的目标文件(.OBJ 文件),其操作与汇编程序回答如下:文件),其操作与汇编程序回答如下: Cmasm ex_movs Microsoft ( R ) Macro Assembler Version 5.00 Copyritht ( C ) Microsoft Corp 1981-1985, 1987 , All rights reserved. Object filename ex_movs , obj : Source listing NUL. LST :ex_movs Cross-reference NUL . CRF :ex_movs 5

26、1646+447778 Bytes symbol space free 0 Warning Errors 0 Severe Errors OBJ文件文件 列表文件(列表文件(.LST) 段名表和符号表段名表和符号表 文件(文件(.CRF文件)文件) 退出退出 目目 录录 例例4.30的列表文件的列表文件EX_MOVS.LST。 这个文件同时列出了源程序和机器语言程序清单,并给这个文件同时列出了源程序和机器语言程序清单,并给 出符号表,方便程序调试。出符号表,方便程序调试。 这个文件可有可无,如果不需要,则直接在这个文件可有可无,如果不需要,则直接在 NUL . LST :后敲回车;否则,可回答

27、文件名,这里是后敲回车;否则,可回答文件名,这里是ex_movs。 程序请看教材程序请看教材P148-151。 退出退出 目目 录录 例例4.30 的交叉引用表的交叉引用表EX_MOVS.REF文件。文件。 汇编程序提供的第三个文件是汇编程序提供的第三个文件是CRF文件,用来产生交叉引文件,用来产生交叉引 用表用表REF。 交叉引用表给出了用户定义的所有符号,对于每个符号列交叉引用表给出了用户定义的所有符号,对于每个符号列 出了其定义所在行号(加上出了其定义所在行号(加上#)及引用的行号。)及引用的行号。 CRF文件,为大程序的修改提供方便,而一般较小的程序文件,为大程序的修改提供方便,而一般

28、较小的程序 则可不使用,所以可直接在则可不使用,所以可直接在 NUL.REF:后直接敲回车;后直接敲回车; 如果希望建立交叉引用表,则应用文件名来回答,这里是如果希望建立交叉引用表,则应用文件名来回答,这里是 ex_movs,这样就产生了,这样就产生了EX_MOVS.CRF文件。文件。 为了建立交叉引用表,必须调用为了建立交叉引用表,必须调用CREF程序,所以如果需程序,所以如果需 要就应该从系统中把要就应该从系统中把CREF.EXE文件文件COPY到你的磁盘上。到你的磁盘上。 具体做法和程序,请看教材具体做法和程序,请看教材P151-152。 退出退出 目目 录录 4. 用用LINK程序产生

29、程序产生EXE文件文件 OBJ文件不是可执行文件,还需要用连接程序文件不是可执行文件,还需要用连接程序LINK把把OBJ文件文件 转换为可执行的转换为可执行的EXE文件。文件。 如果一个程序是由多个模块组成时,也要通过连接程序如果一个程序是由多个模块组成时,也要通过连接程序LINK把把 它们连接在一起,操作方法及机器回答如下:它们连接在一起,操作方法及机器回答如下: Clink ex_movs Microsoft ( R ) Macro Assembler Version 5.00 Copyritht ( C ) Microsoft Corp 1981-1985, 1987 , All rights reserved. Run File EX_MOVS.EXE : List File NUL. MAP :ex_movs Libraries. LIB: LINK:Warning L4021:no

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论