汇编语言的伪指令语句课件.ppt

上传人(卖家):ziliao2023 文档编号:5886936 上传时间:2023-05-13 格式:PPT 页数:104 大小:351.51KB
下载 相关 举报
汇编语言的伪指令语句课件.ppt_第1页
第1页 / 共104页
汇编语言的伪指令语句课件.ppt_第2页
第2页 / 共104页
汇编语言的伪指令语句课件.ppt_第3页
第3页 / 共104页
汇编语言的伪指令语句课件.ppt_第4页
第4页 / 共104页
汇编语言的伪指令语句课件.ppt_第5页
第5页 / 共104页
点击查看更多>>
资源描述

1、(三)汇编语言的伪指令语句(三)汇编语言的伪指令语句一、符号定义伪指令语句一、符号定义伪指令语句 为一个为一个表达式表达式或或指令助记符指令助记符赋予一个赋予一个符号名符号名。在后继程序文本中,可。在后继程序文本中,可以使用该符号名来替代这个表达式或指令助记符。以使用该符号名来替代这个表达式或指令助记符。(1 1)等值语句)等值语句 EQUEQU 格式:格式:符号名符号名EQUEQU表达式表达式/指令助记符指令助记符例如:例如:PORT1PORT1EQU 312EQU 312 ;为数值常量;为数值常量312312赋予符号名赋予符号名PORT1PORT1 PORT2 PORT2EQU PORT1

2、+1EQU PORT1+1 ;为数值表达式赋予符号名;为数值表达式赋予符号名PORT2PORT2 ADDR ADDREQU ESEQU ES:SI+4 SI+4 ;为;为地址表达式地址表达式定义一个名字定义一个名字 STRINGSTRINGEQU COMPUTEREQU COMPUTER ;为字符串常量定义一个名字;为字符串常量定义一个名字 COUNTCOUNTEQU CXEQU CX ;为寄存器;为寄存器CXCX定义新的符号名定义新的符号名 LDLDEQU MOVEQU MOV ;为助记符;为助记符MOVMOV定义新的符号名定义新的符号名LDLD 说明:说明:在在EQUEQU语句的表达式语句

3、的表达式中,如果有中,如果有标号名标号名或或变量名变量名,则该语句必须,则该语句必须放在它们的定义语句之后。放在它们的定义语句之后。例如例如AB EQU DATA+2AB EQU DATA+2必须放在必须放在标识符标识符DATADATA的定义之后,否则汇编程序将指示以下错误的定义之后,否则汇编程序将指示以下错误:Symbol not defined:DATASymbol not defined:DATA 后面的后面的EQUEQU伪操作伪操作可以利用可以利用前面的前面的EQUEQU伪操作已经定义的符号名伪操作已经定义的符号名。例如:例如:ALPHA EQU 7 ALPHA EQU 7 ;给数值;

4、给数值7 7 赋以符号名赋以符号名ALPHAALPHABETA EQUBETA EQU ALPHA-2 ALPHA-2 ;给;给7-2=57-2=5赋以符号名赋以符号名BETABETAADDR EQU VAR+BETA ADDR EQU VAR+BETA ;给给VAR+5VAR+5赋以符号名赋以符号名ADDRADDR 使用使用EQUEQU伪操作定义过的符号名伪操作定义过的符号名不允许重复定义。不允许重复定义。例如:例如:EMP EQUEMP EQU 0 0 ;给数值;给数值7 7赋以符号名赋以符号名ALPHAALPHAEMP EQU EMP+1EMP EQU EMP+1 ;汇编该语句时,汇编程

5、序将指示出错汇编该语句时,汇编程序将指示出错。(2 2)等号语句)等号语句 =格式:格式:符号名符号名 =表达式表达式/指令助记符指令助记符 该语句的功能与该语句的功能与EQUEQU完全相同,唯一的区别是:完全相同,唯一的区别是:该语句可以对符号名该语句可以对符号名进行重复定义进行重复定义。例如:例如:EMP =EMP =0 0 ;定义符号名;定义符号名EMPEMP为为0 0EMP =EMP+1EMP =EMP+1 ;重新定义符号名;重新定义符号名EMPEMP为为1 1,完全合法。,完全合法。二、数据定义伪指令语句二、数据定义伪指令语句 数据定义语句用于数据定义语句用于定义变量定义变量,该语句

