收藏 分销(赏)

汇编语言与源程序结构.ppt

上传人:1587****927 文档编号:1563206 上传时间:2024-05-03 格式:PPT 页数:36 大小:334KB 下载积分:12 金币
下载 相关 举报
汇编语言与源程序结构.ppt_第1页
第1页 / 共36页
汇编语言与源程序结构.ppt_第2页
第2页 / 共36页


点击查看更多>>
资源描述
汇编语言汇编语言程序设计程序设计 第第4章章 汇编语言与源程序言与源程序结构构 汇编语言源程序与汇编程序 汇编语言语句种类及其格式 汇编语言数据与运算符 伪指令 源程序结构模式 1.汇编语言汇编语言程序设计程序设计 4.1 4.1 汇编语言源程序与言源程序与汇编程序程序 1 1、汇编语言源程序言源程序汇编语言言源源程程序序是是用用汇编语言言编写写的的程程序序,简称称汇编语言言程程序序。汇编语言言程程序序通通过编辑程程序序在在计算算机机中中建建立立汇编语言源程序文件(言源程序文件(ASMASM文件)。文件)。2 2、汇编程序程序将将汇编语言言源源程程序序编译成成目目标程程序序的的加加工工程程序序称称为汇编程序。程序。这一加工一加工过程称程称为汇编。汇编程程序序的的作作用用就就是是把把源源程程序序文文件件(ASMASM文文件件)转换成成用二用二进制代制代码表示的目表示的目标程序文件(程序文件(OBJOBJ文件)。文件)。汇编程序的主要功能有:程序的主要功能有:检查源程序。源程序。测出源程序出源程序语法法错误,并,并给出出错误。产生目生目标程序,并可程序,并可给出列表文件出列表文件 展开宏指令。展开宏指令。返回返回2.汇编语言汇编语言程序设计程序设计 4.2 4.2 汇编语言言语句种句种类及其格式及其格式 语句句是是汇编语言言源源程程序序的的基基本本组成成单位位。一一个个汇编语言言源源程程序序中中有有3 3种种基基本本语句句:指指令令语句句、伪指指令令语句句和和宏宏指指令令语句句。前前两两种种是是最最常常见、最最基基本本的的语句句。指指令令语句句和和伪指指令令语句句不不仅在在程程序序中中的的功功能能不不同同,而而且且实现其其功功能能的的方方法法和和时间也是不同的。也是不同的。1 1、指令、指令语句句 指指令令语句句就就是是计算算机机中中指指令令系系统的的各各条条指指令令,每每条条指指令令语句句在在汇编时都都产生生一一个个供供CPUCPU执行行的的机机器器目目标代代码,所所以以这种种语句又称句又称为可可执行行语句。句。计算算机机中中每每条条指指令令语句句表表示示一一种种基基本本功功能能,这些些基基本本功功能能是是在在程程序序运运行行期期间由由计算算机机硬硬件件来来实现的的。一一条条指指令令语句句由四个字段由四个字段组成,其一般格式如下:成,其一般格式如下:标号:号:指令助指令助记符符 操作数操作数 ;注;注释 3.汇编语言汇编语言程序设计程序设计 (1 1)标号号标号号是是指指令令语句句的的符符号号地地址址,它它代代表表指指令令代代码存存放放地地址址的第一个字的第一个字节地址。地址。标号号是是指指令令语句句的的可可选项,通通常常在在一一个个程程序序段段或或子子程程序序的的入入口口指指令令语句句选用用标号号,当当程程序序需需要要转入入这个个程程序序段段或或调用用子子程程序序时,就就可可直直接接引引用用这标号号。标号号通通常常在在代代码段段中中定定义,后后面面跟跟冒冒号号“:”,它它经常常在在转移移指指令令或或CALLCALL指指令中引用,用以表示令中引用,用以表示转向地址,引用向地址,引用时标号后不跟冒号。号后不跟冒号。(2 2)指令助)指令助记符符指指令令助助记符符为指指令令语句句的的核核心心,是是不不可可省省略略的的主主要要部部分分,如如MOVMOV、ADDADD、XORXOR、RCLRCL等等等等,它它表表示示指指令令语句句要要求求CPUCPU完完成成的具体操作。的具体操作。4.汇编语言汇编语言程序设计程序设计(3 3)操作数操作数 操操作作数数表表示示指指令令助助记符符的的操操作作对象象,不不同同的的指指令令所所带的的操操作作数数不不同同,有有一一个个操操作作数数的的指指令令(如如INCINC、NOTNOT等等),有有二二个个操操作作数数的的指指令令(如如ADDADD、XORXOR等等),无无操操作作数数指指令令(如如CLCCLC、STDSTD等)。等)。若若需需要要操操作作数数,则每每一一个个操操作作数数要要依依据据寻址址方方式式来来表表示示。操作数可以是常数、寄存器、操作数可以是常数、寄存器、标号、号、变量和表达式。量和表达式。(4)(4)注注释 注注释是是用用来来说明明一一段段程程序序或或一一条条或或多多条条指指令令的的功功能能,它它是是可可选项,注注释均均以以分分号号“;”开开始始,它它可可占占一一行行或或多多行行。注注释还通通常常用用于于调试程程序序。注注释是是语句句的的非非执行行部部分分,因因此此,它它不不出出现在在机机器器目目标代代码中中,也也不不影影响响指指令令语句句的的功功能。能。5.汇编语言汇编语言程序设计程序设计 2 2、伪指令指令语句句 伪指指令令语句句指指示示汇编程程序序在在汇编源源程程序序时完完成成某某些些工工作作,比如完成数据定比如完成数据定义、分配存、分配存储区、指示程序区、指示程序结束等。束等。伪指指令令属属于于汇编控控制制命命令令,它它所所指指示示的的操操作作是是由由汇编程程序序在在汇编源源程程序序时完完成成的的,在在汇编时,它它不不产生生目目标代代码,在将源程序在将源程序汇编成目成目标程序后,它就不复存在了。程序后,它就不复存在了。综上上所所述述可可知知,伪指指令令语句句与与指指令令语句句的的主主要要区区别是是:伪指指令令语句句经汇编后后不不产生生机机器器目目标代代码,而而指指令令语句句经汇编后后将将产生生相相应的的机机器器目目标代代码;伪指指令令语句句所所指指示示的的操操作作是是在在程程序序汇编时完完成成的的,而而指指令令语句句的的操操作作必必须在在程程序序运运行行时才才能能完完成成。一一条条伪指指令令语句句也也由由四四个个字字段段组成成,其一般格式如下:其一般格式如下:符号名符号名 伪指令符操作数指令符操作数;注;注释 6.汇编语言汇编语言程序设计程序设计(1 1)符号名)符号名 符号名在符号名在伪指令指令语句中是一个可句中是一个可选项,符号名后面没有,符号名后面没有冒号,符号名可以是常量名、冒号,符号名可以是常量名、变量名、量名、过程名等。程名等。(2 2)伪指令符指令符伪指指令令符符指指定定汇编程程序序要要完完成成的的具具体体操操作作,它它是是伪指指令令语句句的的核核心心部部分分,如如数数据据定定义伪指指令令DBDB、DWDW、DDDD,段段定定义伪指指令令SEGMENTSEGMENT,定定义过程程伪指令指令PROCPROC等等。等等。(3 3)操作数)操作数 伪指指令令中中的的操操作作数数可可以以是是常常数数、字字符符串串、变量量、表表达达式式,其个数由具体的其个数由具体的伪指令决定,各个操作数之指令决定,各个操作数之间用用“,”分隔。分隔。(4 4)注)注释 伪指令指令语句的注句的注释也是可也是可选项,需要,需要时必必须以以“;”开始。开始。7.汇编语言汇编语言程序设计程序设计3 3、标识符符 指指令令语句句中中的的标号号和和伪指指令令语句句中中的的符符号号名名统称称为标识符。它符。它们由若干字符由若干字符组成,成,标识符的符的组成成规则如下:如下:(1 1)一个)一个标识符由符由1-31-3个字符个字符组成。成。(2 2)组成成标识符符的的字字符符可可以以是是字字母母(A-ZA-Z或或a-za-z)、数数字字(0-90-9)、专用用字字符符(“?”、“”“”、“”“”、“$”“$”、“下划下划线_”_”)。)。(3 3)除除数数字字外外,上上述述其其余余字字符符均均可可作作为标识符符的的首首字字符符,“”“”只能作只能作为标识符的首字符。符的首字符。(4 4)不能使用属于系)不能使用属于系统的的专用保留字。用保留字。返回返回8.汇编语言汇编语言程序设计程序设计 4.34.3汇编语言数据与运算符言数据与运算符 汇编语言言的的指指令令语句句和和伪指指令令语句句操操作作数数一一般般为常常量量、变量、量、标号、表达式。号、表达式。1 1、常量、常量常常量量是是没没有有任任何何属属性性的的纯数数值,它它的的值在在汇编期期间已已能能完完全全确确定定,且且在在程程序序运运行行中中也也不不会会发生生变化化。常常量量分分为数数值常常量量、字字符符串串常常量量和和符符号号常常量量,它它主主要要用用于于指指令令语句句中中的的立立即数或即数或伪指令指令语句中句中给变量量赋初初值等。等。(1 1)数)数值常量常量数数值常量分常量分为整数和整数和实数。数。例例如如:1110001111100011B B,45693 45693,0 0FF2AH FF2AH,356703356703Q Q都都是是正正确的整数形式,确的整数形式,又又如如:543.567543.567,45.2345.23,1.21.2E2E2,45.4E945.4E9都都是是正正确的确的实数形式。数形式。9.汇编语言汇编语言程序设计程序设计(2 2)字符串常量)字符串常量字字符符串串常常量量是是用用单引引号号括括起起来来的的一一个个字字符符或或多多个个字字符符。字字符符串串常常量量以以单引引号号中中各各字字符符的的ASCIIASCII码形形式式存存储在在内内存存中中,如如HH,在在内内存存中中就就是是4141H H,1212就就是是3131H H,32H32H。使使用用时可可在在单引引号号内内直直接接写写字字符符序序列列,如如1212ABAB,也也可可写写字字符符的的ASCIIASCII码,ASCIIASCII码之之间用用逗逗号号分分隔隔(此此时不不需需要要用用单引号),如引号),如3131H H,32H32H,41H41H,42H42H表示字符串表示字符串1212ABAB。(3 3)符号常量符号常量符符号号常常量量是是指指用用EQUEQU伪指指令令或或赋值语句句“=”“=”定定义过的的符符号名,可作操作数号名,可作操作数项或在表达式中使用。或在表达式中使用。10.汇编语言汇编语言程序设计程序设计2 2、变量量在在汇编语言言中中,变量量是是一一个个数数据据存存储单元元的的名名称称,即即数数据据存存放放地地址址的的符符号号表表示示。它它代代表表存存放放在在某某些些存存储单元元的的数数据据,这些些数数据据在在程程序序运运行行期期间随随时可可以以改改变。为方方便便访问变量量,在程序中通在程序中通过变量名来使用量名来使用变量。量。(1 1)变量的定量的定义 变量量通通常常在在数数据据段段或或附附加加段段中中使使用用数数据据定定义伪指指令令来来定定义,定定义变量量就就是是给数数据据分分配配存存储单元元,有有时为存存储单元元赋予予一一个个变量量名名,并并可可同同时为这些些存存储单元元预置置初初值。数数据据定定义伪指令的格式指令的格式为:变量名量名 DB(DWDB(DW、DDDD、DQDQ、DT)DT)表达式表达式1 1,表达式,表达式2 2,11.汇编语言汇编语言程序设计程序设计其中:其中:变量名是可量名是可选项,它,它仅代表所定代表所定义数据存数据存储区区第一个第一个单元的地址;元的地址;DBDB、DWDW、DDDD、DQDQ和和DTDT是是伪指令符,具指令符,具体一条数据定体一条数据定义伪指令取指令取5 5种之一。种之一。DB DB定定义的是字的是字节类型的型的变量,每个表达式被分配量,每个表达式被分配1 1个字个字节单元。元。DWDW定定义的的是是字字类型型的的变量量,每每一一个个表表达达式式被被分分配配1 1个个字字单元(元(2 2个字个字节)。)。DDDD定定义的的是是双双字字类型型的的变量量,每每一一个个表表达达式式被被分分配配2 2个个字字单元(元(4 4个字个字节)。)。DQDQ定定义的的是是四四字字类型型的的变量量,每每一一个个表表达达式式被被分分配配4 4个个字字单元(元(8 8个字个字节)。)。DTDT定定义的的是是十十字字节类型型的的变量量,每每一一个个表表达达式式被被分分配配1010个字个字节单元。元。12.汇编语言汇编语言程序设计程序设计 表达式表达式1 1,表达式,表达式22是是给变量或指定的存量或指定的存储单元元赋予初予初值,它,它们有以下几种形式:有以下几种形式:(a a)数数值表达式表达式 数数据据定定义伪指指令令可可以以为一一个个或或连续的的存存储单元元设置置数数值初初值。(b b)字符串表达式字符串表达式 对于于DBDB伪指指令令,字字符符串串的的长度度允允许超超过2 2个个字字符符,但但不不能能超超过255255个个字字符符,字字符符串串必必须用用单引引号号括括起起来来,它它可可为字字符符串串中中的的每每个个字字符符分分配配1 1字字节单元元,字字符符串串从从左左至至右右以以字符的字符的ASCIIASCII码形式按地址形式按地址递增的增的顺序依次存放。序依次存放。13.汇编语言汇编语言程序设计程序设计(c c)?)?表达式表达式 不不带引引号号的的?,用用于于为变量量预留留内内存存单元元,暂时不不存存入入数据,即表示所定数据,即表示所定义的的变量无确定的初量无确定的初值。例如:例如:A DW A DW?,?,?为变量量A A预留留2 2个字个字单元。元。(d d)地址表达式地址表达式 操操作作数数为地地址址表表达达式式时,只只适适用用于于DWDW和和DDDD这两两种种数数据据定定义伪指指令令。如如果果地地址址表表达达式式为一一变量量(标号号)名名,用用DWDW伪指指令令则是是取取它它的的偏偏移移地地址址来来初初始始化化变量量;用用DDDD伪指指令令则是是取它的段首地址和偏移地址来初始化取它的段首地址和偏移地址来初始化变量。量。(e e)带DUPDUP的表达式的表达式格格式式为:n n DUP DUP (表表达达式式),其其中中n n为重重复复因因子子,只只能能取取正正整数,它表示定整数,它表示定义了了n n个数据存个数据存储单元。元。14.汇编语言汇编语言程序设计程序设计(2 2)变量的属性量的属性 由由于于存存储器器是是分分段段使使用用的的,因因而而源源程程序序定定义的的变量量具具有有3 3个属性:个属性:(a a)段属性(段属性(SEGSEG)变量的段属性是指定量的段属性是指定义变量量时它所在段的段首地址。它所在段的段首地址。(b b)偏移属性(偏移属性(OFFSETOFFSET)变量量的的偏偏移移属属性性是是指指所所在在段段的的段段首首地地址址到到定定义该变量量的的位位置置之之间的的字字节数数(即即偏偏移移地地址址)。上上述述的的段段属属性性和和偏偏移移属性属性值就构成了一个就构成了一个变量的量的逻辑地址。地址。(c c)类型属性(型属性(TYPETYPE)变量量的的类型型属属性性表表示示存存储变量量时所所占占存存储单元元的的字字节个个数。数。15.汇编语言汇编语言程序设计程序设计(3 3)变量的使用量的使用 定定义后的后的变量,在程序中的引用有两种情况:量,在程序中的引用有两种情况:(a a)在在指指令令语句句中中,采采用用存存储器器操操作作数数的的几几种种寻址址方方式式,除除寄寄存存器器间接接寻址址方方式式不不使使用用变量量名名外外,其其余余各各种种寻址址方方式均可使用式均可使用变量名。量名。例如,某数据段已定例如,某数据段已定义一一变量量ARRAYARRAY:ARRAY DW 5000H ARRAY DW 5000H,4000H4000H (b b)在在数数据据定定义伪指指令令DWDW和和DDDD中中,操操作作数数字字段段可可直直接接引引用已定用已定义过的的变量名。量名。如:如:A DB 50HA DB 50H,40H40H B DW A B DW A C DD B C DD B16.汇编语言汇编语言程序设计程序设计3 3、标号号 标号是一条指令号是一条指令语句的符号地址,在句的符号地址,在汇编源程序中,只源程序中,只有在需要有在需要转向一条指令向一条指令语句句时,才,才为该指令指令语句句设置置标号,号,以便在控制以便在控制转移指令中直接引用移指令中直接引用这个个标号。号。标号一般在代号一般在代码段中定段中定义和引用。由于和引用。由于标号代表了指令的符号地址,所以号代表了指令的符号地址,所以标号也有号也有3 3个属性:个属性:(a a)段段属属性性(SEGSEG)。标号号的的段段属属性性是是指指标号号定定义所所在在段段的段首地址。的段首地址。(b b)偏偏移移属属性性(OFFSETOFFSET)。标号号的的偏偏移移属属性性是是指指标号号所所在段的段首地址到在段的段首地址到该标号的字号的字节距离。距离。(c c)类型型属属性性(TYPETYPE)。标号号的的类型型属属性性表表示示了了它它的的转移移特特性性,即即该标号号是是作作为段段内内还是是段段间转移移(或或调用用)指指令令的的目目标地址。地址。标号的号的类型属性有型属性有2 2种:种:NEARNEAR类型和型和FARFAR类型。型。17.汇编语言汇编语言程序设计程序设计 4 4、表达式和运算符、表达式和运算符汇编语言言的的指指令令语句句和和伪指指令令语句句中中,表表达达式式是是操操作作数数项的的常常见形形式式,表表达达式式是是由由常常量量、变量量、标号号用用运运算算符符连接接而而成成有有意意义的的式式子子。表表达达式式分分为数数值表表达达式式和和地地址址表表达达式式,任任一一表表达达式式的的值只只计算算一一次次,表表达达式式的的计算算是是在在源源程程序序汇编过程程中中进行行的的,而而不不是是在在程程序序运运行行中中进行行的的,汇编程程序序将将表表达达式式计算算后后得得到到一一个个数数值或或一一个个地地址。址。在在80868086汇编语言言中中,运运算算符符分分为:算算术运运算算符符、逻辑运运算算符符、关关系系运运算算符符、数数值返返回回运运算算符符、属属性性运运算算符符和和字字节分离运算符。分离运算符。18.汇编语言汇编语言程序设计程序设计(1 1)数)数值表达式表达式 数数值表表达达式式是是由由常常量量与与算算术运运算算符符、逻辑运运算算符符或或关关系系运运算算符符构构成成的的有有意意义的的式式子子。数数值表表达达式式在在汇编期期间进行行运算,运算运算,运算结果果为一数一数值常量,它只有大小而没有属性。常量,它只有大小而没有属性。(2 2)地址表达式)地址表达式 地地址址表表达达式式是是由由常常量量、变量量、标号号、寄寄存存器器(BXBX、BPBP、SISI、DIDI)内内容容(用用寄寄存存器器名名加加方方括括号号表表示示)和和运运算算符符组成成的的有有意意义的的式式子子。单个个的的变量量、标号号、寄寄存存器器的的内内容容是是地地址表达式的特例。址表达式的特例。地地址址表表达达式式中中可可以以使使用用算算术运运算算符符中中的的“+”“+”、“-”“-”运运算符和关系运算符。算符和关系运算符。在地址表达式中,常用的形式是:在地址表达式中,常用的形式是:变量量常量。常量。19.汇编语言汇编语言程序设计程序设计 地地址址表表达达式式除除使使用用数数值表表达达式式的的运运算算符符外外,还可可以以使使用特殊算符。用特殊算符。(a a)属性运算符属性运算符 属属性性运运算算符符主主要要用用于于临时修修改改变量量、标号号或或某某个个内内存存单元中的操作数的元中的操作数的类型属性。型属性。段超越前段超越前缀“:”。其格式其格式为:段寄存器名:地址表达式:段寄存器名:地址表达式 或段名:地址表达式或段名:地址表达式 类型运算符型运算符PTRPTR。其使用格式其使用格式为:类型型 PTR PTR 地址表达式地址表达式 根根据据地地址址表表达达式式的的不不同同值,类型型可可以以是是BYTEBYTE、WORDWORD、DWORDDWORD、NEARNEAR、FARFAR等。等。定定义类型运算符型运算符THISTHIS。其格式其格式为:标识符符 EQU THIS EQU THIS 类型型20.汇编语言汇编语言程序设计程序设计 (b b)数数值返回运算符返回运算符 数数值返返回回运运算算符符有有5 5种种,这些些运运算算符符的的运运算算对象象必必须是是变量量或或标号号,其其功功能能是是分分离离出出变量量或或标号号的的段段、偏偏移移地地址址及及类型的属性型的属性值,运算,运算结果果为一数一数值常量。常量。SEGSEG运算符运算符 格式:格式:SEG SEG 变量或量或标号号 功能:分离出其后功能:分离出其后变量或量或标号所在段的段首地址。号所在段的段首地址。OFFSET OFFSET运算符运算符 格式:格式:OFFSET OFFSET 变量或量或标号号 功能:分离出其后功能:分离出其后变量或量或标号的偏移地址。号的偏移地址。TYPE TYPE运算符运算符 格式:格式:TYPE TYPE 变量或量或标号号 功能:分离出其后功能:分离出其后变量或量或标号的号的类型型值。21.汇编语言汇编语言程序设计程序设计 LENGTH LENGTH运算符运算符 格式:格式:LENGTH LENGTH 变量量 功功能能:取取出出变量量所所含含的的数数据据存存储单元元个个数数。该运运算算符符只只对变量量起起作作用用,它它的的取取值根根据据定定义该变量量时数数据据定定义伪指指令令后后面面第第一一个个表表达达式式的的形形式式而而定定。如如果果第第一一个个表表达达式式为重重复复子子句句“n nDUP DUP(表表达达式式)”的的形形式式,则取取值为前前面面的的重重复复因因子子n n。如果如果为其它形式的表达式,其它形式的表达式,则取取值均均为1 1。SIZE SIZE运算符运算符 格式:格式:SIZE SIZE 变量量 功功能能:取取出出变量量所所含含的的数数据据存存储区区的的总字字节数数。其其返返回回值为该变量量的的LENGTHLENGTH值和和TYPETYPE值的的乘乘积,即即:LENGTH LENGTH 变量量 *YTPE YTPE 变量。量。22.汇编语言汇编语言程序设计程序设计 (c c)分离运算符分离运算符 分离高字分离高字节运算符运算符HIGHHIGH。格式:格式:HIGH HIGH 常量或地址表达式常量或地址表达式 功功能能:用用来来分分离离出出其其后后1616位位常常量量或或地地址址表表达达式式的的偏偏移移地地址址的高字的高字节。分离低字分离低字节运算符运算符LOWLOW。格式:格式:LOW LOW 常量或地址表达式常量或地址表达式 功功能能:用用来来分分离离出出其其后后1616位位常常量量或或地地址址表表达达式式的的偏偏移移地地址址的低字的低字节。(d d)其他运算符其他运算符 SHORT SHORT运算符:用于运算符:用于说明其后的明其后的标号在短距离号在短距离 (-128-27-128-27之之间)内。)内。()运算符用于改()运算符用于改变运算的运算的优先先级别。运算符用于表示运算符用于表示间接接寻址。址。返回返回23.汇编语言汇编语言程序设计程序设计 4.4 4.4 伪指令指令 伪指指令令又又称称为伪操操作作,伪指指令令是是汇编语言言程程序序设计的的一一个个重重要要部部分分,由由于于汇编程程序序在在汇编过程程中中无无法法区区分分源源程程序序中中的的分分段段情情况况,哪哪些些是是数数据据,哪哪些些是是指指令令,也也无无法法识别数数据据的的类型型,以以及及源源程程序序在在哪哪结束束,因因此此,8080X86X86宏宏汇编语言言提提供供了了多多种种伪指指令令,它它主主要要告告诉汇编程程序序如如何何正正确确地地将将汇编源源程程序序汇编成目成目标程序。程序。1、数据定数据定义伪指令指令常用的数据定常用的数据定义伪指令有指令有DBDB、DWDW、DDDD、DQDQ、DTDT。格式:格式:变量量 数据定数据定义伪指令指令 表达式表达式 ,表达式,表达式,功功能能:定定义数数据据存存储区区,类型型由由数数据据定定义伪指指令令确确定定,初初值由表达式由表达式给定。定。24.汇编语言汇编语言程序设计程序设计 2 2、符号定、符号定义伪指令指令符符号号定定义伪指指令令用用于于为程程序序中中多多次次出出现的的同同一一个个常常量量或或表表达达式式定定义为一一个个标识符符,以以便便在在源源程程序序中中以以标识符符来来代代替替对应的常量或表达式。符号定的常量或表达式。符号定义伪指令有以下两种。指令有以下两种。(1 1)等价)等价伪指令指令EQUEQU 格式:符号名格式:符号名 EQU EQU 表达式表达式 功能:功能:为常量或表达式及其它各种符号定常量或表达式及其它各种符号定义一个等价的一个等价的 符号名,但它不申符号名,但它不申请分配存分配存储单元。元。说明:明:表表达达式式可可以以是是常常量量或或数数值表表达达式式;地地址址表表达达式式;变量量、标号或指令助号或指令助记符。符。符号名不占存符号名不占存储单元,没有段、偏移和元,没有段、偏移和类型型3 3种属性种属性 在在同同一一源源程程序序中中,使使用用EQUEQU定定义的的符符号号不不能能与与本本程程序序中中的的其其它它符符号号名名同同名名;另另外外,同同一一符符号号不不能能用用EQUEQU伪指指令令重重新定新定义。25.汇编语言汇编语言程序设计程序设计 EQUEQU伪指令主要有以下指令主要有以下3 3方面方面应用:用:定定义符号常量。用符号名表示常量、数符号常量。用符号名表示常量、数值表达式。表达式。EQUEQU与与属属性性运运算算符符PTRPTR或或THISTHIS连用用,可可以以给变量量或或标号号定定义新新的的类型型属属性性并并重重新新命命名名。但但其其段段属属性性和和偏偏移移属属性性不不变。利利用用EQUEQU可可以以用用一一个个符符号号名名替替代代一一个个复复杂的的地地址址表表达达式式和和其其它它一一些些符符号号 ,如如指指令令助助记符符、变量量名名、标号号、段段名、寄存器名、宏定名、寄存器名、宏定义名等。名等。(2 2)等号)等号伪指令指令 格式:符号名格式:符号名=表达式表达式 功功能能:该语句句的的功功能能与与EQUEQU语句句类似似,不不同同的的是是等等号号伪指指令令能能对所所定定义的的符符号号名名多多次次重重新新定定义,且且以以最最后后一一次次定定义的的值为准。准。26.汇编语言汇编语言程序设计程序设计 3 3、段段结构构伪指令指令编制制一一个个8080X86X86汇编语言言源源程程序序,段段是是基基础,这有有两两方方面面含含义:一一是是必必须按按段段来来构构造造程程序序,二二是是在在程程序序执行行时,要要凭凭借借四四个个段段寄寄存存器器对各各个个段段的的存存储单元元进行行访问。段段结构构伪指指令令主要有两条主要有两条语句,即段定句,即段定义伪指令和假定指令和假定伪指令。指令。(1 1)段定)段定义伪指令指令SEGMENT/ENDSSEGMENT/ENDS格式:段名格式:段名 SEGMENT SEGMENT 定位定位类型型 组合合类型型 类别 段体段体 段名段名 ENDSENDS功能:定功能:定义一个一个逻辑段,指定段的名字和范段,指定段的名字和范围,段在内存,段在内存中的起始位置、段与段之中的起始位置、段与段之间的的连接关系。接关系。说明:明:段名由用段名由用户指定,开始与指定,开始与结束的段名束的段名须一致。一致。SEGMENT/ENDSSEGMENT/ENDS伪指令把程序分成若干指令把程序分成若干逻辑段。段。删节号号为段体,段体内段体,段体内为指令和指令和伪指令序列。指令序列。27.汇编语言汇编语言程序设计程序设计 (2 2)假定)假定伪指令指令ASSUMEASSUME假假定定伪指指令令主主要要用用于于指指示示汇编程程序序哪哪些些段段是是当当前前段段以以及及这些段与段寄存器之些段与段寄存器之间的的对应关系。关系。格式格式:ASSUME ASSUME 段寄存器名段寄存器名:段名段名,段寄存器名段寄存器名:段名段名,其其中中,段段名名是是指指用用SEGMENT/SEGMENT/ENDSENDS语句句已已定定义的的段段名名,也也可可以以是是表表达达式式“SEG SEG 变量量或或标号号”,或或者者是是关关键字字NOTHINGNOTHING;段段寄存器名可寄存器名可为CSCS、DSDS、SSSS、ESES四者之一。四者之一。功功能能:该语句句一一般般出出现在在代代码段段中中,用用来来设定定段段寄寄存存器器与与段段之之间的的对应关关系系,以以便便汇编程程序序知知道道段段的的结构构和和在在执行行各各种种指指令令时知知道道应访问哪哪个个段段;也也可可用用来来取取消消段段寄寄存存器器与与段段之之间的的对应关系(使用关系(使用NOTHINGNOTHING时)。)。说明:明:ASSUMEASSUME伪指指令令设置置在在代代码段段内内,第第一一个个ASSUMEASSUME语句句一一般般放放在段定在段定义语句之后,是句之后,是说明性明性语句。句。28.汇编语言汇编语言程序设计程序设计 在在一一个个代代码段段中中,如如果果没没有有另另外外的的ASSUMEASSUME伪指指令令重重新新设置,原有置,原有ASSUMEASSUME语句的句的设置一直有效。置一直有效。不不在在当当前前段段中中的的变量量和和数数据据存存储单元元均均是是不不可可访问的的,否否则,会会在在汇编时产生生错误或或运运行行时造造成成混混乱乱,产生生逻辑上上的的错误,得出,得出错误结果。果。ASSUMEASSUME伪指指令令不不产生生任任何何目目标代代码,它它仅仅是是告告诉汇编程序,哪些段是当前段,而且它程序,哪些段是当前段,而且它们分分别由哪个段寄存器指向。由哪个段寄存器指向。汇编程程序序不不能能检查在在程程序序运运行行期期间段段寄寄存存器器内内容容是是否否与与上上述述ASSUMEASSUME语句句的的设置置一一致致。如如果果在在程程序序中中间用用ASSUMEASSUME语句句重重建建了了DSDS或或ESES与与某某段段的的关关系系时,就就一一定定要要紧跟跟着着将将这个个新新段段首首地地址址送送入入DSDS或或ESES中中,否否则,会会因因段段寄寄存存器器的的内内容容未未更更改改而而使使得得后后面面数数据据的的读写写仍仍在在原原来来的的数数据据段段中中进行行,这样的的错误,系系统是是检查不出来的,即出不出来的,即出现逻辑错误。29.汇编语言汇编语言程序设计程序设计 4 4、源程序开始和源程序开始和结束束伪指令指令 (1 1)源程序开始)源程序开始伪指令指令 在源程序开始在源程序开始处可以用可以用NAMENAME或或TITLETITLE为模模块取名字。取名字。NAMENAME伪指令指令 格式:格式:NAME NAME 模模块名名 汇编程序将以程序将以给出的出的“模模块名名”作作为模模块的名字。的名字。TITLETITLE伪指令指令 如果程序中没有如果程序中没有NAMENAME伪指令,指令,则也可使用也可使用TITLETITLE伪指令。指令。格式:格式:TITLE textTITLE text TITLETITLE伪指指令令可可指指定定每每一一页上上打打印印的的标题。同同时,若若程程序序中中没没有有NAMENAME伪指指令令,则汇编程程序序将将用用text text 中中的的前前6 6个个字字符符作作为模模块名。名。texttext最多可有最多可有6060个字符。个字符。若若程程序序中中既既无无NAMENAME又又无无TITLETITLE伪指指令令,则将将用用源源程程序序名名作作为模模块名名。所所以以NAMENAME及及TITLETITLE伪指指令令并并不不是是必必要要的的,但但一一般般常常使使用用TITLETITLE,以便在列表文件中能打印出以便在列表文件中能打印出标题来。来。30.汇编语言汇编语言程序设计程序设计 (2 2)源程序源程序结束束伪指令指令格式:格式:END END 地址表达式地址表达式 功能:功能:该语句句为源程序的最后一个源程序的最后一个语句,用以句,用以标志整志整个程序的个程序的结束,即告束,即告诉汇编程序程序汇编工作到此工作到此结束。束。其其中中,地地址址表表达达式式为可可选项,若若选用用地地址址表表达达式式,则表表示示此此程程序序是是主主程程序序,它它可可以以单独独执行行,其其地地址址表表达达式式为该程程序序的的启启动地地址址,即即程程序序开开始始运运行行的的第第一一条条指指令令的的地地址址,例例如如,“ENDENDSTART”START”,此此STARTSTART是是第第一一条条指指令令的的标号号;若若不不选用用表表达达式式,则说明明此此程程序序为一一子子程程序序,不不能能单独独运运行,只能被其它程序行,只能被其它程序调用。用。31.汇编语言汇编语言程序设计程序设计5 5、定位、定位伪指令指令ORGORG与与汇编地址地址计数器(数器($)汇编程程序序在在汇编源源程程序序时,每每遇遇到到一一新新段段,就就为该段段设置置一一个个初初值为0 0的的汇编地地址址计数数器器,汇编程程序序使使用用汇编地地址址计数数器器记载正正在在汇编的的数数据据或或指指令令的的目目标代代码在在当当前前段段内的偏移地址。内的偏移地址。当当前前汇编地地址址计数数器器的的值可可用用符符号号$表表示示,用用户可可在在程程序序中直接使用中直接使用$,表示引用当前,表示引用当前汇编地址地址计数器的数器的值。例如:。例如:ARRAY DW 4000HARRAY DW 4000H,5000H5000H,6000H6000H COUNT EQU COUNT EQU ($-ARRAY$-ARRAY)/2 /2 汇编地址地址计数器的数器的值可以用定位可以用定位伪指令指令ORGORG设置。置。ORG ORG伪指令格式:指令格式:ORG ORG 数数值表达式表达式 功能:将数功能:将数值表达式的表达式的值赋给汇编地址地址计数器。数器。32.汇编语言汇编语言程序设计程序设计 6 6、过程定程定义伪指令指令PROC/ENDPPROC/ENDP 在在程程序序设计中中,常常把把具具有有某某种种功功能能的的程程序序段段设计成成一一个个过程程。8080X86X86宏宏汇编语言言用用于于过程程定定义的的伪指指令令的的格格式式为:过程名程名 PROC NEAR PROC NEAR 或或FAR FAR ;过程体程体 过程名程名 ENDPENDP 其其中中过程程名名是是过程程入入口口地地址址的的符符号号表表示示,它它由由程程序序员指指定定,且且开开始始处和和结束束处的的过程程名名一一致致。过程程名名同同标号号一一样,具具有有三三种种属属性性:段段属属性性、偏偏移移属属性性和和类型型属属性性,类型型属属性性可可指指定定为NEARNEAR或或FARFAR两两种种。具具有有NEARNEAR属属性性的的子子程程序序与与调用用程程序序应在在同同一一个个逻辑段段中中,而而具具有有FARFAR属属性性的的子子程程序序和和调用用程程序序不不在在同同一一个个逻辑段段内内。即即段段内内调用用的的子子程程序序一一般般为NEARNEAR类型型,段段间调用用的的子子程程序序一一般般为FARFAR类型型,若若为NEARNEAR类型型,定定义过程程时,参参数数NEARNEAR可可省省略略。过程程体体为过程程内内的的指指令和令和伪指令序列。指令序列。返回返回33.汇编语言汇编语言程序设计程序设计 4.5 4.5 源程序源程序结构模式构模式 一一个个汇编源源程程序序一一般般由由几几个个段段组成成,其其中中,必必不不可可少少的的是是代代码段段和和堆堆栈段段,堆堆栈段段也也可可以以不不用用显示示定定义,可可以以直直接接使使用用隐式式堆堆栈段段,如如果果程程序序中中需需要要使使用用数数据据存存储区区,还要要定定义数数据据段段,必必要要时还要要定定义附附加加段段。一一般般情情况况下下,对于于不不太太复复杂的的程程序序只只需需要要三三个个段段(即即数数据据段段、堆堆栈段段和和代代码段段)就就可可以以了了,而而对于于复复杂的的程程序序,除除了了使使用用上上述述三三个段以外个段以外还可以使用多个段,甚至可以使用多个程序模可以使用多个段,甚至可以使用多个程序模块。汇编语言言源源程程序序结构构通通常常有有两两种种,它它们的的区区别在在于于代代码段段中中某某些些部部分分的的编写写
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服