《最新微型计算机原理及应用47PPT课件.ppt》由会员分享,可在线阅读,更多相关《最新微型计算机原理及应用47PPT课件.ppt(129页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、微型计算机原理及应用微型计算机原理及应用4747微型计算机原理及应用微型计算机原理及应用第第4 4章章 汇编语言程序设计汇编语言程序设计24.1 4.1 汇编语言的格式汇编语言的格式4.2 4.2 语句行的构成语句行的构成4.3 4.3 指示性语句指示性语句4.4 4.4 指令语句指令语句4.5 4.5 汇编语言程式设计及举例汇编语言程式设计及举例第第 4 4 章章 汇编语言程序设计汇编语言程序设计微型计算机原理及应用微型计算机原理及应用第第4 4章章 汇编语言程序设计汇编语言程序设计3微型计算机原理及应用微型计算机原理及应用第第4 4章章 汇编语言程序设计汇编语言程序设计4微型计算机原理及应
2、用微型计算机原理及应用第第4 4章章 汇编语言程序设计汇编语言程序设计5微型计算机原理及应用微型计算机原理及应用第第4 4章章 汇编语言程序设计汇编语言程序设计6微型计算机原理及应用微型计算机原理及应用第第4 4章章 汇编语言程序设计汇编语言程序设计7微型计算机原理及应用微型计算机原理及应用第第4 4章章 汇编语言程序设计汇编语言程序设计8微型计算机原理及应用微型计算机原理及应用第第4 4章章 汇编语言程序设计汇编语言程序设计94.2.1 4.2.1 标记标记 1.IBM1.IBM宏汇编的字符集宏汇编的字符集 IBMIBM宏汇编中所使用的字符集仅是宏汇编中所使用的字符集仅是ASCIIASCII
3、和和EBCDIC(EBCDIC(扩展扩展的的BCDBCD码码)字符集的一个子集。它由以下几部分组成:字符集的一个子集。它由以下几部分组成:(1)(1)字母字母包含大写的英文字母:包含大写的英文字母:ABCDXYZ ABCDXYZ;小写的英文字母:小写的英文字母:abcxyz abcxyz。(2)(2)数字数字阿拉伯数字:阿拉伯数字:0123456789 0123456789。(3)(3)特殊字符特殊字符可打印字符如图可打印字符如图4-14-1中所示。中所示。微型计算机原理及应用微型计算机原理及应用第第4 4章章 汇编语言程序设计汇编语言程序设计10微型计算机原理及应用微型计算机原理及应用第第4
4、 4章章 汇编语言程序设计汇编语言程序设计11非打印字符有:非打印字符有:空格、制表符空格、制表符(TAB(TAB键键)、回车和换行。、回车和换行。若在源程序中包含任何不属于上列字符集中的字符,则若在源程序中包含任何不属于上列字符集中的字符,则汇编程序就把它们作为空格处理。虽然字符汇编程序就把它们作为空格处理。虽然字符“&”“&”是字符集是字符集中的一个字符,但紧跟在回车换行之后的符号中的一个字符,但紧跟在回车换行之后的符号“&”“&”是代表是代表一个连续行,所以,汇编程序也把它当做空格处理。一个连续行,所以,汇编程序也把它当做空格处理。2.2.界符界符(Delimiters)(Delimit
5、ers)界符是一些特殊字符,利用它们可以表明某个标记的结界符是一些特殊字符,利用它们可以表明某个标记的结束,它们本身也有一定的意义,这一点就与分隔符束,它们本身也有一定的意义,这一点就与分隔符(空格空格)不不同。例子中的冒号同。例子中的冒号(:)、逗号、逗号(,)都是一种界符。都是一种界符。IBMIBM宏汇宏汇编中的界符集如图编中的界符集如图4-24-2所示。所示。IBMIBM宏汇编中的界符集语句中有了界符就可以不再用分宏汇编中的界符集语句中有了界符就可以不再用分隔符,但为了程序更清晰可读,有时仍用分隔符。隔符,但为了程序更清晰可读,有时仍用分隔符。微型计算机原理及应用微型计算机原理及应用第第
6、4 4章章 汇编语言程序设计汇编语言程序设计123.3.常量常量(Constants)(Constants)凡是出现在凡是出现在80868086源程序中的固定值源程序中的固定值(它在程序运行期间它在程序运行期间不会变化不会变化),就称为常量。例子中的数,就称为常量。例子中的数0 0、3 3、100100等都是常量,等都是常量,而且是数字常量。而且是数字常量。IBMIBM宏汇编中允许的常量为:宏汇编中允许的常量为:(1)(1)数字数字(整数整数)常量常量 二进制常量二进制常量以字母以字母B B结尾的由一串结尾的由一串“0”“0”和和“1”“1”组成的序列。例如,组成的序列。例如,00101100
7、B00101100B。十进制常量十进制常量由若干个由若干个0 09 9的数字组成的序列,可以以字母的数字组成的序列,可以以字母D D作结尾,作结尾,或没有任何字母作结尾。例如,或没有任何字母作结尾。例如,1234D1234D或或12341234。微型计算机原理及应用微型计算机原理及应用第第4 4章章 汇编语言程序设计汇编语言程序设计13八进制常量八进制常量以字母以字母Q(Q(或字母或字母O)O)结尾,由若干个结尾,由若干个0 07 7的数字组成的序的数字组成的序列。例如列。例如255Q255Q,377Q377Q等。等。十六进制常量十六进制常量以字母以字母H H结尾,由若干个结尾,由若干个0 0
8、9 9的数字或的数字或A AF F的字母所组的字母所组成的序列。成的序列。为了避免与标识符相混淆,十六进制数在语句中必须以为了避免与标识符相混淆,十六进制数在语句中必须以数字打头。所以,凡是以字母数字打头。所以,凡是以字母A AF F开始的十六进制数,必须开始的十六进制数,必须在前面加上数字在前面加上数字0 0。例如。例如56H56H,0BA3FH0BA3FH等。等。微型计算机原理及应用微型计算机原理及应用第第4 4章章 汇编语言程序设计汇编语言程序设计14(2)(2)字符串常量字符串常量字符串常量是由包含在单引号内的字符串常量是由包含在单引号内的1 1至至2 2个个ASCIIASCII字符构
9、字符构成的。汇编程序把它们表示成一个字节序列,一个字节对应成的。汇编程序把它们表示成一个字节序列,一个字节对应一个字符,把引号中的字符翻译成它的一个字符,把引号中的字符翻译成它的ASCIIASCII码值。例如字码值。例如字符符“A”“A”等价于等价于 41H 41H,字符,字符“AB”“AB”等价于等价于4142H4142H。在可以使用。在可以使用单字节立即数的地方,就可以使用单个字符组成的字符串常单字节立即数的地方,就可以使用单个字符组成的字符串常量;在可以使用字立即数的地方,就可以使用两个字符组成量;在可以使用字立即数的地方,就可以使用两个字符组成的字符串常量。的字符串常量。只有在初始化存
10、储器时才可以使用多于两个字符的字符只有在初始化存储器时才可以使用多于两个字符的字符串常量。串常量。微型计算机原理及应用微型计算机原理及应用第第4 4章章 汇编语言程序设计汇编语言程序设计154.4.标识符标识符(Identifiers)(Identifiers)标识符是由程序员自由建立起来的、有特定意义的字符标识符是由程序员自由建立起来的、有特定意义的字符序列,如例子中的序列,如例子中的SUMSUM、CYCLECYCLE和和PORT_VALPORT_VAL等等。等等。一个标识符是由最多为一个标识符是由最多为3131个字母、数字及规定的特殊字个字母、数字及规定的特殊字符符(?_(?_)等组成的,
11、而且不能用数字打头等组成的,而且不能用数字打头(以免与十六以免与十六进制数相混淆进制数相混淆)。5.5.保留字保留字(Reserved words)(Reserved words)保留字看上去像标识符,但是它们在语言中有特殊的意保留字看上去像标识符,但是它们在语言中有特殊的意义,而且不能用它们作为标识符。如例子中的义,而且不能用它们作为标识符。如例子中的SEGMENTSEGMENT、MOVMOV、EQUEQU、ALAL等都是保留字。实际上凡是等都是保留字。实际上凡是80868086的指令助记符,汇的指令助记符,汇编语言中的命令编语言中的命令(伪指令伪指令),寄存器名等都是保留字。,寄存器名等都
12、是保留字。微型计算机原理及应用微型计算机原理及应用第第4 4章章 汇编语言程序设计汇编语言程序设计166.6.注释注释(Comment)(Comment)为了使汇编语言的源程序更便于阅读和理解,常在源程为了使汇编语言的源程序更便于阅读和理解,常在源程序中加上注释。注释是在分号序中加上注释。注释是在分号(;)后面的任意的字符序列,后面的任意的字符序列,直到行的结尾。在汇编时,汇编程序对它们并不进行处理。直到行的结尾。在汇编时,汇编程序对它们并不进行处理。在可打印的文件中,注释和源程序一起打印。在可打印的文件中,注释和源程序一起打印。微型计算机原理及应用微型计算机原理及应用第第4 4章章 汇编语言
13、程序设计汇编语言程序设计174.2.2 4.2.2 符号符号在汇编语言源程序中,为了使程序更具有普遍性,也便在汇编语言源程序中,为了使程序更具有普遍性,也便于程序的修改,用户常用符号等代替存储单元、数据、表达于程序的修改,用户常用符号等代替存储单元、数据、表达式等等,如例中的存储单元式等等,如例中的存储单元SUMSUM、输入输出端口、输入输出端口PROT_VALPROT_VAL等等就是。符号就是。符号(Symbol)(Symbol)是一种标识符,它要符合标识符的组成是一种标识符,它要符合标识符的组成规则。规则。在实际使用中的符号可以分成五类,即寄存器、变量、在实际使用中的符号可以分成五类,即寄
14、存器、变量、标号、数、其他。标号、数、其他。每个符号都具有一定的属性,以允许汇编程序使用它来每个符号都具有一定的属性,以允许汇编程序使用它来代表所需的信息。代表所需的信息。微型计算机原理及应用微型计算机原理及应用第第4 4章章 汇编语言程序设计汇编语言程序设计181.1.寄存器寄存器(Registers)(Registers)80868086的寄存器常在操作数场出现,代表某一个操作数。的寄存器常在操作数场出现,代表某一个操作数。每个寄存器都有一种类型特性,由这些类型可以确定它是一每个寄存器都有一种类型特性,由这些类型可以确定它是一个字节寄存器还是一个字寄存器。个字节寄存器还是一个字寄存器。80
15、868086的标志位被看作是一的标志位被看作是一位寄存器。位寄存器。2.2.变量变量(Variable)(Variable)存放在存储单元中的操作数是变量,因为它们的值是可存放在存储单元中的操作数是变量,因为它们的值是可以改变的。在程序中出现的是存储单元地址的符号,即它们以改变的。在程序中出现的是存储单元地址的符号,即它们的名称。的名称。微型计算机原理及应用微型计算机原理及应用第第4 4章章 汇编语言程序设计汇编语言程序设计19所有的变量都具有三种属性:所有的变量都具有三种属性:(1)(1)段值段值(SEGMENT)(SEGMENT),即变量单元所在段的段地址,即变量单元所在段的段地址(段的段
16、的起始地址起始地址)的高的高1616位,低位,低4 4位始终为位始终为0;0;(2)(2)偏移量偏移量(OFFSET)(OFFSET),即变量单元地址与段的起始地址,即变量单元地址与段的起始地址之间的偏移量之间的偏移量(16(16位位););(3)(3)类型类型(TYPE)(TYPE),变量有三种类型:,变量有三种类型:字节字节(BYTE)(BYTE)、字、字(WORD)(WORD)和双字和双字(DOUBLE WORD)(DOUBLE WORD)。变量通常是用存储器初始化命令定义的。变量通常是用存储器初始化命令定义的。微型计算机原理及应用微型计算机原理及应用第第4 4章章 汇编语言程序设计汇编
17、语言程序设计203.3.标号标号(Label)(Label)标号是某条指令所存放单元的符号地址,它是转移标号是某条指令所存放单元的符号地址,它是转移(条条件转移或无条件转移件转移或无条件转移)指令或调用指令或调用(CALL)(CALL)指令的目标操作数。指令的目标操作数。对于汇编程序来说,标号与变量是类似的,都是存储单对于汇编程序来说,标号与变量是类似的,都是存储单元的符号地址。只是标号对应的存储单元中存放的是指令;元的符号地址。只是标号对应的存储单元中存放的是指令;而变量所对应的存储单元中存放的是数据。所以,标号也有而变量所对应的存储单元中存放的是数据。所以,标号也有三种属性:三种属性:(1
18、)(1)段值,段值,(2)(2)偏移量,偏移量,(3)(3)类型。类型。微型计算机原理及应用微型计算机原理及应用第第4 4章章 汇编语言程序设计汇编语言程序设计21标号的类型与变量不同,它的类型是标号的类型与变量不同,它的类型是NEARNEAR或是或是FARFAR。NEARNEAR是指转移到此标号所指的语句,或调用此子程序或是指转移到此标号所指的语句,或调用此子程序或过程,只需要改变过程,只需要改变IPIP值,而不改变值,而不改变CSCS值。也即转移指令或调值。也即转移指令或调用指令与此标号所指的语句或过程在同一段内。用指令与此标号所指的语句或过程在同一段内。FARFAR与与NEARNEAR不
19、同,要转移到标号所指的语句,或调用此不同,要转移到标号所指的语句,或调用此子程序或过程,不仅需要改变子程序或过程,不仅需要改变IPIP的值,而且需要改变的值,而且需要改变CSCS,即,即是段交叉转移或调用。是段交叉转移或调用。若没有对标号进行类型说明,就假定它为若没有对标号进行类型说明,就假定它为NEARNEAR。微型计算机原理及应用微型计算机原理及应用第第4 4章章 汇编语言程序设计汇编语言程序设计224.4.数数在汇编语言源程序中的常数也常以符号的形式出现,这在汇编语言源程序中的常数也常以符号的形式出现,这样就更具有通用性,更便于修改。样就更具有通用性,更便于修改。如上例中的就是把端口地址
20、如上例中的就是把端口地址3 3定义为一个符号定义为一个符号PORT_VALPORT_VAL。5.5.其他符号其他符号除了上述除了上述4 4种符号以外,在汇编语言中还经常出现一些种符号以外,在汇编语言中还经常出现一些其他符号,把它们用作汇编程序中的伪指令名字。其他符号,把它们用作汇编程序中的伪指令名字。微型计算机原理及应用微型计算机原理及应用第第4 4章章 汇编语言程序设计汇编语言程序设计234.2.3 4.2.3 表达式表达式 表达式表达式(Expressions)(Expressions)是由上面讨论过的标记是由上面讨论过的标记(Token)(Token)、符号符号(Symbol)(Symb
21、ol)通过运算符组合起来的。粗略地说,一个表达通过运算符组合起来的。粗略地说,一个表达式是一个由操作数和运算符组合的序列,在汇编时它能产生式是一个由操作数和运算符组合的序列,在汇编时它能产生一个值。一个值。1.1.操作数操作数(Operands)(Operands)一个操作数可以是一个寄存器名、一个常量一个操作数可以是一个寄存器名、一个常量(数字常量数字常量或字符串常量或字符串常量)或一个存储器操作数。或一个存储器操作数。(1)(1)常量操作数常量操作数具有数字值的操作数是常量或是表示常量的标识符具有数字值的操作数是常量或是表示常量的标识符(符符号号)。微型计算机原理及应用微型计算机原理及应用
22、第第4 4章章 汇编语言程序设计汇编语言程序设计24(2)(2)存储器操作数存储器操作数存储器操作数,通常是标识符,可以分成标号存储器操作数,通常是标识符,可以分成标号(Label)(Label)和变量和变量(Variable)(Variable)两种。两种。标号是可执行的指令语句的符号地址,通常是作为转移标号是可执行的指令语句的符号地址,通常是作为转移指令指令JMPJMP和调用指令和调用指令CALLCALL的目标操作数。的目标操作数。变量通常是指存放在一些存储单元中的值,这些值在程变量通常是指存放在一些存储单元中的值,这些值在程序运行过程中是可变的。序运行过程中是可变的。微型计算机原理及应用
23、微型计算机原理及应用第第4 4章章 汇编语言程序设计汇编语言程序设计25变量可以具有以下几种寻址方式:变量可以具有以下几种寻址方式:直接寻址直接寻址1616位地址偏移量包含在指令中;位地址偏移量包含在指令中;基址寻址由一个基址寄存器基址寻址由一个基址寄存器(BX(BX或或BP)BP)的内容,加上的内容,加上一个在指令中指定的一个在指令中指定的8 8位或位或1616位位移量,决定变量的地址;位位移量,决定变量的地址;变址寻址由一个变址寄存器变址寻址由一个变址寄存器(SI(SI或或DI)DI)的内容,加上的内容,加上一个在指令中指定的一个在指令中指定的8 8位或位或1616位位移量,决定变量的地址
24、;位位移量,决定变量的地址;基址变址寻址由一个基址寄存器基址变址寻址由一个基址寄存器(BX(BX或或BP)BP)的内容,的内容,加上一个变址寄存器加上一个变址寄存器(SI(SI或或DI)DI)的内容,再加上一个在指令中的内容,再加上一个在指令中指定的指定的8 8位或位或1616位位移量,决定变量的地址。位位移量,决定变量的地址。作为存储器操作数的标号和变量都有三种属性:作为存储器操作数的标号和变量都有三种属性:段值、段值、段内地址偏移量、类型。段内地址偏移量、类型。微型计算机原理及应用微型计算机原理及应用第第4 4章章 汇编语言程序设计汇编语言程序设计26一个运算符取一个或多个操作数的值,以形
25、成一个新值。一个运算符取一个或多个操作数的值,以形成一个新值。在在IBMIBM宏汇编中有五种运算符。宏汇编中有五种运算符。2.2.运算符运算符(Operators)(Operators)IBMIBM宏汇编通常有以下几种运算符:宏汇编通常有以下几种运算符:算术运算符算术运算符(Arithmetic Operators)(Arithmetic Operators);逻辑运算符逻辑运算符(Logical Operators)(Logical Operators);关系运算符关系运算符(Relational Operators)(Relational Operators);分析运算符分析运算符(Ana
26、lytic Operators)(Analytic Operators);合成运算符合成运算符(Synthetic Operators)(Synthetic Operators)。微型计算机原理及应用微型计算机原理及应用第第4 4章章 汇编语言程序设计汇编语言程序设计27(1)(1)算术运算符算术运算符这是读者十分熟悉的运算符这是读者十分熟悉的运算符-+(-+(加加)、-(-(减减)、*(*(乘乘)、/(/(除除)运算符。另一个算术运算符是运算符。另一个算术运算符是MOD(MOD(求余求余),它产生除法,它产生除法以后的余数。因此以后的余数。因此19/719/7是是2(2(商是商是2)2),而
27、,而19MOD719MOD7是是5(5(余数是余数是5)5)。算术运算符应用于数字操作数,结果也是数字的。算术运算符应用于数字操作数,结果也是数字的。当算术运算符应用于存储器即地址操作数时其规则就更当算术运算符应用于存储器即地址操作数时其规则就更加严格:加严格:只有当结果有明确的、有意义的物理解释时,这只有当结果有明确的、有意义的物理解释时,这些运算才是有效的。些运算才是有效的。微型计算机原理及应用微型计算机原理及应用第第4 4章章 汇编语言程序设计汇编语言程序设计28(2)(2)逻辑运算符逻辑运算符按位操作的逻辑运算符有:按位操作的逻辑运算符有:AND(AND(与与)、OR(OR(或或)、X
28、OR(XOR(异异或或)和和NOT(NOT(非非)。逻辑运算的操作数只能是数字的,而且结果是数字的。逻辑运算的操作数只能是数字的,而且结果是数字的。存储器地址操作数不能进行逻辑运算。存储器地址操作数不能进行逻辑运算。注意:注意:AND AND、OROR、XORXOR和和NOTNOT,也是,也是80868086指令的助记符。指令的助记符。但是,作为但是,作为IBMIBM宏汇编的运算符是在程序汇编时计算的。而宏汇编的运算符是在程序汇编时计算的。而作为指令的助记符,则是在程序执行时计算的。作为指令的助记符,则是在程序执行时计算的。微型计算机原理及应用微型计算机原理及应用第第4 4章章 汇编语言程序设
29、计汇编语言程序设计29(3)(3)关系运算符关系运算符在在IBMIBM宏汇编中有以下关系运算符:宏汇编中有以下关系运算符:相等相等 EQ(Equal)EQ(Equal);不等不等 NE(Not Equal)NE(Not Equal);小于小于 LT(Less Than)LT(Less Than);大于大于 GT(Greater Than)GT(Greater Than);小于或等于小于或等于 LE(Less Than or Equal)LE(Less Than or Equal);大于或等于大于或等于 GE(Greater Than or Equal)GE(Greater Than or Eq
30、ual)。关系运算的两个操作数,或者都是数字的,或者是同一关系运算的两个操作数,或者都是数字的,或者是同一个段的存储器地址。结果始终是一个数字值。若关系是假,个段的存储器地址。结果始终是一个数字值。若关系是假,则结果为则结果为0 0;若关系是真,则结果为;若关系是真,则结果为0FFFFH0FFFFH。微型计算机原理及应用微型计算机原理及应用第第4 4章章 汇编语言程序设计汇编语言程序设计30(4)(4)分析运算符分析运算符分析运算符可以把存储器操作数分解为它的组成部分,分析运算符可以把存储器操作数分解为它的组成部分,如它的段值、段内偏移量和类型。如它的段值、段内偏移量和类型。(5)(5)合成运
31、算符合成运算符合成运算符可以由已经存在的存储器操作数生成一个段合成运算符可以由已经存在的存储器操作数生成一个段值与偏移量相同、而类型不同的新的存储器操作数。值与偏移量相同、而类型不同的新的存储器操作数。微型计算机原理及应用微型计算机原理及应用第第4 4章章 汇编语言程序设计汇编语言程序设计314.2.4 4.2.4 语句语句如前所述,一个汇编语言的源程序是由一条条语句组成如前所述,一个汇编语言的源程序是由一条条语句组成的,语句的,语句(Statements)(Statements)就是完成一个何种动作的说明。源程就是完成一个何种动作的说明。源程序中的语句可分成两类:序中的语句可分成两类:指令语
32、句,汇编程序把它们翻译成机器代码,这些代码指令语句,汇编程序把它们翻译成机器代码,这些代码命令命令80868086执行某些操作。如执行某些操作。如MOVMOV、ADDADD、JMPJMP等。等。指示性语句指示性语句(伪指令伪指令),汇编程序并不把它们,汇编程序并不把它们(也不可能也不可能)翻译成机器代码,只是用来指示、引导汇编程序在汇编时进翻译成机器代码,只是用来指示、引导汇编程序在汇编时进行一些操作,如定义符号、分配存储单元、初始化存储器等行一些操作,如定义符号、分配存储单元、初始化存储器等等,所以伪指令本身不占用存储单元。等,所以伪指令本身不占用存储单元。微型计算机原理及应用微型计算机原理
33、及应用第第4 4章章 汇编语言程序设计汇编语言程序设计32两种语句的格式是类似的。指令语句的格式为:两种语句的格式是类似的。指令语句的格式为:标号:标号:助记符助记符 参数,参数,参数,参数 ;注释;注释指示性语句的格式为:指示性语句的格式为:名称名称 命令命令 参数,参数,参数,参数 ;注释;注释在一个指令语句中的标号后面跟有冒号在一个指令语句中的标号后面跟有冒号(:),而在一,而在一个指示性语句中的名字后面没有冒号,这就是这两种语句在个指示性语句中的名字后面没有冒号,这就是这两种语句在格式上的主要区别。格式上的主要区别。微型计算机原理及应用微型计算机原理及应用第第4 4章章 汇编语言程序设
34、计汇编语言程序设计33一个标号与一条指令的地址符号名相联系,标号可以作一个标号与一条指令的地址符号名相联系,标号可以作为为JMPJMP指令和指令和CALLCALL指令的目标操作数。指令的目标操作数。指示性语句中的名字与指令的地址毫无关系,绝不能转指示性语句中的名字与指令的地址毫无关系,绝不能转向它。向它。在指令语句中的标号,总是任选的;但在指示性语句中在指令语句中的标号,总是任选的;但在指示性语句中的名字,可能是强制的、任选的或禁止的,这取决于实际的的名字,可能是强制的、任选的或禁止的,这取决于实际的命令。命令。微型计算机原理及应用微型计算机原理及应用第第4 4章章 汇编语言程序设计汇编语言程
35、序设计344.3 4.3 指示性语句指示性语句在在IBMIBM宏汇编中有以下几种指示性语句宏汇编中有以下几种指示性语句(Directive(Directive statements)statements):(1)(1)符号定义语句符号定义语句(Symbol definition)(Symbol definition);(2)(2)数据定义语句数据定义语句(Data definition)(Data definition);(3)(3)段定义语句段定义语句(Segmentation definition)(Segmentation definition);(4)(4)过程定义语句过程定义语句(P
36、rocedure definition)(Procedure definition);(5)(5)结束语句结束语句(Termination)(Termination)。微型计算机原理及应用微型计算机原理及应用第第4 4章章 汇编语言程序设计汇编语言程序设计354.3.1 4.3.1 符号定义语句符号定义语句 1.1.等值语句等值语句EQU EQU EQUEQU语句给符号名定义一个值,或定义为别的符号名,语句给符号名定义一个值,或定义为别的符号名,甚至可定义为一条可以执行的指令等。甚至可定义为一条可以执行的指令等。EQUEQU语句的格式为:语句的格式为:NAME EQU EXPRESSIONNA
37、ME EQU EXPRESSIONEQUEQU语句在未解除前,不能重新定义。语句在未解除前,不能重新定义。2.2.等号等号(Equal sign)(Equal sign)语句语句=此语句的功能与此语句的功能与EQUEQU语句类似,最大特点是能对符号进语句类似,最大特点是能对符号进行再定义。行再定义。微型计算机原理及应用微型计算机原理及应用第第4 4章章 汇编语言程序设计汇编语言程序设计363.3.解除语句解除语句PURGEPURGE已经用已经用EQUEQU命令定义的符号,若以后不再用了就可以用命令定义的符号,若以后不再用了就可以用PURGEPURGE语句来解除。语句来解除。PURGEPURGE
38、语句的格式为语句的格式为:PURCE PURCE 符号符号1 1,符号,符号2 2,符号,符号n n 注意:注意:PURGE PURGE语句本身不能有名字。用语句本身不能有名字。用PURGEPURGE语句解除语句解除后的符号可以重新定义。后的符号可以重新定义。微型计算机原理及应用微型计算机原理及应用第第4 4章章 汇编语言程序设计汇编语言程序设计374.3.2 4.3.2 数据定义语句数据定义语句数据定义语句,为一个数据项分配存储单元,用一个符数据定义语句,为一个数据项分配存储单元,用一个符号名与这个存储单元相联系,且为这个数据提供一个任选的号名与这个存储单元相联系,且为这个数据提供一个任选的
39、初始值。初始值。与数据项相联系的符号名称为变量。数据定义语句的例与数据项相联系的符号名称为变量。数据定义语句的例子如下:子如下:THINGTHINGDBDB?;定义一个字节;定义一个字节BIGGER_THINGBIGGER_THINGDW DW?;定义一个字;定义一个字BIGGEST_THINGBIGGEST_THING DD DD?;定义一个双字;定义一个双字 微型计算机原理及应用微型计算机原理及应用第第4 4章章 汇编语言程序设计汇编语言程序设计38THINGTHING是一个符号名,它与在存储器中的一个字节相联是一个符号名,它与在存储器中的一个字节相联系,即它是一个字节变量。系,即它是一个
40、字节变量。BIGGER_THINGBIGGER_THING也是一个符号名,它与在存储器中的一个也是一个符号名,它与在存储器中的一个字相联系,即它是一个字变量。字相联系,即它是一个字变量。BIGGEST_THINGBIGGEST_THING也是一个符号名,它与在存储器中的一也是一个符号名,它与在存储器中的一个双字相联系,即它是一个双字变量。个双字相联系,即它是一个双字变量。由汇编程序产生的目标码,产生指令和放指令的地址。由汇编程序产生的目标码,产生指令和放指令的地址。在目标码产生以后,指令已经存放在存储器中,可以执行了。在目标码产生以后,指令已经存放在存储器中,可以执行了。在指令送至存储器的时候
41、,数据项的初始值也可以送到在指令送至存储器的时候,数据项的初始值也可以送到存储器中。这意味着目标码除了包含指令和它们的地址以外,存储器中。这意味着目标码除了包含指令和它们的地址以外,也可以包括数据项的起始值和它们的地址。这些初始值是由也可以包括数据项的起始值和它们的地址。这些初始值是由数据定义语句所规定的。数据定义语句所规定的。微型计算机原理及应用微型计算机原理及应用第第4 4章章 汇编语言程序设计汇编语言程序设计39例如:例如:THINGTHINGDBDB2525不仅使不仅使THINGTHING这个符号与一个字节的存储单元相联系,这个符号与一个字节的存储单元相联系,而且在汇编时会把而且在汇编
42、时会把2525放入与放入与THINGTHING相联系的存储单元中。所相联系的存储单元中。所以以THINGTHING是一个字节变量,它的初始值为是一个字节变量,它的初始值为2525。同样,以下语句:同样,以下语句:BIGGERBIGGERDWDW4142H4142H在汇编时就会把在汇编时就会把41H41H与与42H42H分别放至与分别放至与BIGGER_THINGBIGGER_THING相联相联系的两个连续的字节单元中。系的两个连续的字节单元中。微型计算机原理及应用微型计算机原理及应用第第4 4章章 汇编语言程序设计汇编语言程序设计40下面的语句:下面的语句:BIGGESTBIGGEST DDD
43、D12345678H12345678H在汇编时就会初始化,如图在汇编时就会初始化,如图4-34-3所示。它定义了一个双所示。它定义了一个双字变量,且给了初始值。字变量,且给了初始值。当汇编程序汇编时遇到当汇编程序汇编时遇到“?”“?”号,则它仍然为数据项分号,则它仍然为数据项分配相应的存储单元配相应的存储单元(DB(DB分配一个字节、分配一个字节、DW DW分配一个字、分配一个字、DDDD分分配一个双字配一个双字),但并不产生一个目标码来初始化这些存储单,但并不产生一个目标码来初始化这些存储单元。即元。即“?”“?”号是为了保留若干个存储单元,以便存放指令号是为了保留若干个存储单元,以便存放指
44、令执行的中间结果。执行的中间结果。通常初始值能用一个表达式来规定,因为表达式是在汇通常初始值能用一个表达式来规定,因为表达式是在汇编时计算的。编时计算的。微型计算机原理及应用微型计算机原理及应用第第4 4章章 汇编语言程序设计汇编语言程序设计41微型计算机原理及应用微型计算机原理及应用第第4 4章章 汇编语言程序设计汇编语言程序设计42同样,在存储单元中可以存放存储器地址值。存放内存同样,在存储单元中可以存放存储器地址值。存放内存单元的段内偏移量需用一个字;存放全地址,则需用两个字,单元的段内偏移量需用一个字;存放全地址,则需用两个字,一个字放段地址,另一个字放段内偏移量。一个字放段地址,另一
45、个字放段内偏移量。在实际应用中,还经常会用到由字节、字或双字构成的在实际应用中,还经常会用到由字节、字或双字构成的表。表。这可由在数据定义语句的参数部分,引入若干个用逗号这可由在数据定义语句的参数部分,引入若干个用逗号分隔的参数就可以建立一个表。下列语句定义了一个包含分隔的参数就可以建立一个表。下列语句定义了一个包含2 2的权的字节的表:的权的字节的表:POWERS_2POWERS_2DBDB1 1,2 2,4 4,8 8,16 16 微型计算机原理及应用微型计算机原理及应用第第4 4章章 汇编语言程序设计汇编语言程序设计43可以用可以用DUPDUP来缩写若干相同的值。因而,来缩写若干相同的值
46、。因而,DUPDUP利用给出的利用给出的一个初值一个初值(或一组初值或一组初值)以及这些值应该重复的次数来初始化以及这些值应该重复的次数来初始化存储器。存储器。DBDB100 DUP(0)100 DUP(0);100100个字节全初始化为个字节全初始化为0 0DWDW100 DUP(0)100 DUP(0);100100个字全初始化为个字全初始化为0 0DWDW10 DUP(?)10 DUP(?);保留;保留1010个字个字可以用可以用DBDB数据定义语句在内存中定义一个字符串。字符数据定义语句在内存中定义一个字符串。字符串中的每一个字符用它的串中的每一个字符用它的ASCIIASCII码表示,
47、为一个字节,故字码表示,为一个字节,故字符串的定义必须用符串的定义必须用DBDB命令。命令。有两种定义字符串的方法:有两种定义字符串的方法:一种是字符串中的每一个一种是字符串中的每一个字符分别定义,每一个字符之间用逗号分隔;另一种方法是字符分别定义,每一个字符之间用逗号分隔;另一种方法是在整个字符串的前后都加单引号,例如:在整个字符串的前后都加单引号,例如:EXAM1EXAM1DBDBTHIS IS AN EXAMPLETHIS IS AN EXAMPLE微型计算机原理及应用微型计算机原理及应用第第4 4章章 汇编语言程序设计汇编语言程序设计44IBMIBM宏汇编对在程序中涉及的每一个存储单元
48、与一种类宏汇编对在程序中涉及的每一个存储单元与一种类型联系起来,这样能对访问存储器的指令产生正确的目标码。型联系起来,这样能对访问存储器的指令产生正确的目标码。例如,数据定义语句:例如,数据定义语句:SUMSUMDBDB?告诉汇编程序,告诉汇编程序,SUMSUM是字节类型的,以后当遇到如下的是字节类型的,以后当遇到如下的指令语句:指令语句:INCINCSUMSUM汇编程序就产生一个字节增量指令,而不是一个字增量汇编程序就产生一个字节增量指令,而不是一个字增量指令。指令。微型计算机原理及应用微型计算机原理及应用第第4 4章章 汇编语言程序设计汇编语言程序设计45一个存储单元的类型如下:一个存储单
49、元的类型如下:(1)(1)数据字节。如数据字节。如SUMSUMDBDB?;定义一个字节;定义一个字节(2)(2)数据字数据字(两个连续的字节两个连续的字节)。如。如BIGGERBIGGERDWDW?;定义一个字;定义一个字(3)(3)数据双字数据双字(四个连续的字节四个连续的字节)。如。如BIGGESTBIGGEST DDDD?;定义一个双字;定义一个双字(4)NEAR(4)NEAR指令单元。如指令单元。如CYCLE:CYCLE:CMPCMPSUM,100SUM,100(5)FAR(5)FAR指令单元。指令单元。微型计算机原理及应用微型计算机原理及应用第第4 4章章 汇编语言程序设计汇编语言程
50、序设计46一个指令单元能出现在一条一个指令单元能出现在一条JMPJMP或或CALLCALL语句中,若这个语句中,若这个指令单元的类型是指令单元的类型是NEARNEAR,汇编程序将产生一个段内,汇编程序将产生一个段内JMPJMP或或CALLCALL指令;若指令单元的类型是指令;若指令单元的类型是FARFAR,则产生一个段交叉,则产生一个段交叉JMPJMP或或CALLCALL指令。指令。一个一个NEARNEAR指令单元规定了一个长度为两个字节的指针,指令单元规定了一个长度为两个字节的指针,即此指令单元在段内的地址偏移量。获得了此地址偏移量,即此指令单元在段内的地址偏移量。获得了此地址偏移量,就可以