6、指定,该语句指定变量的名称变量的名称和和变量的类型变量的类型,并并为该变量分配存储单元为该变量分配存储单元。(1 1)数据定义语句的格式)数据定义语句的格式 变量名变量名 数据定义符数据定义符 操作数操作数 ,操作数,操作数 ,操作数,操作数 其中,其中,变量名变量名:可选项。:可选项。操作数操作数:赋给变量的初值赋给变量的初值,多个,多个相同类型的变量相同类型的变量可在一条语句可在一条语句中定义。中定义。数据定义符数据定义符 常用数据定义符有以下三种。常用数据定义符有以下三种。DBDB :定义:定义字节变量字节变量,每个变量占有,每个变量占有1 1个字节的存储单元个字节的存储单元。DWDW

7、:定义:定义字变量字变量,每个变量占有,每个变量占有2 2个字节的存储单元个字节的存储单元。DDDD :定义:定义双字变量双字变量,每个变量占有,每个变量占有4 4个字节的存储单元个字节的存储单元。此外,还有此外,还有DQDQ、DFDF和和DTDT等类型。等类型。对于对于多字节变量多字节变量,其变量值的内存存放规则是,其变量值的内存存放规则是,低位字节占低地址低位字节占低地址单元单元,高位字节占高地址单元高位字节占高地址单元。说明:说明:经过定义的变量必然具有以下三个属性。经过定义的变量必然具有以下三个属性。数据类型数据类型 字节、字、双字等等。字节、字、双字等等。偏移地址偏移地址 分配给该变

8、量的存储单元的偏移地址。分配给该变量的存储单元的偏移地址。段基址段基址 分配给该变量的存储单元的段基址,也就是定义该变量的逻辑段的分配给该变量的存储单元的段基址,也就是定义该变量的逻辑段的段基址。段基址。(2 2)数据定义语句的具体形式和功能)数据定义语句的具体形式和功能 根据操作数的不同表达形式根据操作数的不同表达形式 ,常见的数据定义语句有以下几种具体形式。,常见的数据定义语句有以下几种具体形式。操作数是一个数值常量操作数是一个数值常量 例如:例如:X X DB DB 25H 25H ;定义一个名为;定义一个名为 X X、初值为、初值为2525H H的字节变量的字节变量 Y Y DW DW

9、 4142H 4142H ;定义一个名为;定义一个名为 Y Y、初值为、初值为41424142H H的字变量的字变量 Z Z DD DD 12345678H 12345678H ;定义一个名为;定义一个名为 Z Z、初值为、初值为1234567812345678H H的双字变量的双字变量X X2525H HY Y4242H H4141H HZ Z7878H H5656H H3434H H1212H H 汇编时,汇编程序将完成以下工作:汇编时,汇编程序将完成以下工作:首先,定义首先,定义名为名为 X X 的字节变量的字节变量,并为其分配一,并为其分配一个个字节单元字节单元,然后再把初值,然后再把

10、初值25H25H装入该单元中。装入该单元中。随后,定义随后,定义名为名为 Y Y 的字变量的字变量,并为其分配一个,并为其分配一个字单元字单元,然后再把初值,然后再把初值4142H4142H装入该单元中。装入该单元中。最后,定义最后,定义名为名为 Z Z 的双字变量的双字变量,并为其分配一,并为其分配一个个双字单元双字单元,然后再把初值,然后再把初值12345678H12345678H装入该单元中。装入该单元中。操作数是一个数值表达式操作数是一个数值表达式 例如:例如:PORT PORT EQU 80H EQU 80H OUT_PORT DW PORT+1 OUT_PORT DW PORT+1

