欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

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

    • 资源ID:74025888       资源大小:351.51KB        全文页数:104页
    • 资源格式: PPT        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    (三)(三)汇编语言的伪指令语句汇编语言的伪指令语句一、符号定义伪指令语句一、符号定义伪指令语句 为一个为一个表达式表达式或或指令助记符指令助记符赋予一个赋予一个符号名符号名。在后继程序文本中,可。在后继程序文本中,可以使用该符号名来替代这个表达式或指令助记符。以使用该符号名来替代这个表达式或指令助记符。(1 1)等值语句)等值语句 EQUEQU 格式:格式:符号名符号名EQUEQU表达式表达式/指令助记符指令助记符例如:例如:PORT1PORT1EQU 312EQU 312 ;为数值常量;为数值常量312312赋予符号名赋予符号名PORT1PORT1 PORT2 PORT2EQU PORT1+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语句的表达式语句的表达式中,如果有中,如果有标号名标号名或或变量名变量名,则该语句必须,则该语句必须放在它们的定义语句之后。放在它们的定义语句之后。例如例如AB EQU DATA+2AB EQU DATA+2必须放在必须放在标识符标识符DATADATA的定义之后,否则汇编程序将指示以下错误的定义之后,否则汇编程序将指示以下错误:Symbol not defined:DATASymbol not defined:DATA 后面的后面的EQUEQU伪操作伪操作可以利用可以利用前面的前面的EQUEQU伪操作已经定义的符号名伪操作已经定义的符号名。例如:例如:ALPHA EQU 7 ALPHA EQU 7 ;给数值;给数值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 ;汇编该语句时,汇编程序将指示出错汇编该语句时,汇编程序将指示出错。(2 2)等号语句)等号语句 =格式:格式:符号名符号名 =表达式表达式/指令助记符指令助记符 该语句的功能与该语句的功能与EQUEQU完全相同,唯一的区别是:完全相同,唯一的区别是:该语句可以对符号名进该语句可以对符号名进行重复定义行重复定义。例如:例如:EMP EMP =0 0 ;定义符号名定义符号名EMPEMP为为0 0EMP =EMP+1EMP =EMP+1 ;重新定义符号名;重新定义符号名EMPEMP为为1 1,完全合法。,完全合法。二、数据定义伪指令语句二、数据定义伪指令语句 数据定义语句用于数据定义语句用于定义变量定义变量,该语句指定,该语句指定变量的名称变量的名称和和变量的类型变量的类型,并并为该变量分配存储单元为该变量分配存储单元。(1 1)数据定义语句的格式)数据定义语句的格式 变量名变量名 数据定义符数据定义符 操作数操作数 ,操作数,操作数 ,操作数,操作数 其中,其中,变量名变量名:可选项。:可选项。操作数操作数:赋给变量的初值赋给变量的初值,多个,多个相同类型的变量相同类型的变量可在一条语句中可在一条语句中定义。定义。数据定义符数据定义符 常用数据定义符有以下三种。常用数据定义符有以下三种。DBDB :定义:定义字节变量字节变量,每个变量占有,每个变量占有1 1个字节的存储单元个字节的存储单元。DWDW :定义定义字变量字变量,每个变量占有,每个变量占有2 2个字节的存储单元个字节的存储单元。DDDD :定义定义双字变量双字变量,每个变量占有,每个变量占有4 4个字节的存储单元个字节的存储单元。此外,还有此外,还有DQDQ、DFDF和和DTDT等等类型。类型。对于对于多字节变量多字节变量,其变量值的内存存放规则是,其变量值的内存存放规则是,低位字节占低地址低位字节占低地址单元单元,高位字节占高地址单元高位字节占高地址单元。说明:说明:经过定义的变量必然具有以下三个属性。经过定义的变量必然具有以下三个属性。数据类型数据类型 字节、字、双字等等。字节、字、双字等等。偏移地址偏移地址 分配给该变量的存储单元的偏移地址。分配给该变量的存储单元的偏移地址。段基址段基址 分配给该变量的存储单元的段基址,也就是定义该变量的逻辑段的分配给该变量的存储单元的段基址,也就是定义该变量的逻辑段的段基址。段基址。(2 2)数据定义语句的具体形式和功能)数据定义语句的具体形式和功能 根据操作数的不同表达形式根据操作数的不同表达形式 ,常见的数据定义语句有以下几种具体形式。,常见的数据定义语句有以下几种具体形式。操作数是一个数值常量操作数是一个数值常量 例如:例如:X X DBDB 25H25H ;定义一个名为定义一个名为 X X、初值为初值为2525H H的字节变量的字节变量 Y Y DWDW 4142H4142H ;定义一个名为定义一个名为 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装入该单元中。装入该单元中。随后,定义随后,定义名为名为 Y Y 的字变量的字变量,并为其分配一个,并为其分配一个字单元字单元,然后再把初值,然后再把初值4142H4142H装入该单元中。装入该单元中。最后,定义最后,定义名为名为 Z Z 的双字变量的双字变量,并为其分配一,并为其分配一个个双字单元双字单元,然后再把初值,然后再把初值12345678H12345678H装入该单元中。装入该单元中。操作数是一个数值表达式操作数是一个数值表达式 例如:例如:PORT PORT EQU 80H EQU 80H OUT_PORT DW PORT+1 OUT_PORT DW PORT+1 汇编程序将定义一个汇编程序将定义一个名为名为OUT_PORTOUT_PORT的字类型变量的字类型变量,并为其分配一个,并为其分配一个字字单元单元,然后计算,然后计算数值表达式(数值表达式(PORT+1PORT+1)的数值,并把计算结果的数值,并把计算结果0081H0081H装入装入该单元中。该单元中。OUT_PORTOUT_PORT8181H H0000H H 操作数部分使用问号操作数部分使用问号?例如:例如:A DB A DB?;定义字节变量定义字节变量A A,并为其分配一个字节单元并为其分配一个字节单元B DW B DW?;定义字变量定义字变量B B,并为其分配一个字单元并为其分配一个字单元 汇编程序只为变量分配存储单元,并不赋予其具体的初值,该变量的汇编程序只为变量分配存储单元,并不赋予其具体的初值,该变量的初值不确定。初值不确定。A AB B 操作数部分是用逗号分隔的若干个操作数操作数部分是用逗号分隔的若干个操作数 例如:例如:TABLE TABLE DWDW 1 1,2 2,3 3TABLETABLE0101H H0000H H0202H H0000H H0303H H0000H H 汇编程序首先定义一个汇编程序首先定义一个名为名为TABLETABLE的字类型的字类型变量变量,并为该变量分配一个,并为该变量分配一个字单元字单元,再将,再将变量初变量初始值始值0001H0001H装入其中。装入其中。然后,再为一个然后,再为一个无名字变量无名字变量分配一个分配一个字单元字单元,并将并将变量初始值变量初始值0002H0002H装入其中。装入其中。最后,再为一个最后,再为一个无名字变量无名字变量分配一个分配一个字单元字单元,并将并将变量初始值变量初始值0003H0003H装入其中。装入其中。这个数据定义语句定义了三个变量,第一变量的变量名为这个数据定义语句定义了三个变量,第一变量的变量名为TABLETABLE,其,其它两个变量没有变量名。它两个变量没有变量名。但是由于这三个变量的存储单元但是由于这三个变量的存储单元依次排列依次排列,具有,具有线性存储特性线性存储特性,因此,因此我们可以将这种数据定义语句看成是我们可以将这种数据定义语句看成是数组变量的定义语句数组变量的定义语句,并将,并将第一个变第一个变量的变量名量的变量名TABLETABLE看成是看成是数组变量名数组变量名,将这三个变量看成是该数组的数组,将这三个变量看成是该数组的数组元素。元素。于是各数组元素的访问地址可以用下式来确定。于是各数组元素的访问地址可以用下式来确定。数组元素地址数组元素地址 =数组变量名数组变量名 +数组元素下标值数组元素下标值*数组元素字节大小数组元素字节大小TABLETABLE0101H H0000H H0202H H0000H H0303H H0000H HMOV AXMOV AX,TABLE TABLE ;(;(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个操作数个操作数,以,以指定的次序指定的次序,重,重复复指定次数指定次数。其中,重复次数字段是。其中,重复次数字段是值为正整数的数值表达式值为正整数的数值表达式 。例如:例如: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 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 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 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的偏移地址的高字节的偏移地址的高字节变量变量X X的偏移地址的低字节的偏移地址的低字节变量变量X X的偏移地址的高字节的偏移地址的高字节变量变量X X的段基址的低字节的段基址的低字节变量变量X X的段基址的高字节的段基址的高字节1010H H 当操作数是一个当操作数是一个存储器地址存储器地址时,数据时,数据定义符只能使用定义符只能使用 DW DW 或或 DDDD。此时汇编程序将使用此时汇编程序将使用这个存储器地址这个存储器地址的偏移地址(的偏移地址(DWDW)或全地址()或全地址(DDDD)来初始来初始化变量。化变量。全地址的存放格式是,全地址的存放格式是,1616位偏移地址位偏移地址放在低地址单元,放在低地址单元,1616位段地址放在高地址位段地址放在高地址单元。单元。操作数是如下形式的地址表达式操作数是如下形式的地址表达式 标号或变量名标号或变量名 结果为整数的数值表达式结果为整数的数值表达式 这个地址表达式的运算结果仍然表示这个地址表达式的运算结果仍然表示一个标号或变量一个标号或变量,其,其类型属性类型属性和和段基址属性段基址属性与原来的标号或变量相同,只有其与原来的标号或变量相同,只有其偏移量属性偏移量属性产生相应的产生相应的增减。增减。因此,汇编程序对这个表达式的处理完全等同于处理一个存储器地因此,汇编程序对这个表达式的处理完全等同于处理一个存储器地址。数据定义符只能使用址。数据定义符只能使用 DW DW 或或 DDDD,汇编程序将使用这个新存储器地址汇编程序将使用这个新存储器地址(地址表达式的运算结果)的(地址表达式的运算结果)的偏移地址(偏移地址(DWDW)或或 全地址(全地址(DDDD)来初始化来初始化变量。变量。例如:例如:X XDBDB10H10HADDR1ADDR1DWDWX+1X+1ADDR2ADDR2DDDDX+1X+1 汇编第汇编第2 2条语句时,汇编程序将条语句时,汇编程序将存储器地址存储器地址X+1X+1的偏移地址的偏移地址装入到分装入到分配给变量配给变量ADDR1ADDR1的双字节存储单元内。的双字节存储单元内。汇编第汇编第3 3条语句时,汇编程序将条语句时,汇编程序将存储器地址存储器地址X+1X+1的全地址的全地址装入到分配装入到分配给变量给变量ADDR2ADDR2的双字存储单元内。其中的双字存储单元内。其中1616位偏移地址被存放在低字单元内,位偏移地址被存放在低字单元内,1616位段地址被存放在高字单元内。位段地址被存放在高字单元内。操作数是如下形式的数值表达式操作数是如下形式的数值表达式 变量名变量名1 1-变量名变量名2 2 或者或者 标号标号1-1-标号标号2 2 其中,其中,变量名变量名1 1和变量名和变量名2 2:同一逻辑段内定义的两个变量名同一逻辑段内定义的两个变量名。标号标号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 LENGTH1 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 ;字节指令字节指令MOV 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和和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、LENGTH LENGTH 和和SIZESIZE操作符操作符 TYPETYPE操作符操作符返回一个返回一个表示变量类型或标号类型的数值表示变量类型或标号类型的数值。变量的类型值是变量的类型值是变量的字节长度值变量的字节长度值;标号的类型值只起区别作用,;标号的类型值只起区别作用,没有实际物理意义。没有实际物理意义。类型代码类型代码类型值类型值字节变量字节变量BYTEBYTE1 1字变量字变量WORDWORD2 2双字变量双字变量DWORDDWORD4 4标号标号NEARNEAR-1 1(0 0FFHFFH)标号标号FARFAR-2 2(0 0FEHFEH)在在数组变量定义语句数组变量定义语句中,如果第一个操作数项使用中,如果第一个操作数项使用DUPDUP运算符运算符定义,定义,则该数组变量的则该数组变量的LENGTHLENGTH运算结果是运算结果是此此DUPDUP运算符前面的重复次数运算符前面的重复次数,其它一,其它一切情况下,返回切情况下,返回1 1。SIZESIZE运算符的运算结果运算符的运算结果为为TYPETYPE运算结果和运算结果和LENGTHLENGTH运算结果的乘积,运算结果的乘积,表示表示分配给数组变量的字节总数分配给数组变量的字节总数。例如:例如:BUFFER1BUFFER1 DB 100 DUP DB 100 DUP(0 0)BUFFER2 DW BUFFER2 DW 200 200 DUP DUP(20H20H)BUFFER3 DD 100 DUPBUFFER3 DD 100 DUP(1313)则有:则有:TYPETYPE BUFFER1=1 LENGTHBUFFER1=1 LENGTH BUFFER1=BUFFER1=100 SIZE100 SIZE BUFFER1=100 BUFFER1=100 TYPETYPE BUFFER2=2 BUFFER2=2 LENGTHLENGTH BUFFER2=200 BUFFER2=200 SIZESIZE BUFFER2=400 BUFFER2=400 TYPETYPE BUFFER3=4 BUFFER3=4 LENGTHLENGTH BUFFER3=100 BUFFER3=100 SIZESIZE BUFFER3=400 BUFFER3=400(4 4)合成运算符()合成运算符(PTRPTR、THIS THIS)合成运算符作用于合成运算符作用于变量或标号变量或标号,对,对原变量或标号的类型属性原变量或标号的类型属性进行修改,进行修改,从而建立起从而建立起一个新的变量或标号一个新的变量或标号。PTR PTR 运算符运算符 该运算符采用该运算符采用原变量或标号的段属性和偏移地址属性原变量或标号的段属性和偏移地址属性,指定一个,指定一个新的新的类型属性类型属性,从而建立起一个,从而建立起一个新的变量或标号新的变量或标号,而,而原变量或标号的类型属性原变量或标号的类型属性不变。不变。例例1 1:ARRAY1 DB 0ARRAY1 DB 0,1 1,2 2,3 3 ;定义字节数组变量;定义字节数组变量ARRAY1ARRAY1 ARRAY2 DW 4ARRAY2 DW 4,5 5,6 6,1234H 1234H ;定义字数组变量;定义字数组变量ARRAY2ARRAY2 MOV BXMOV BX,WORD PTR WORD PTR ARRAY1 ARRAY1 ;0100H 0100H(BXBX)MOVMOV CLCL,BYTE PTR BYTE PTR(ARRAY2+3*2)(ARRAY2+3*2);34H34H (CLCL)MOVMOV WORDWORD 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 ARRAY1WORD PTR ARRAY1B BEQUEQUBYTE BYTE PTRPTR ARRAY2ARRAY2 新变量新变量W W和和B B的段地址和偏移地址分别与的段地址和偏移地址分别与ARRAY1ARRAY1和和ARRAY2ARRAY2相同,只是相同,只是它们的类型已经发生变化。在后面的程序中,可以直接使用这两个新定它们的类型已经发生变化。在后面的程序中,可以直接使用这两个新定义的变量。义的变量。MOVMOVBXBX,W+3W+3;0403H 0403H(BXBX)MOVMOVCLCL,B+6B+6;34H34H (CLCL)THIS THIS 操作符操作符 THISTHIS操作符为操作符为当前存储单元当前存储单元(当前地址计数器所指向的存储单元)设(当前地址计数器所指向的存储单元)设定一个定一个指定类型,指定类型,并与并与EQUEQU伪操作伪操作配合使用,配合使用,建立起一个新的变量或标号建立起一个新的变量或标号。其使用格式如下。其使用格式如下。变量或标号名变量或标号名 EQU THISEQU THIS 类型代码类型代码例:例:B B EQU EQUTHIS BYTETHIS BYTE ARRAY DW ARRAY DW100 DUP100 DUP(?)(?)100100个字的字数组个字的字数组ARRAYARRAY也可以按也可以按200200个字节的字节数组个字节的字节数组B B来使用。来使用。LABELLABEL 伪操作伪操作 LABELLABEL伪操作为伪操作为当前存储单元当前存储单元(当前地址计数器所指向的存储单元)定(当前地址计数器所指向的存储单元)定义一个义一个指定类型的变量或标号指定类型的变量或标号。该操作符常用于设定该操作符常用于设定一个数据块的属性一个数据块的属性,使其具有,使其具有多重名字和属性多重名字和属性,其使用格式如下。其使用格式如下。标号或变量名标号或变量名 LABEL LABEL 类型代码类型代码 例:例:ARRAY1 LABEL WORD ARRAY1 LABEL WORD ;定义一个;定义一个名为名为ARRAY1ARRAY1的字数组变量的字数组变量 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这两个变量都指向这两个变量都指向同一个数据块同一个数据块,具有,具有相同的段属性和相同的段属性和偏移量属性偏移量属性,但是它们的,但是它们的类型属性类型属性不同。程序员可以根据需要按不同类型不同。程序员可以根据需要按不同类型去操作去操作数据块中的数据数据块中的数据。三、地址计数器与对准伪操作三、地址计数器与对准伪操作 (1 1)地址计数器)地址计数器 地址计数器是一种地址计数器是一种指针部件指针部件,其内容是,其内容是当前逻辑段内某个存储单元当前逻辑段内某个存储单元的段内偏移地址的段内偏移地址。当汇编程序处理一个数据项或一条指令时,汇编程序将把当汇编程序处理一个数据项或一条指令时,汇编程序将把该数据项该数据项或该指令的目标代码或该指令的目标代码存放到存放到地址计数器所指示的存储单元地址计数器所指示的存储单元内。内。当汇编程序处理一个数据项或一条指令时,地址计数器的内容就是当汇编程序处理一个数据项或一条指令时,地址计数器的内容就是存放该数据项或该指令目标代码的存储单元的偏移地址存放该数据项或该指令目标代码的存储单元的偏移地址。地址计数器的工作过程如下。地址计数器的工作过程如下。每当每当开始汇编一个逻辑段开始汇编一个逻辑段时,地址计数器的内容就被初始化为零,时,地址计数器的内容就被初始化为零,表示段内数据或指令目标代码将从表示段内数据或指令目标代码将从段内偏移地址为零的位置段内偏移地址为零的位置处开始存放。处开始存放。当汇编程序把一条指令的目标代码存放到地址计数器所指向的存储当汇编程序把一条指令的目标代码存放到地址计数器所指向的存储单元后,地址计数器的内容就增加一个单元后,地址计数器的内容就增加一个大小为该指令字节数的数值大小为该指令字节数的数值,指向,指向下一条指令将要被存放的位置下一条指令将要被存放的位置。当汇编程序把一个数据项存放到地址计数器所指向的存储单元后,当汇编程序把一个数据项存放到地址计数器所指向的存储单元后,地址计数器的内容增加一个地址计数器的内容增加一个大小为该数据项字节数的数值大小为该数据项字节数的数值,指向,指向下一个数下一个数据项将要被存放的位置据项将要被存放的位置。在汇编过程中,汇编程序所进行的指令代码存放、变量存储单元分配、在汇编过程中,汇编程序所进行的指令代码存放、变量存储单元分配、变量初值装入等工作,正是变量初值装入等工作,正是在地址计数器的引导下在地址计数器的引导下来完成的。来完成的。在汇编语言源程序中,用户可以使用在汇编语言源程序中,用户可以使用符号符号$来表示来表示地址计数器的当前值地址计数器的当前值,表示表示存放当前数据项或当前指令目标代码的存储单元的偏移地址存放当前数据项或当前指令目标代码的存储单元的偏移地址。例例1 1:JNE JNE$+6$+6 地址计数器的当前值地址计数器的当前值$为为存放该指令的存储单元的偏移地址存放该指令的存储单元的偏移地址,因此有,因此有 指令转向地址指令转向地址 =指令的首地址指令的首地址 +6+6 由于该指令是由于该指令是2 2字节指令,因此处理该指令时的字节指令,因此处理该指令时的IPIP当前值为当前值为 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)时)时 地址计数器值的当前值地址计数器值的当前值$=0074H$=0074H+2*2=+2*2=0078H0078H,于是有,于是有$+4=0078H$+4=0078H+4=+4=007CH007CH 当汇编程序处理第六个数据项(当汇编程序处理第六个数据项($+4$+4)时,)时,地址计数器值的当前值地址计数器值的当前值$=0074H$=0074H+2*5=+2*5=007EH007EH,于是有,于是有$+4=007EH$+4=007EH+4=+4=0082H0082H 因此,原来的语句等效于因此,原来的语句等效于 ARRAY DW 1ARRAY DW 1,2 2,7CH7CH,3 3,4 4,82H82H(2 2)对准伪操作)对准伪操作 对准伪操作都是针对地址计数器的各种操作。对准伪操作都是针对地址计数器的各种操作。1 1)指定地址伪指令()指定地址伪指令(ORGORG)强行指定强行指定地址计数器的当前值地址计数器的当前值,以改变,以改变该指令之后的代码或数据块该指令之后的代码或数据块在在段内存放的偏移地址。段内存放的偏移地址。格式格式1 1:ORG ORG 表达式表达式 功能:功能:直接将直接将表达式的运算结果(表达式的运算结果(0 0 6553565535)送入送入地址计数器地址计数器。格式格式2 2:ORG$ORG$+表达式表达式 功能:功能:将将汇编该语句时的地址计数器当前值汇编该语句时的地址计数器当前值$加上表达式的数值,然后将最加上表达式的数值,然后将最终结果送入地址计数器。终结果送入地址计数器。说明:说明:通过执行通过执行ORGORG伪指令,汇编程序将以(表达式)或(伪指令,汇编程序将以(表达式)或($+$+表达式)的表达式)的运算结果为起点,来存放运算结果为起点,来存放ORGORG语句之后定义的代码或数据语句之后定义的代码或数据。例:例:DATA DATA SEGMENTSEGMENT ORGORG10H10H ;X X DBDB20H20H,30H30H ORGORG$+5$+5 ;Y Y DBDB40H40H,50H50H DATA DATA ENDSENDS 说明:说明:将地址计数器的内容设置为将地址计数器的内容设置为10H10H,即,即从从DATADATA数据段内偏移地址为数据段内偏移地址为10H10H的存储单元的存储单元开始,存放后继数据开始,存放后继数据20H20H和和30H30H。处理该语句时,地址计数器的内容为处理该语句时,地址计数器的内容为12H12H,$+5=12H+5=17H$+5=12H+5=17H,于是该语句将于是该语句将地址计数器的内容设置为地址计数器的内容设置为17H17H,即,即从从DATADATA数据段内偏移地址为数据段内偏移地址为17H17H的存储单元的存储单元开始,存放后继数据开始,存放后继数据40H40H和和50H50H。2 2)EVENEVEN伪操作伪操作 格式:格式:EVENEVEN 功能:功能:将将地地址址计计数数器器的的内内容容设设置置为为大大于于或或等等于于当当前前值值的的最最小小偶偶数数值值,以以使使后继语句所定义的变量或指令开始于偶数地址。后继语句所定义的变量或指令开始于偶数地址。说明:说明:字字数数据据的的地地址址最最好好是是偶偶数数。为为保保证证字字数数组组从从偶偶地地址址开开始始,可可以以在在其其前使用前使用EVENEVEN伪操作伪操作。3 3)ALIGNALIGN伪操作伪操作 格式:格式:ALIGN ALIGN 数值表达式数值表达式(运算结果必须是(运算结果必须是2 2的幂,即的幂,即2 2、4 4、8 8等等)等等)功能:功能:将将地地址址计计数数器器的的内内容容设设置置为为大大于于或或等等于于当当前前值值的的最最小小的的数数值值表表达达式式运运算算结结果果的的整整数数倍倍值值,以以使使后后继继语语句句所所定定义义的的变变量量或或指指令令开开始始于于字字边边界界、双双字边界、字边界、4 4字边界等等字边界等等。说明:说明:该伪操作可用于定位该伪操作可用于定位双字数组双字数组、4 4字数组字数组等等操作。等等操作。四、程序分段伪指令语句四、程序分段伪指令语句 程序分段伪指令语句用于指示程序分段伪指令语句用于指示汇编程序和链接程序汇编程序和链接程序如何如何以逻辑段为以逻辑段为基本单位基本单位来来组织程序组织程序和和分配存储器分配存储器。(1 1)段定义伪指令()段定义伪指令(SEGMENT/ENDSSEGMENT/ENDS)段定义伪指令段定义伪指令SEGMENT/ENDSSEGMENT/ENDS用于定义一个用于定义一个逻辑段逻辑段,指出该逻辑段的,指出该逻辑段的段名、段属性以及段的开始和结束位置。段名、段属性以及段的开始和结束位置。格式:格式:段名段名 SEGMENT SEGMENT 定位类型定位类型 组合类型组合类型 类别名类别名 段体段体段名段名 ENDSENDS其中,其中,段名:逻辑段的标识符。在汇编语言源程序中,表示段名:逻辑段的标识符。在汇编语言源程序中,表示链接程序分配链接程序分配给该逻辑段的段基址给该逻辑段的段基址。段体:逻辑段内的汇编语句序列。段体:逻辑段内的汇编语句序列。定位类型、组合类型和类别名:逻辑段的三个属性。定位类型、组合类型和类别名:逻辑段的三个属性。1 1)定位类型)定位类型当编制完成汇编语言源程序后,我们需要继续进行以下处理。当编制完成汇编语言源程序后,我们需要继续进行以下处理。首先使用首先使用汇编程序汇编程序对汇编语言源程序进行汇编处理,得到对汇编语言源程序进行汇编处理,得到目标代码文件目标代码文件(.OBJ.OBJ);其次使用;其次使用链接程序链接程序对目标代码文件进行链接处理,得到对目标代码文件进行链接处理,得到可执行文可执行文件(件(.EXE.EXE)。这个可执行文件就是可以在操作系统中运行的可执行程序。这个可执

    注意事项

    本文(汇编语言的伪指令语句课件.ppt)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开