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