2.2.3 逻辑指令.ppt
文本预览下载声明
2.2.3 逻辑指令 逻辑运算指令(位操作指令) AND 逻辑与 指令格式:AND DST, SRC ;操作:(DST) ←(DST) ∧(SRC) OR 逻辑或 指令格式:OR DST, SRC ;操作:(DST) ←(DST) ∨(SRC) NOT 逻辑非 指令格式:NOT OPR ;操作:(OPR) ←(OPR) XOR 异或 指令格式:XOR DST, SRC ;操作:(DST) ←(DST) ∨ (SRC) TEST 测试指令 指令格式:TEST OPR1, OPR2 ;操作:(OPR1) ∧(OPR2); 结果不保存,只根据其特征设置条件码 说明: 对标志位的影响:NOT不影响标志位,其它4种指令将使CF和OF为0,AF位无定义,而SF, ZF和PF则根据运算结果设置。 例:(1) 要求将AL中0, 1两位屏蔽 AND AL, (2)要求将BL中第5位置1 OR BL, (3)要求将AX中0,1位取反 XOR AX, (4)检测AL中D0位是否为1,若为1,转向T1处执行; TEST AL JNZ T1 … T1: … 移位指令 SHL 逻辑左移指令 指令格式:SHL OPR, CNT 执行操作: OPR可以是除立即数以外的任何寻址方式, 移位次数由CNT决定(CNT可以是1或CL). 说明:对条件码的影响是,CF位根据指令规定设置, OF只有当CNT=1时才有效,在移位后最高有效位的值发生变化(0变1或1变0)时OF置1,否则OF置0; 其它移位指令 SAL OPR, CNT ;算术左移指令(同SHL) SHR OPR, CNT ;逻辑右移指令 SAR OPR, CNT ;算术右移指令 ROL OPR, CNT ;循环左移指令 ROR OPR, CNT ;循环右移指令 RCL OPR, CNT ;带进位循环左移指令 RCR OPR, CNT ;带进位循环右移指令 例: MOV CL, 5 SAR WORD PTR [DI], CL ; 执行前(DS)=0F800H,(DI)=180AH, (0F980A)=0064H ;则执行后(0F980A)=0003H, CF=0 (2) MOV CL, 2 ;执行前(SI)=1450H SHL SI, CL ;执行后(SI)=5140H, CF=0 (3) 如(AX)=0012H, (BX)=0034H,要求将它们装配在一起形成(AX)=1234H. MOV CL, 8 ROL AX, CL ; (AX) = 1200H ADD AX, BX ; (AX) = 1200H+0034H = 1234H 2.2.4 串处理指令 串指令:(数组操作) MOVS 串传送(传输一个字/字节:目的串←源串) CMPS 串比较(比较一个字/字节:目的串与源串) SCAS 串扫描(扫描一个字/字节:在串中) LODS 从串取 STOS 存入串 与上述基本指令配合使用的前缀指令: REP 重复 REPE/REPZ 相等/为0则重复 REPNE/REPNZ 不相等/不为0则重复 REP 重复串指令 指令格式:REP 串指令 执行操作: 如: MOV CX, 传送次数; REP MOVSB MOVS 串传送指令 指令格式:MOVS DST, SRC ;在操作数中要表明字/字节操作 MOVSB (字节) ;字节传送 MOVSW (字) ;字传送 执行操作: (1) ES:(DI) ←DS:(SI) (2) 字节操作: (SI) ← (SI) ±1, (DI) ← (DI) ± 1 (3) 字操作: (SI) ←(SI) ±2, (DI) ← (DI) ±2 说明: A.该指令不影响条件码。 B.该指令可以把由(SI)指向的DS段中的1个字/字节→由(DI)指向的ES段中的1个字/字节中,同时根据DF值及数据格式(字/字节)对(SI)和(DI)进行修改。 MOVS指令与REP联用,则可将数据段中整串数据→附加段中,但执行前要做准备工作,步骤如下: 例:将DS段中17个字符送到ES段中。 DATAREA SEGMENT MESS1 DB ‘personal computer
显示全部