汇编语言运算符课件.ppt
3.关系运算符,注:若真设为全1,假设为全0。比较时,若为常数按无符号数比较,如果是变量按偏移量比较。,第8章 汇编语言基础,例8:MOVAX,0FH EQ 1111BMOVDX,05H GE 1111B等价于:MOV AX,0FFFFH MOV DX,0,第8章 汇编语言基础,例9:DATA SEGMENT ORG 10H NUM1=1234 NUM2=1234H DA_BYTE DB10HDUP(0)DA_WORDDW10HDUP(0)DA_VAR1DW NUM2+DA_BYTEGT NUM1+DA_WORD DA_VAR2DBNUM1 LE NUM2DATA ENDS.MOVAX,NUM1 LT NUM2MOVBL,NUM1 GE NUM2MOV CX,DA_WORD GT DA_BYTE,第8章 汇编语言基础,格式:运算对象是存储器操作数,由变量名或标号组成地址表达式SEG:返回变量所在的段值OFFSET:返回变量所在偏移量TYPE:返回变量的类型LENGTH:返回数组变量的元素个数SIZE:返回数组变量所占的总字节数 SIZE=TYPE*LENGTH,4.数值返回运算符,第8章 汇编语言基础,例10:假设DATA的段基值是7A4EHDATASEGMENTORG30HDA1DB20HDUP(12H)DA2DWDA1.DATAENDS.MOVAX,SEGDA1MOVBX,SEGDA2MOVSI,OFFSETDA1MOVCX,DA2MOVDI,OFFSETDA2MOVDX,OFFSET DA1+4,MOVAX,7A4EHMOVBX,7A4EHMOVSI,30HMOVCX,7A9EHMOVDI,50HMOVDX,34H,第8章 汇编语言基础,用数字形式表示变量和标号的类型属性,4.数值返回运算符(续),第8章 汇编语言基础,例11:DA_BYTE DB 12HDA_WORD DW 3456HDA_DWORD DD789AH.MOVAL,TYPEDA_BYTEMOVBL,TYPE DA_WORDMOVCL,TYPE DA_DWORD.MOVAL,1MOVBL,2MOVCL,4,第8章 汇编语言基础,LENGTH与SIZE运算符,LENGTH运算符返回数组变量的元素个数。如果变量用DUP定义,Length为外层DUP的值。如果没有DUP定义,结果为1。SIZE运算符数组变量所占的总字节数。SIZE是LENGTH和TYPE的乘积。,4.数值返回运算符(续),第8章 汇编语言基础,例12:DATASEGMENTVAR1DB10HDUP(0)VAR2DB10H,20H,30H,40HVAR3DW10HDUP(A,4 DUP(3)VAR4DBCOMPUTERDATAENDS.MOVAL,LENGTHVAR1;MOVAH,SIZEVAR1;MOVBL,LENGTHVAR2;MOVBH,SIZEVAR2;MOVCL,LENGTHVAR3;MOVCH,SIZEVAR3;MOVDL,LENGTHVAR4;MOVDH,SIZEVAR4;,(AL)=10H(AH)=10H(BL)=1(BH)=1(CL)=10H(CH)=20H(DL)=1(DH)=1,第8章 汇编语言基础,求数组ARRAY的各数据项的累加和,从数组最后一个数据项开始进行累加。ARRAY DW06HDUP(4).XORAX,AXMOVSI,OFFSET ARRAYADDSI,SIZE ARRAY-TYPE ARRAYMOVCX,LENGTH ARRAYLOP:ADDAX,SISUBSI,TYPE ARRAYLOOPLOP,例13:,第8章 汇编语言基础,5.属性运算符PTR:类型 PTR 地址表达式类型可以是:BYTE,WORD,DWORD 或NEAR,FAR仅在当前语句中有效,是一种临时设置。DA_BYTE DB 20H DUP(0)DA_WORD DW 10H DUP(0)MOV WORD PTR DA_BYTE 10H,AX ADD BYTE PTR DA_WORD DI,BL INC BYTE PTR SI SUB WORD PTR BX,30H JMP FAR PTR SUB1,第8章 汇编语言基础,5.属性运算符(续),第8章 汇编语言基础,THIS:THIS 类型 THIS常与等值语句EQU一起用,形成新变量名或标号,使它们具有THIS后所指的类型,而段基值和偏移量与紧接的变量名或标号相同。例14:DATA _BYTE EQU THIS BYTE DATA _WORD DW 20H DUP(0)JUMP_FAR EQU THIS FAR JUMP_NEAR:XOR AX,AX,6.分离字节运算符,第8章 汇编语言基础,HIGH 表达式 LOW 表达式 分离运算对象的高字节和低字节部分。表达式必须具有常量值,如常数、地址表达式,不能是存储器操作数或寄存器内容。,例14:DATASEGMENTORG20HCONSTEQU0ABCDHDATA1DB10HDUP(?)DATA2DW20HDUP(?).DATAENDS.MOVAH,HIGHCONSTMOVAL,LOWCONSTMOVBH,HIGH(OFFSETDATA1)MOVBL,LOW(OFFSETDATA2)MOVCL,LOW(CONSTSHL3),MOVAH,0ABHMOVAL,0CDHMOVBH,0MOVBL,30HMOVCL,68H,第8章 汇编语言基础,7.运算符的优先级,第8章 汇编语言基础,8.4.1 符号定义语句,第8章 汇编语言基础,8.4 伪指令语句,1.等值语句格式:符号 EQU 表达式 表达式:常数或数值表达式 地址表达式 变量或标号CONST EQU 10ADR1 EQU DS:BP+14HADR2 EQU CONST+10COUN EQU VAR 为变量名VAR另定义一个别名 同一符号不能用EQU重新定义。汇编时,作为替代符号用,不产生目标代码,不占 有存储单元。,8.4.1 符号定义语句(续),第8章 汇编语言基础,2.等号语句格式:符号=表达式 CONT=5 NUM=10H NUM=NUM+20H COUNT=VAR;COUNT是变量VAR的别名 COUNT=NUM;COUNT是常数NUM的别名表达式形式同上,但可多次重新定义同一符号。,8.4.2 数据定义语句,第8章 汇编语言基础,字节BYTE1字WORD2双字DWORD 4四字QWORD 8十字节TBYTE 10,DBDWDDDQDT,格式:变量名 DB/DW/DD 表达式1,表达式2,.,例15:DATASEGMENT DA1DB9AH DA2DW5678H DA3DD12345678HDATAENDS,变量的属性:段属性 偏移属性 类型属性,第8章 汇编语言基础,表达式:数值DA_BYTE1DB50HDA_BYTE2DB10H,20H,30H,40HDA_WORD1DW0A34HDA_WORD2DW1234H,5678H,9ABCHDA_DWORDDD12345678H,9ABCDEFH,格式:变量名 DB/DW/DD 表达式1,表达式2,.,8.4.2 数据定义语句(续),第8章 汇编语言基础,格式:变量名 DB/DW/DD 表达式1,表达式2,.,8.4.2 数据定义语句(续),第8章 汇编语言基础,表达式:字符/字符串,字符串必须用引号括起来DB时一个字符串可以连续书写小于255个字;DW、DD时每一个字符串表达式由1-2个字符构成;STRING1DBSTRINGSTRING2DWST,RI,NGSTRING3DDST,RI,NG,STRING1,53,54,52,49,4E,47,54,53,52,49,4E,47,STRING2,54,53,52,49,4E,47,STRING3,00,00,00,00,00,00,STRING1 DBSTRINGSTRING2 DWST,RI,NGSTRING3 DD ST,RI,NG,例16:,第8章 汇编语言基础,格式:变量名 DB/DW/DD 表达式1,表达式2,.,8.4.2 数据定义语句(续),第8章 汇编语言基础,表达式:?表达式:分配相应数量的存储单元,但不初始化。,DA_BYTE3DB?,?DA_WORD3DW?,?,格式:变量名 DB/DW/DD 表达式1,表达式2,.,8.4.2 数据定义语句(续),第8章 汇编语言基础,表达式:带DUP的表达式,DA_B1DB10HDUP(?)DA_B2DB20HDUP(ABCD)DA_W1DW10DUP(4)DA_W2DW10DUP(-1,1)操作符DUP可以嵌套使用:DA_B3 DB 10H DUP(4 DUP(3),8),作业:1、定义一个数组,类型为字节,其中存放“ABCDEFGH”。2、定义一个字节区域,第一个字节为10,其后连续存放10各初值为0的连续字节。,第8章 汇编语言基础,