汇编语言的伪指令语句课件.ppt
《汇编语言的伪指令语句课件.ppt》由会员分享,可在线阅读,更多相关《汇编语言的伪指令语句课件.ppt(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 EQU COMPUTERCOMPUTER ;为字符串常量定义一个名字;为字符串常量定义一个名字 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 BETA EQUEQU ALPHA-2 ALPHA-2 ;给;给7-2=57-2=5赋以符号名赋以符号名BETABETAADDR EQU VAR+BETA ADDR EQU VAR+BETA ;给给VAR+5VAR+5赋以符号名赋以符号名ADDRADDR 使用使用EQUEQU伪操作定义过的符号名伪操作定义过的符号名不允许重复定义。不允许重复定义。例如:例如:EMP EMP EQUEQU 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 DBDB 25H25H ;定义一个名为定义一个名为 X X、初值为初值为2525H H的字节变量的字节变量 Y Y DWDW 4142H4142
9、H ;定义一个名为定义一个名为 Y Y、初值为初值为41424142H H的字变量的字变量 Z Z DDDD 12345678H12345678H ;定义一个名为定义一个名为 Z Z、初值为、初值为1234567812345678H H的双字变量的双字变量X X2525H HY Y4242H H4141H HZ Z7878H H5656H H3434H H1212H H 汇编时,汇编程序将完成以下工作:汇编时,汇编程序将完成以下工作:首先,定义首先,定义名为名为 X X 的字节变量的字节变量,并为其分配一,并为其分配一个个字节单元字节单元,然后再把初值,然后再把初值25H25H装入该单元中。装
10、入该单元中。随后,定义随后,定义名为名为 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 TABLE DWDW 1 1,2 2,3 3TABLETABLE0101H H0000H H0202H H0000H H0303H H0000H H 汇编程序首先定义一个汇编程序首先定义一个名为名为TABLETABLE的字类型的字类型变量变量,并为该变量分配一个,并为该变量分配一个字单元字单元,再将,再将变量初变量初始值始值0001H0001H装入其中。装入其中。然后
13、,再为一个然后,再为一个无名字变量无名字变量分配一个分配一个字单元字单元,并将并将变量初始值变量初始值0002H0002H装入其中。装入其中。最后,再为一个最后,再为一个无名字变量无名字变量分配一个分配一个字单元字单元,并将并将变量初始值变量初始值0003H0003H装入其中。装入其中。这个数据定义语句定义了三个变量,第一变量的变量名为这个数据定义语句定义了三个变量,第一变量的变量名为TABLETABLE,其,其它两个变量没有变量名。它两个变量没有变量名。但是由于这三个变量的存储单元但是由于这三个变量的存储单元依次排列依次排列,具有,具有线性存储特性线性存储特性,因此,因此我们可以将这种数据定
14、义语句看成是我们可以将这种数据定义语句看成是数组变量的定义语句数组变量的定义语句,并将,并将第一个变第一个变量的变量名量的变量名TABLETABLE看成是看成是数组变量名数组变量名,将这三个变量看成是该数组的数组,将这三个变量看成是该数组的数组元素。元素。于是各数组元素的访问地址可以用下式来确定。于是各数组元素的访问地址可以用下式来确定。数组元素地址数组元素地址 =数组变量名数组变量名 +数组元素下标值数组元素下标值*数组元素字节大小数组元素字节大小TABLETABLE0101H H0000H H0202H H0000H H0303H H0000H HMOV AXMOV AX,TABLE TA
15、BLE ;(;(AXAX)=0001H=0001HMOV AXMOV AX,TABLE+1*2 TABLE+1*2 ;(;(AXAX)=0002H=0002HMOV AXMOV AX,TABLE+2*2 TABLE+2*2 ;(;(AXAX)=0003H=0003H 在定义在定义数组变量数组变量时,可以使用时,可以使用重复操作符重复操作符DUPDUP 来定义各个来定义各个数组元素数组元素,其定义格式如下。其定义格式如下。重复次数重复次数 DUPDUP(操作数(操作数1 1,操作数,操作数N N)这个表达形式的含义是,将这个表达形式的含义是,将括号中的括号中的N N个操作数个操作数,以,以指定的
16、次序指定的次序,重,重复复指定次数指定次数。其中,重复次数字段是。其中,重复次数字段是值为正整数的数值表达式值为正整数的数值表达式 。例如:例如:TABLETABLE DBDB 2 2 DUP DUP(0 0,1 1),),2 2 TABLETABLE DBDB 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 DB DB 1 1,2 2,1 1,2 2,3
17、 3,1 1,2 2,1 1,2 2,3 3C CD DA AB B 操作数是一个字符串常量操作数是一个字符串常量 例如:例如:STRINGSTRINGDB DB ABCDEFABCDEF 该语句定义了一个该语句定义了一个字符数组变量字符数组变量STRING STRING。汇编程序将为这个数组变量。汇编程序将为这个数组变量分配一个数据区,并将字符串中每一个字符的分配一个数据区,并将字符串中每一个字符的ASCIIASCII码依次装入到数据区的码依次装入到数据区的各个字节单元中。各个字节单元中。STRINGSTRING4141H H4242H H4343H H4444H HE EF F4545H
18、H4646H HSTRING2STRING2 注意:注意:当当字符串长度字符串长度超过超过两个字符两个字符时,伪指令定义符只能使用时,伪指令定义符只能使用 DBDB 。当当字符串长度字符串长度不超过不超过两个字符两个字符时,伪指令定义符时,伪指令定义符 DBDB、DWDW、DDDD、DQ DQ 等都可以使用,但它们的意义有所不同。等都可以使用,但它们的意义有所不同。例如:例如:STRING1 DB STRING1 DB ABABSTRING2 DW STRING2 DW ABABB BA AA AB BSTRING1STRING14141H H4242H H4242H H4141H HMOV
19、ALMOV AL,STRING1 STRING1 ;(;(ALAL)=41H=41HMOV ALMOV AL,STRING1+1 STRING1+1;(;(ALAL)=42H=42HMOV AXMOV AX,STRING2 STRING2 ;(;(AXAX)=4142H4142HX XADDR2ADDR2 操作数是一个存储器地址(标号、过程名或变量名)操作数是一个存储器地址(标号、过程名或变量名)例:例:X XDBDB10H10HADDR1ADDR1DWDWX XADDR2ADDR2DDDDX XADDR1ADDR1变量变量X X的偏移地址的低字节的偏移地址的低字节变量变量X X的偏移地址的高
20、字节的偏移地址的高字节变量变量X X的偏移地址的低字节的偏移地址的低字节变量变量X X的偏移地址的高字节的偏移地址的高字节变量变量X X的段基址的低字节的段基址的低字节变量变量X X的段基址的高字节的段基址的高字节1010H H 当操作数是一个当操作数是一个存储器地址存储器地址时,数据时,数据定义符只能使用定义符只能使用 DW DW 或或 DDDD。此时汇编程序将使用此时汇编程序将使用这个存储器地址这个存储器地址的偏移地址(的偏移地址(DWDW)或全地址()或全地址(DDDD)来初始来初始化变量。化变量。全地址的存放格式是,全地址的存放格式是,1616位偏移地址位偏移地址放在低地址单元,放在低
21、地址单元,1616位段地址放在高地址位段地址放在高地址单元。单元。操作数是如下形式的地址表达式操作数是如下形式的地址表达式 标号或变量名标号或变量名 结果为整数的数值表达式结果为整数的数值表达式 这个地址表达式的运算结果仍然表示这个地址表达式的运算结果仍然表示一个标号或变量一个标号或变量,其,其类型属性类型属性和和段基址属性段基址属性与原来的标号或变量相同,只有其与原来的标号或变量相同,只有其偏移量属性偏移量属性产生相应的产生相应的增减。增减。因此,汇编程序对这个表达式的处理完全等同于处理一个存储器地因此,汇编程序对这个表达式的处理完全等同于处理一个存储器地址。数据定义符只能使用址。数据定义符
22、只能使用 DW DW 或或 DDDD,汇编程序将使用这个新存储器地址汇编程序将使用这个新存储器地址(地址表达式的运算结果)的(地址表达式的运算结果)的偏移地址(偏移地址(DWDW)或或 全地址(全地址(DDDD)来初始化来初始化变量。变量。例如:例如:X XDBDB10H10HADDR1ADDR1DWDWX+1X+1ADDR2ADDR2DDDDX+1X+1 汇编第汇编第2 2条语句时,汇编程序将条语句时,汇编程序将存储器地址存储器地址X+1X+1的偏移地址的偏移地址装入到分装入到分配给变量配给变量ADDR1ADDR1的双字节存储单元内。的双字节存储单元内。汇编第汇编第3 3条语句时,汇编程序将
23、条语句时,汇编程序将存储器地址存储器地址X+1X+1的全地址的全地址装入到分配装入到分配给变量给变量ADDR2ADDR2的双字存储单元内。其中的双字存储单元内。其中1616位偏移地址被存放在低字单元内,位偏移地址被存放在低字单元内,1616位段地址被存放在高字单元内。位段地址被存放在高字单元内。操作数是如下形式的数值表达式操作数是如下形式的数值表达式 变量名变量名1 1-变量名变量名2 2 或者或者 标号标号1-1-标号标号2 2 其中,其中,变量名变量名1 1和变量名和变量名2 2:同一逻辑段内定义的两个变量名同一逻辑段内定义的两个变量名。标号标号1 1和标号和标号2 2:同一代码段内定义的
24、两个标号同一代码段内定义的两个标号。同一逻辑段内的两个标号或变量名的相减结果是一个同一逻辑段内的两个标号或变量名的相减结果是一个数值数值,它表示,它表示两者之间相距的字节数两者之间相距的字节数。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 LENGTH1 DB LENGTH1 DB TABL
25、E2-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 ;字节指令字节指令MOV OPER2+2MOV OPER2+2,0 0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 指令 语句 课件
限制150内