位操作指令

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

② 应用:



AND指令用来对指令的指定位清“0”。 OR指令常用来对某些位置1。 XOR指令用在程序开头,使某个寄存器清“0”。 NOT指令对某个数据取反,再加1变成补码。 TEST指令用来检测指定位为1,还是0。
2. 移位指令
1)SHL(Shift logical left)逻辑左移指令
使用AND指令,注意以下三点: Nhomakorabea



“与”指令中操作数不能同时为存储器; 该指令执行后CF=OF=0,AF未定义,SF、 ZF、PF根据运算结果设置; “与”指令一般用来对一个数据的指定位清 0, 而其余位保持不变。 与指令一般用来屏蔽不需要的数据位,保留需 要的数据位。
判定下列与指令的对错



AND AND AND AND AND AND AND AND
AL,00001101B AL,BL AL,BX AL,[2000H](存储器单元的数据为字节型) [BX],[4000H] DS,CS DS,14EFH AL,AL
以下几条指令判断从键盘输入的字符是否为'Y',但对键入 的字符大写或小写不加区别,同样对待。 MOV AH,1 ;接收由键盘输入的一个字符 INT 21H ;字符的ASCII码存AL AND AL,11011111B 屏蔽第5位,转换为大写字母 CMP AL,'Y' ;字符是否为''Y''? JE YES ;如是,转到YES … ;否则,… YES: …
格式:SHL dest ,cnt
其中: dest可以是除立即数以外的任何寻址方式,可以是字或 字节操作数。 cnt表示移位次数,当cnt=1时,1可直接写在指令中; 当cnt>1时,必须在移位指令前把移位次数置于 CL寄存器 中,而移位指令中的cnt写为CL即可。 其中最高位移入CF中
判断下列指令的正误
例:

OR BL,0F0H;使BL高4位置1,低4位不变 OR AX,8080H OR BL,BL ;清除CF、OF 或 设置标志
(4)XOR(Logical exclusive or) 逻辑“异或”指令


格式:XOR dest , src
执行的操作:(dest)←(dest)⊕(src)

功能:对两个操作数按位进行逻辑“异 或”运算,即进行“异或”运算的两位 不相同时(即一个为0,另一个为1), “异或”的结果为1,否则为0
使用XOR指令,注意以下三点:
① “异或”指令是使操作数初值清0的有效方法; ② 该指令执行后 CF = OF=0 , AF 未定义, SF 、 ZF、PF根据运算结果设置; ③ “异或”指令一般用来对一个数据的指定位变 反,而其余位保持不变。
例:XOR AL,0FH;AL高4位不变,低4位求反
4.3.3位操作指令

与、或、非、异或 测试 逻辑左移、逻辑右移 算术左移、算术右移 循环左移、循环右移
1.逻辑运算指令
(1)AND(Logical
and)逻辑“与”指令
格式:AND
dest, src
执行的操作:(dest)←(dest)∧(src) 该指令对指定的两个操作数按位进行逻辑“与” 运算,即只有相与的两位全为 1 ,“与”运算的 结果才为1;否则“与”运算的结果才为0。



TEST TEST TEST TEST TEST

BH,7 BL,AL [SI],CX (SI所指向的物理地址的数据位字数据) DS,AX BX,1EF0H
测试指令的操作数可以是寄存器、存储器、 立即数,但不能同时为存储器,也不能对段 寄存器进行操作
不改变操作数下,测试操作数或操作数 的指定位。例如:
XOR CL,55H;CL偶数位求反,奇数位不变 XOR AX,AX ;将AX置0,CF=OF=0 XOR BX,BX ;将BX置0,CF=OF=0
(5)NOT(Logical not ) 逻辑“非”指令

格式:NOT dest 执行的操作:


字节求反:(dest)←0FFH-(dest) 字求反: (dest)←0FFFFH-(dest)
IN AL,PORT ;从端口PORT输入数据 TEST AL,00101010B ;测试第1、3、5位 JNZ NEXT ;任一位不为0,则转移到
NEXT
NEXT: …
(3)OR(Lgical inclusive or ) 逻辑“或”指令
格式:OR dest, src
执行的操作:(dest)←(dset)∨(src) 功能:对两个操作数按位进行逻辑“或”运算, 即进行“或”运算的两位中的任一位为1(或 两位都为1),则“或”的结果为1,否则为0。

(2)TEST(测试指令)
格式:TEST
dest , src
执行的操作:(dest)∧(src)
本 指 令 完 成 AND 指 令 同 样 的 操 作 , 但 不 送 回 “与”操作结果,只是使结果反映在标志位上 (对标志位的影响同AND指令)。 TEST指令常常用来检测指定位是1还是0。
判定下列与指令的对错



使用OR指令,注意以下三点:
① “或”指令中操作数不能同时为存储器; ② 该指令执行后 CF = OF=0 , AF 未定义, SF 、 ZF、PF根据运算结果设置; ③ “或”指令一般用来对一个数据的指定位 置1,而其余位保持不变。
逻辑“或”指令的用途

使某些位置1影响标示位(SF、ZF、PF,CF=OF=0)



SHL AX,1 SHL BH,2 MOV CL,4 SHL BX,CL MOV CL,03H SHL AX,CL SHL [DX],1
使用SHL指令,注意以下二点:
该指令要影响标志位, OF 只有当 cnt=1 才有
效,移位前后最高位发生变化时OF = 1,否则OF = 0;SF、ZF、PF要根据移位后的结果来设置, AF没有定义;移位次数不等于 1时,OF值不确 定。

对操作数按位求反,操作数可以是寄存 器、存储器,但不能使立即数。对标志 位没有影响。
逻辑运算指令小结: ① 特点: 逻辑运算指令可以对字或字节操作数执行逻辑运 算; 逻辑运算是按位操作, 对标志位的影响:NOT指令不影响标志位,其他 4种指令将使CF=0F=0,AF未定义 ,而SF、ZF、 PF根据运算结果设置。
相关文档
最新文档