11、 汇编程序将定义一个汇编程序将定义一个名为名为OUT_PORTOUT_PORT的字类型变量的字类型变量,并为其分配一个,并为其分配一个字字单元单元,然后计算,然后计算数值表达式(数值表达式(PORT+1PORT+1)的数值,并把计算结果的数值,并把计算结果0081H0081H装入装入该单元中。该单元中。OUT_PORTOUT_PORT8181H H0000H H 操作数部分使用问号操作数部分使用问号?例如:例如:A DB A DB?;定义字节变量;定义字节变量A A,并为其分配一个字节单元,并为其分配一个字节单元B DW B DW?;定义字变量;定义字变量B B,并为其分配一个字单元,并为其分

12、配一个字单元 汇编程序只为变量分配存储单元,并不赋予其具体的初值,该变量的汇编程序只为变量分配存储单元,并不赋予其具体的初值,该变量的初值不确定。初值不确定。A AB B 操作数部分是用逗号分隔的若干个操作数操作数部分是用逗号分隔的若干个操作数 例如:例如:TABLE DWTABLE DW 1 1,2 2,3 3TABLETABLE0101H H0000H H0202H H0000H H0303H H0000H H 汇编程序首先定义一个汇编程序首先定义一个名为名为TABLETABLE的字类型的字类型变量变量,并为该变量分配一个,并为该变量分配一个字单元字单元,再将,再将变量初变量初始值始值00

13、01H0001H装入其中。装入其中。然后,再为一个然后,再为一个无名字变量无名字变量分配一个分配一个字单元字单元,并将,并将变量初始值变量初始值0002H0002H装入其中。装入其中。最后,再为一个最后,再为一个无名字变量无名字变量分配一个分配一个字单元字单元,并将,并将变量初始值变量初始值0003H0003H装入其中。装入其中。这个数据定义语句定义了三个变量,第一变量的变量名为这个数据定义语句定义了三个变量,第一变量的变量名为TABLETABLE,其,其它两个变量没有变量名。它两个变量没有变量名。但是由于这三个变量的存储单元但是由于这三个变量的存储单元依次排列依次排列,具有,具有线性存储特性

14、线性存储特性,因此,因此我们可以将这种数据定义语句看成是我们可以将这种数据定义语句看成是数组变量的定义语句数组变量的定义语句,并将,并将第一个变第一个变量的变量名量的变量名TABLETABLE看成是看成是数组变量名数组变量名,将这三个变量看成是该数组的数组,将这三个变量看成是该数组的数组元素。元素。于是各数组元素的访问地址可以用下式来确定。于是各数组元素的访问地址可以用下式来确定。数组元素地址数组元素地址 =数组变量名数组变量名 +数组元素下标值数组元素下标值 *数组元素字节大小数组元素字节大小TABLETABLE0101H H0000H H0202H H0000H H0303H H0000H

15、 HMOV AXMOV AX,TABLE TABLE ;(;(AXAX)=0001H=0001HMOV AXMOV AX,TABLE+1TABLE+1*2 2 ;(;(AXAX)=0002H=0002HMOV AXMOV AX,TABLE+2TABLE+2*2 2 ;(;(AXAX)=0003H=0003H 在定义在定义数组变量数组变量时,可以使用时,可以使用重复操作符重复操作符DUPDUP 来定义各个来定义各个数组元素数组元素,其定义格式如下。其定义格式如下。重复次数重复次数 DUPDUP(操作数(操作数1 1,操作数,操作数N N)这个表达形式的含义是,将这个表达形式的含义是,将括号中的括

16、号中的N N个操作数个操作数,以,以指定的次序指定的次序,重,重复复指定次数指定次数。其中,重复次数字段是。其中,重复次数字段是值为正整数的数值表达式值为正整数的数值表达式 。例如:例如:TABLETABLE DB DB 2 2 DUP DUP(0 0,1 1),),2 2 TABLETABLE DB DB 0 0,1 1,0 0,1 1,2 2 注意:注意:DUPDUP重复操作符可以重复操作符可以嵌套使用嵌套使用,例如以下两式是等价的。,例如以下两式是等价的。TABLETABLE DB 2 DUP DB 2 DUP(2 2 DUP DUP(1 1,2 2),),3 3)TABLETABLE

17、DB 1 DB 1,2 2,1 1,2 2,3 3,1 1,2 2,1 1,2 2,3 3C CD DA AB B 操作数是一个字符串常量操作数是一个字符串常量 例如:例如:STRINGSTRINGDB ABCDEFDB ABCDEF 该语句定义了一个该语句定义了一个字符数组变量字符数组变量STRING STRING。汇编程序将为这个数组变。汇编程序将为这个数组变量分配一个数据区,并将字符串中每一个字符的量分配一个数据区,并将字符串中每一个字符的ASCIIASCII码依次装入到数据码依次装入到数据区的各个字节单元中。区的各个字节单元中。STRINGSTRING4141H H4242H H434

18、3H H4444H HE EF F4545H H4646H HSTRING2STRING2 注意:注意:当当字符串长度字符串长度超过超过两个字符两个字符时,伪指令定义符只能使用时,伪指令定义符只能使用 DBDB 。当当字符串长度字符串长度不超过不超过两个字符两个字符时,伪指令定义符时,伪指令定义符 DBDB、DWDW、DDDD、DQ DQ 等都可以使用,但它们的意义有所不同。等都可以使用,但它们的意义有所不同。例如:例如:STRING1 DB STRING1 DB AB ABSTRING2 DW ABSTRING2 DW ABB BA AA AB BSTRING1STRING14141H H4

19、242H H4242H H4141H HMOV ALMOV AL,STRING1 STRING1 ;(;(ALAL)=41H=41HMOV ALMOV AL,STRING1+1 STRING1+1;(;(ALAL)=42H=42HMOV AXMOV AX,STRING2 STRING2 ;(;(AXAX)=4142H=4142HX XADDR2ADDR2 操作数是一个存储器地址(标号、过程名或变量名)操作数是一个存储器地址(标号、过程名或变量名)例:例:X XDBDB10H10HADDR1ADDR1DWDWX XADDR2ADDR2DDDDX XADDR1ADDR1变量变量X X的偏移地址的低

20、字节的偏移地址的低字节变量变量X X的偏移地址的高字节的偏移地址的高字节变量变量X X的偏移地址的低字节的偏移地址的低字节变量变量X X的偏移地址的高字节的偏移地址的高字节变量变量X X的段基址的低字节的段基址的低字节变量变量X X的段基址的高字节的段基址的高字节1010H H 当操作数是一个当操作数是一个存储器地址存储器地址时,数据时,数据定义符只能使用定义符只能使用 DW DW 或或 DDDD。此时汇编程序将使用此时汇编程序将使用这个存储器地址这个存储器地址的偏移地址(的偏移地址(DWDW)或全地址()或全地址(DDDD)来初始来初始化变量。化变量。全地址的存放格式是,全地址的存放格式是,

21、1616位偏移地址位偏移地址放在低地址单元,放在低地址单元,1616位段地址放在高地址位段地址放在高地址单元。单元。操作数是如下形式的地址表达式操作数是如下形式的地址表达式 标号或变量名标号或变量名 结果为整数的数值表达式结果为整数的数值表达式 这个地址表达式的运算结果仍然表示这个地址表达式的运算结果仍然表示一个标号或变量一个标号或变量,其,其类型属性类型属性和和段基址属性段基址属性与原来的标号或变量相同,只有其与原来的标号或变量相同,只有其偏移量属性偏移量属性产生相应的产生相应的增减。增减。因此,汇编程序对这个表达式的处理完全等同于处理一个存储器地因此,汇编程序对这个表达式的处理完全等同于处

22、理一个存储器地址。数据定义符只能使用址。数据定义符只能使用 DW DW 或或 DDDD,汇编程序将使用这个新存储器地汇编程序将使用这个新存储器地址(地址表达式的运算结果)的址(地址表达式的运算结果)的偏移地址(偏移地址(DWDW)或或 全地址(全地址(DDDD)来初来初始化变量。始化变量。例如:例如:X XDBDB10H10HADDR1ADDR1DWDWX+1X+1ADDR2ADDR2DDDDX+1X+1 汇编第汇编第2 2条语句时,汇编程序将条语句时,汇编程序将存储器地址存储器地址X+1X+1的偏移地址的偏移地址装入到分装入到分配给变量配给变量ADDR1ADDR1的双字节存储单元内。的双字节

23、存储单元内。汇编第汇编第3 3条语句时,汇编程序将条语句时,汇编程序将存储器地址存储器地址X+1X+1的全地址的全地址装入到分配装入到分配给变量给变量ADDR2ADDR2的双字存储单元内。其中的双字存储单元内。其中1616位偏移地址被存放在低字单元位偏移地址被存放在低字单元内,内,1616位段地址被存放在高字单元内。位段地址被存放在高字单元内。操作数是如下形式的数值表达式操作数是如下形式的数值表达式 变量名变量名1 1-变量名变量名2 2 或者或者 标号标号1-1-标号标号2 2 其中,其中,变量名变量名1 1和变量名和变量名2 2:同一逻辑段内定义的两个变量名同一逻辑段内定义的两个变量名。标

24、号标号1 1和标号和标号2 2:同一代码段内定义的两个标号同一代码段内定义的两个标号。同一逻辑段内的两个标号或变量名的相减结果是一个同一逻辑段内的两个标号或变量名的相减结果是一个数值数值,它表示,它表示两者之间相距的字节数两者之间相距的字节数。TABLE2TABLE2LENGTH1LENGTH1LENGTH2LENGTH2TABLE1TABLE10101H H0202H H0303H H0404H H0505H H0606H H0404H H0202H H例如:例如:TABLE1TABLE1 DB 1 DB 1,2 2,3 3,4 4 TABLE2 TABLE2 DB 5 DB 5,6 6 L

25、ENGTH1 DB LENGTH1 DB TABLE2-TABLE1 TABLE2-TABLE1 LENGTH2 DB LENGTH2 DB LENGTH1-TABLE2 LENGTH1-TABLE2 说明:说明:数据定义语句定义了数据定义语句定义了变量的数据类型变量的数据类型,汇编程序可以利用这种,汇编程序可以利用这种隐含的隐含的类型属性类型属性来确定某些指令是来确定某些指令是字指令字指令、还是、还是字节指令字节指令。例如:例如:OPER1 DB OPER1 DB?,?,?OPER2 DW OPER2 DW?,?,?MOV OPER1+1MOV OPER1+1,0 0 ;字节指令;字节指令M

26、OV OPER2+2MOV OPER2+2,0 0 ;字指令;字指令MOV OPER1+1MOV OPER1+1,AL AL ;字节指令;字节指令MOV OPER2+1MOV OPER2+1,AX AX ;字指令;字指令(3 3)分析运算符()分析运算符(SEGSEG、OFFSETOFFSET、TYPETYPE、SIZESIZE、LENGTHLENGTH)分析运算符作用于分析运算符作用于变量或标号变量或标号,运算结果为,运算结果为变量或标号的属性值变量或标号的属性值,其使用格式为:其使用格式为:运算符运算符变量变量/标号标号 SEGSEG和和OFFSETOFFSET运算符运算符 SEGSEG和

27、和OFFSETOFFSET运算分别返回运算分别返回变量或标号的段地址和偏移地址变量或标号的段地址和偏移地址。例如:例如:ARRAY DBARRAY DB 100 100 DUP DUP(0 0);定义;定义字节数组变量字节数组变量ARRAYARRAY MOV AXMOV AX,SEG ARRAYSEG ARRAY ;变量变量ARRAYARRAY的段地址的段地址(AXAX)MOV DXMOV DX,AXAXMOV BXMOV BX,OFFSET ARRAYOFFSET ARRAY ;变量变量ARRAYARRAY的偏移地址的偏移地址(BXBX)MOV ALMOV AL,BXBX TYPETYPE、

28、LENGTH LENGTH 和和SIZESIZE操作符操作符 TYPETYPE操作符操作符返回一个返回一个表示变量类型或标号类型的数值表示变量类型或标号类型的数值。变量的类型值是变量的类型值是变量的字节长度值变量的字节长度值;标号的类型值只起区别作用,;标号的类型值只起区别作用,没有实际物理意义。没有实际物理意义。类型代码类型代码类型值类型值字节变量字节变量BYTEBYTE1 1字变量字变量WORDWORD2 2双字变量双字变量DWORDDWORD4 4标号标号NEARNEAR-1-1(0 0FFHFFH)标号标号FARFAR-2-2(0 0FEHFEH)在在数组变量定义语句数组变量定义语句中

29、,如果第一个操作数项使用中,如果第一个操作数项使用DUPDUP运算符运算符定义,定义,则该数组变量的则该数组变量的LENGTHLENGTH运算结果是运算结果是此此DUPDUP运算符前面的重复次数运算符前面的重复次数,其它一,其它一切情况下,返回切情况下,返回1 1。SIZESIZE运算符的运算结果运算符的运算结果为为TYPETYPE运算结果和运算结果和LENGTHLENGTH运算结果的乘积,运算结果的乘积,表示表示分配给数组变量的字节总数分配给数组变量的字节总数。例如:例如:BUFFER1BUFFER1 DB 100 DUP DB 100 DUP(0 0)BUFFER2 DW 200BUFFE

30、R2 DW 200 DUP DUP(20H20H)BUFFER3 DD 100 DUPBUFFER3 DD 100 DUP(1313)则有:则有:TYPETYPE BUFFER1=1 LENGTH BUFFER1=1 LENGTH BUFFER1=100 SIZE BUFFER1=100 SIZE BUFFER1=100 BUFFER1=100 TYPE TYPE BUFFER2=2 LENGTH BUFFER2=2 LENGTH BUFFER2=200 SIZE BUFFER2=200 SIZE BUFFER2=400 BUFFER2=400 TYPE TYPE BUFFER3=4 LENG

31、TH BUFFER3=4 LENGTH BUFFER3=100 SIZE BUFFER3=100 SIZE BUFFER3=400 BUFFER3=400(4 4)合成运算符()合成运算符(PTRPTR、THIS THIS)合成运算符作用于合成运算符作用于变量或标号变量或标号,对,对原变量或标号的类型属性原变量或标号的类型属性进行修改,进行修改,从而建立起从而建立起一个新的变量或标号一个新的变量或标号。PTR PTR 运算符运算符 该运算符采用该运算符采用原变量或标号的段属性和偏移地址属性原变量或标号的段属性和偏移地址属性,指定一个,指定一个新的新的类型属性类型属性,从而建立起一个,从而建立起

32、一个新的变量或标号新的变量或标号,而,而原变量或标号的类型属性原变量或标号的类型属性不变。不变。例例1 1:ARRAY1 DB 0ARRAY1 DB 0,1 1,2 2,3 3 ;定义字节数组变量;定义字节数组变量ARRAY1ARRAY1 ARRAY2 DW 4 ARRAY2 DW 4,5 5,6 6,1234H 1234H ;定义字数组变量;定义字数组变量ARRAY2ARRAY2 MOV BX MOV BX,WORD PTR ARRAY1 WORD PTR ARRAY1 ;0100H 0100H(BXBX)MOVMOV CL CL,BYTE PTR(ARRAY2+3BYTE PTR(ARRA

33、Y2+3*2)2);34H34H (CLCL)MOVMOV WORD WORD PTR SI PTR SI,4 4 ;0004H 0004H SISI所指向的字单元所指向的字单元 配合配合EQUEQU伪指令,我们可以定义新的变量名伪指令,我们可以定义新的变量名。例如:例如:ARRAY1 DB 0ARRAY1 DB 0,1 1,2 2,3 3 ;定义字节数组变量;定义字节数组变量ARRAY1ARRAY1 ARRAY2 DW 4 ARRAY2 DW 4,5 5,6 6,1234H 1234H ;定义字数组变量;定义字数组变量ARRAY2ARRAY2 W WEQUEQUWORD PTR ARRAY1

34、WORD PTR ARRAY1B BEQUEQUBYTE PTRBYTE PTR ARRAY2 ARRAY2 新变量新变量W W和和B B的段地址和偏移地址分别与的段地址和偏移地址分别与ARRAY1ARRAY1和和ARRAY2ARRAY2相同,只是相同,只是它们的类型已经发生变化。在后面的程序中,可以直接使用这两个新定它们的类型已经发生变化。在后面的程序中,可以直接使用这两个新定义的变量。义的变量。MOVMOVBXBX,W+3W+3;0403H 0403H(BXBX)MOVMOVCLCL,B+6B+6;34H34H (CLCL)THIS THIS 操作符操作符 THISTHIS操作符为操作符为

35、当前存储单元当前存储单元(当前地址计数器所指向的存储单元)设(当前地址计数器所指向的存储单元)设定一个定一个指定类型,指定类型,并与并与EQUEQU伪操作伪操作配合使用,配合使用,建立起一个新的变量或标号建立起一个新的变量或标号。其使用格式如下。其使用格式如下。变量或标号名变量或标号名 EQU THISEQU THIS 类型代码类型代码例:例:B B EQU EQUTHIS BYTETHIS BYTE ARRAY DW ARRAY DW100 DUP100 DUP(?)(?)100100个字的字数组个字的字数组ARRAYARRAY也可以按也可以按200200个字节的字节数组个字节的字节数组B

36、B来使用。来使用。LABELLABEL 伪操作伪操作 LABELLABEL伪操作为伪操作为当前存储单元当前存储单元(当前地址计数器所指向的存储单元)(当前地址计数器所指向的存储单元)定义一个定义一个指定类型的变量或标号指定类型的变量或标号。该操作符常用于设定该操作符常用于设定一个数据块的属性一个数据块的属性,使其具有,使其具有多重名字和属性多重名字和属性,其使用格式如下。其使用格式如下。标号或变量名标号或变量名 LABEL LABEL 类型代码类型代码 例:例:ARRAY1 LABEL WORD ARRAY1 LABEL WORD ;定义一个;定义一个名为名为ARRAY1ARRAY1的字数组变

37、量的字数组变量 ARRAY2 DBARRAY2 DB 1 1,2 2,3 3,4 4 ;定义一个;定义一个名为名为ARRAY2ARRAY2的字节数组变量的字节数组变量 MOV ALMOV AL,ARRAY2ARRAY2 ;01H 01H(ALAL)MOV AXMOV AX,ARRAY1 ARRAY1 ;0201H 0201H(AXAX)ARRAY1ARRAY1和和ARRAYARRAY这两个变量都指向这两个变量都指向同一个数据块同一个数据块,具有,具有相同的段属性相同的段属性和偏移量属性和偏移量属性,但是它们的,但是它们的类型属性类型属性不同。程序员可以根据需要按不同类不同。程序员可以根据需要按

38、不同类型去操作型去操作数据块中的数据数据块中的数据。三、地址计数器与对准伪操作三、地址计数器与对准伪操作 (1 1)地址计数器)地址计数器 地址计数器是一种地址计数器是一种指针部件指针部件,其内容是,其内容是当前逻辑段内某个存储单元当前逻辑段内某个存储单元的段内偏移地址的段内偏移地址。当汇编程序处理一个数据项或一条指令时,汇编程序将把当汇编程序处理一个数据项或一条指令时,汇编程序将把该数据项该数据项或该指令的目标代码或该指令的目标代码存放到存放到地址计数器所指示的存储单元地址计数器所指示的存储单元内。内。当汇编程序处理一个数据项或一条指令时,地址计数器的内容就是当汇编程序处理一个数据项或一条指

39、令时,地址计数器的内容就是存放该数据项或该指令目标代码的存储单元的偏移地址存放该数据项或该指令目标代码的存储单元的偏移地址。地址计数器的工作过程如下。地址计数器的工作过程如下。每当每当开始汇编一个逻辑段开始汇编一个逻辑段时,地址计数器的内容就被初始化为零,时,地址计数器的内容就被初始化为零,表示段内数据或指令目标代码将从表示段内数据或指令目标代码将从段内偏移地址为零的位置段内偏移地址为零的位置处开始存放。处开始存放。当汇编程序把一条指令的目标代码存放到地址计数器所指向的存当汇编程序把一条指令的目标代码存放到地址计数器所指向的存储单元后,地址计数器的内容就增加一个储单元后,地址计数器的内容就增加

40、一个大小为该指令字节数的数值大小为该指令字节数的数值,指,指向向下一条指令将要被存放的位置下一条指令将要被存放的位置。当汇编程序把一个数据项存放到地址计数器所指向的存储单元后,当汇编程序把一个数据项存放到地址计数器所指向的存储单元后,地址计数器的内容增加一个地址计数器的内容增加一个大小为该数据项字节数的数值大小为该数据项字节数的数值,指向,指向下一个数下一个数据项将要被存放的位置据项将要被存放的位置。在汇编过程中,汇编程序所进行的指令代码存放、变量存储单元分配、在汇编过程中,汇编程序所进行的指令代码存放、变量存储单元分配、变量初值装入等工作,正是变量初值装入等工作,正是在地址计数器的引导下在地

41、址计数器的引导下来完成的。来完成的。在汇编语言源程序中,用户可以使用在汇编语言源程序中,用户可以使用符号符号$来表示来表示地址计数器的当前值地址计数器的当前值,表示表示存放当前数据项或当前指令目标代码的存储单元的偏移地址存放当前数据项或当前指令目标代码的存储单元的偏移地址。例例1 1:JNE$+6JNE$+6 地址计数器的当前值地址计数器的当前值$为为存放该指令的存储单元的偏移地址存放该指令的存储单元的偏移地址,因此有,因此有 指令转向地址指令转向地址 =指令的首地址指令的首地址 +6+6 由于该指令是由于该指令是2 2字节指令,因此处理该指令时的字节指令,因此处理该指令时的IPIP当前值为当

42、前值为 IPIP当前值当前值 =指令的首地址指令的首地址 +2+2于是有于是有 位移量位移量 =转向地址转向地址 IPIP当前值当前值 =4=4 该指令的机器代码为:该指令的机器代码为:75 0475 04 例例2 2:假设汇编处理时,变量:假设汇编处理时,变量ARRAYARRAY被分配的偏移地址为被分配的偏移地址为00740074H H,求,求该语句的汇编结果。该语句的汇编结果。ARRAY DW 1ARRAY DW 1,2 2,$+4$+4,3 3,4 4,$+4$+4 解:解:当汇编程序处理第三个数据项(当汇编程序处理第三个数据项($+4$+4)时)时 地址计数器值的当前值地址计数器值的当

43、前值$=0074H$=0074H+2 +2*2=0078H 2=0078H,于是有,于是有$+4=0078H$+4=0078H+4=007CH+4=007CH 当汇编程序处理第六个数据项(当汇编程序处理第六个数据项($+4$+4)时,)时,地址计数器值的当前值地址计数器值的当前值$=0074H$=0074H+2 +2*5=007EH 5=007EH,于是有,于是有$+4=007EH$+4=007EH+4=0082H+4=0082H 因此,原来的语句等效于因此,原来的语句等效于 ARRAY DW 1ARRAY DW 1,2 2,7CH7CH,3 3,4 4,82H82H(2 2)对准伪操作)对准

44、伪操作 对准伪操作都是针对地址计数器的各种操作。对准伪操作都是针对地址计数器的各种操作。1 1)指定地址伪指令()指定地址伪指令(ORGORG)强行指定强行指定地址计数器的当前值地址计数器的当前值,以改变,以改变该指令之后的代码或数据块该指令之后的代码或数据块在在段内存放的偏移地址。段内存放的偏移地址。格式格式1 1:ORG ORG 表达式表达式 功能:功能:直接将直接将表达式的运算结果(表达式的运算结果(0 0 6553565535)送入送入地址计数器地址计数器。格式格式2 2:ORG$ORG$+表达式表达式 功能:功能:将将汇编该语句时的地址计数器当前值汇编该语句时的地址计数器当前值$加上

45、表达式的数值,然后将最加上表达式的数值,然后将最终结果送入地址计数器。终结果送入地址计数器。说明:说明:通过执行通过执行ORGORG伪指令,汇编程序将以(表达式)或(伪指令,汇编程序将以(表达式)或($+$+表达式)的表达式)的运算结果为起点,来存放运算结果为起点,来存放ORGORG语句之后定义的代码或数据语句之后定义的代码或数据。例:例:DATA DATA SEGMENTSEGMENT ORGORG10H10H ;X X DBDB20H20H,30H30H ORGORG$+5$+5 ;Y Y DBDB40H40H,50H50H DATA DATA ENDSENDS 说明:说明:将地址计数器的

46、内容设置为将地址计数器的内容设置为10H10H,即,即从从DATADATA数据段内偏移地址为数据段内偏移地址为10H10H的存储单元的存储单元开始,存放后继数据开始,存放后继数据20H20H和和30H30H。处理该语句时,地址计数器的内容为处理该语句时,地址计数器的内容为12H12H,$+5=12H+5=17H$+5=12H+5=17H,于是该语句将于是该语句将地址计数器的内容设置为地址计数器的内容设置为17H17H,即,即从从DATADATA数据段内偏移地址为数据段内偏移地址为17H17H的存储单元的存储单元开始,存放后继数据开始,存放后继数据40H40H和和50H50H。2 2)EVENE

47、VEN伪操作伪操作 格式:格式:EVENEVEN 功能:功能:将将地址计数器的内容地址计数器的内容设置为设置为大于或等于当前值的最小偶数值大于或等于当前值的最小偶数值,以使,以使后继语句所定义的变量或指令开始于偶数地址。后继语句所定义的变量或指令开始于偶数地址。说明:说明:字数据字数据的地址最好是的地址最好是偶数偶数。为保证。为保证字数组字数组从从偶地址偶地址开始,可以在其开始,可以在其前使用前使用EVENEVEN伪操作伪操作。3 3)ALIGNALIGN伪操作伪操作 格式:格式:ALIGN ALIGN 数值表达式数值表达式(运算结果必须是(运算结果必须是2 2的幂,即的幂,即2 2、4 4、

48、8 8等等)等等)功能:功能:将将地址计数器的内容地址计数器的内容设置为设置为大于或等于当前值大于或等于当前值的最小的的最小的数值表达式运数值表达式运算结果的整数倍值算结果的整数倍值,以使后继语句所定义的变量或指令开始于,以使后继语句所定义的变量或指令开始于字边界、双字边界、双字边界、字边界、4 4字边界等等字边界等等。说明:说明:该伪操作可用于定位该伪操作可用于定位双字数组双字数组、4 4字数组字数组等等操作。等等操作。四、程序分段伪指令语句四、程序分段伪指令语句 程序分段伪指令语句用于指示程序分段伪指令语句用于指示汇编程序和链接程序汇编程序和链接程序如何如何以逻辑段为以逻辑段为基本单位基本

49、单位来来组织程序组织程序和和分配存储器分配存储器。(1 1)段定义伪指令()段定义伪指令(SEGMENT/ENDSSEGMENT/ENDS)段定义伪指令段定义伪指令SEGMENT/ENDSSEGMENT/ENDS用于定义一个用于定义一个逻辑段逻辑段,指出该逻辑段的,指出该逻辑段的段名、段属性以及段的开始和结束位置。段名、段属性以及段的开始和结束位置。格式:格式:段名段名 SEGMENT SEGMENT 定位类型定位类型 组合类型组合类型 类别名类别名 段体段体段名段名 ENDSENDS其中,其中,段名:逻辑段的标识符。在汇编语言源程序中,表示段名:逻辑段的标识符。在汇编语言源程序中,表示链接程

50、序分配链接程序分配给该逻辑段的段基址给该逻辑段的段基址。段体:逻辑段内的汇编语句序列。段体:逻辑段内的汇编语句序列。定位类型、组合类型和类别名:逻辑段的三个属性。定位类型、组合类型和类别名:逻辑段的三个属性。1 1)定位类型)定位类型当编制完成汇编语言源程序后,我们需要继续进行以下处理。当编制完成汇编语言源程序后,我们需要继续进行以下处理。首先使用首先使用汇编程序汇编程序对汇编语言源程序进行汇编处理,得到对汇编语言源程序进行汇编处理,得到目标代码文件目标代码文件(.OBJ.OBJ);其次使用;其次使用链接程序链接程序对目标代码文件进行链接处理,得到对目标代码文件进行链接处理,得到可执行文可执行

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(汇编语言的伪指令语句课件.ppt)为本站会员(ziliao2023)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|