资源描述:
《汇编语言的表达式》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、3.3汇编语言的表达式汇编语句中的数据(常数、变量、标号)都可以用表达式给出;表达式的运算在汇编阶段由汇编程序进行运算并将结果当作操作数;MASM允许使用的表达式分为:数值表达式:结果是一个数值;地址表达式:结果是一个存储器的地址。MASM表达式由运算符号和运算对象组成。运算符号分六大类:算术运算符(7个)逻辑运算符(4个)关系运算符(6个)分解运算符(5个)修改属性运算符其他运算符参加表达式运算的运算对象可以是常数,也可以是变量或标号。3.3.1算术运算符有加(+)、减(-)、乘(*)、除(/)、模除(MOD)、左移(SHL)和右移(SHR)
2、等七种;运算对象和运算结果都必须是整数;除法运算的结果只取商;模除运算的结果只取余数;MOVAH,2+6MOVAH,08HMOVCL,33/5MOVCL,06HMOVDL,23MOD5MOVDL,03HMOVBL,00001010BSHL4MOVBL,10100000BMOVAH,0110BSHR5MOVAH,0000B1E上述表达式运算是否影响FLAGS?3.3.2逻辑运算符包括逻辑非、逻辑与、逻辑或和逻辑异或四种。逻辑运算符与指令系统中的逻辑运算指令的符号相同,功能相近。区别:表达式中的逻辑运算不影响标志位;表达式中的逻辑运算由汇
3、编程序在汇编阶段完成;逻辑运算指令由CPU在程序执行阶段完成。MOVAL,NOT00110011BMOVAL,11001100BMOVBL,11110000BAND10111101BMOVBL,10110000BMOVAH,10100000BOR00000101BMOVAH,10100101BMOVBH,10101011BXOR10100100BMOVBH,00001111B2E3.3.3关系运算符包括相等EQ、不等NE、小于LT、不大于LE、大于GT、不小于GE六种运算;关系运算符是对两个运算对象进行比较操作:若满足条件,结果为TRU
4、E,输出结果为全1;若不满足条件,结果为FALSE,输出结果为全0。例:MOVAX,5EQ101BMOVAX,0FFFFHMOVBH,10HGT16MOVBH,00HL:lessG:greaterE:equalN:not3E3.3.4分解运算符(分析运算符)例:MOVAX,SEGA;将变量A所在段的段地址值送AXMOVBX,OFFSETA;将变量A的偏移地址值送BX从变量或标号中分解出某些属性值1.SEG运算符格式:SEG变量或标号功能:计算变量或标号的段地址。2.OFFSET运算符格式:OFFSET变量或标号功能:计算变量或标号的段内偏移
5、地址。3.TYPE运算符格式:TYPE变量或标号功能:计算变量或标号的类型值。类型名称定义符号类型值字节变量DB1字变量DW2双字变量DD4长字变量DQ810字节变量DT10近NEAR-1(FFH)远FAR-2(FEH)例A1DB21H,42HA2DW3412HA3DD?ALOP:MOVAL,TYPEA1MOVBL,TYPEA2MOVAH,TYPEA3MOVDL,TYPEALOP等效于:ALOP:MOVAL,1MOVBL,2MOVAH,4MOVDL,0FFH例子:FEESDW100DUP(0)ARRAYDW1,2,3………MOVCX,LENGT
6、HFEESMOVBX,LENGTHARRAY等效于:MOVCX,100MOVBX,14.LENGTH运算符格式:LENGTH变量功能:对于使用DUP定义的变量,计算分配给该变量的单元数,其他变量的LENGTH值为1。1当变量为DUP定义且DUP括号内为单项数据时,下列关系成立:SIZE=LENGTH*TYPE2否则size和length的值无意义。5.SIZE运算符格式:SIZE变量功能:计算分配给该变量的字节数。例P1DB10DUP(0)P2DW20DUP(?)BB:MOVAL,LENGTHP1MOVBL,LENGTHP2MOVAH,SIZE
7、P1MOVBH,SIZEP2等效于:BB:MOVAL,10MOVBL,20;只计单元数MOVAH,10;10=10*1MOVBH,40;40=20*2;还要计算类型4E例如:A1DB10DUP(0,1)A2DW20DUP(2DUP(?),1)Lengtha1:Lengtha2:Sizea1:Sizea2:102010403.3.5修改属性运算符例:MOVAX,ES:[BX];从ES段中偏移地址为BX;的地址中取出一个字送AXMOVBL,DS:[BP];从DS段中偏移地址为BP的;地址中取一个字节送BL在程序运行过程中暂时修改变量或标号的属性1.
8、修改段属性运算符--跨越段前缀段寄存器(CS,DS,ES和SS)后跟一个冒号,称为修改段属性运算符,表示后跟的操作数由指定的段寄存器提供段地址值。2.