当前位置:文档之家› 微型计算机原理.ppt

微型计算机原理.ppt


第 3 章 3.3.3逻辑运算与移位指令
TEST指令用于位的测试,它与条件转移指令一起,共同完 成对特定位的状态的判断,并实现相应程序的的转移。
与CMP有些类似,CMP比较两个操作数,TEST比较特定的位。
测试方法:要测试操作数的的某些位是否为0,只需要把TEST的 源操作数设置成一个立即数,其中需要测试的位设为1。
第 3 章 3.3.3逻辑运算与移位指令
OR与AND的共性:如果寄存器与其自身内容进行逻辑与操作, 或进行逻辑或操作,寄存器内容不变,但逻辑运算结果影响SF、ZF、 PF标志位,且将CF清0。
利用这个特性,可以在数据传送指令之后,进行逻辑运算以影 响标志位,然后可以判断数据的正负、是否为0,以及数据的奇偶性 等。
0000 0000B
第 3 章 3.3.3逻辑运算与移位指令
XOR常见用途三:用来测试某一操作数是否与另操作数 相等,例如检查AX的内容是否等于0F00H,若相等则转 MATCH去执行,否则顺序执行。程序段如下:
XOR AX,0F00H; JZ MATCH ;JZ为跳转指令 表示AX为0时转移

第 3 章 3.3.3逻辑运算与移位指令
第 3 章 3.3.3逻辑运算与移位指令
二、移位指令(shift)
8086/8088 CPU有4条移位指令。
算术左移指令SAL
逻辑左移指令SHL
算术右移指令SAR
逻辑右移指令SHR
对应同 一条机 器指令
功能:用来实现对寄存器或存储单元的8位或16位数据
的移位,指令移位操作可以是向左或向右移一位,也可以 是多位,移多位时,规定移位的次数必须放在CL寄存课教师:
第 3 章 3.3.3逻辑运算与移位指令
8086/8088CPU的指令系统提供8位 和16位的逻辑运算与移位指令有3组
❖逻辑运算指令 AND/OR/XOR/NOT/TEST
❖移位指令
SHL/SHR/SAL/SAR
❖循环移位指令 ROL/ROR/RCL/RCR
第 3 章 3.3.3逻辑运算与移位指令
第 3 章 3.3.3逻辑运算与移位指令
逻辑左移指令 SHL /算术左移指令 SAL
D15/D7
CF
MSB
D0
LSB
0
SHL/SAL指令示意图
SHL/SAL功能完全一样,因为对一个无符号数乘以2和对一 个有符号数乘以2没有什么区别。
在左移位数为1的情况下,如果最高位与CF不同,则溢 出标志OF=1,这对带符号数可以判断移位前后的符号位不 同;反之,如果最高位与CF相同,则溢出标志OF=0,这表 示移位前后符号位没有改变。
第 3 章 3.3.3逻辑运算与移位指令
3、异或运算指令XOR 指令格式及操作 XOR DST ,SRC ; (DST) ( DST )⊕ (SRC)
注释:①操作数格式同加 减法指令;②设CF=OF=0, 影响SF、ZF、PF,对AF无 定义。
第 3 章 3.3.3逻辑运算与移位指令
XOR常见用途一:寄存器某些特定的位“求反”,而使其余的位 不变。因此‘求反’的位与1‘异或’;不变的位与0进行“异或”。
一、逻辑运算指令
8086/8088CPU的逻辑运算指令有AND 、OR、 XOR、TEST、NOT 5条指令。 以上5条除NOT对标志位不产生影响;
其余均产生影响:这些指令根据各自逻辑运算的结 果都将影响SF、ZF、和PF,同时 AF的值不确定。
第 3 章 3.3.3逻辑运算与移位指注令释:①操作数格式同
4、测试指令TEST
指令格式及操作
TEST DST ,SRC ; ( DST ) & (SRC)
DST:可以为寄存器操作数、存储器操作数 SRC:可以为寄存器操作数、存储器操作数、立即数
指令功能:目标操作数与源操作数按位“逻辑与”运
算,结果不送回目标操作数。置CF=0,OF=0;对其他标志 没有定义。
一、逻辑运算指令
加减法指令;②设 CF=OF=0,影响SF、
1、与运算指令AND
ZF、PF,对AF无定义。
指令格式及操作
AND DST ,SRC ;(DST) ( DST )Λ (SRC)
第 3 章 3.3.3逻辑运算与移位指令
AND的指令可以屏蔽某些不关心的位(该位置0),保留一些 有用的位。为了做到这一点,只需把要屏蔽位和“0”进行逻辑位, 而将保留的位与“1”进行逻辑与即可。
第 3 章 3.3.3逻辑运算与移位指令
MOV AL,40H; TEST AL, 0AH ; JNZ NEST; JNZ为跳转指令 表示ZF=0时转移
: NEST:…..
第 3 章 3.3.3逻辑运算与移位指令
5、取反指令 NOT 指令格式及操作 NOT OPR ; (OPR) (OPR)
OPR:除了立即数以外的各种寻址方式 的操作数、寄存器。
第 3 章 3.3.3逻辑运算与移位指令
2、或运算指令OR OR DST ,SRC ; (DST) ( DST )V (SRC)
注释:①操作数格式同 加减法指令;②设 CF=OF=0,影响SF、 ZF、PF,对AF无定义。
第 3 章 3.3.3逻辑运算与移位指令
OR常见用途:把某些特定的位 置1。方法:把要置1的位与1按 位逻辑或;不改变的位与0按位逻辑或。
指令功能:对操作数按位取反。NOT指令是一条逻辑
“非”指令,只有一个操作数,可以是8位,也可以是16位 的存储器或寄存器。
对标志位没 有影响。
第 3 章 3.3.3逻辑运算与移位指令
NOT AL ;
分析指令 功能
NOT DX
NOT BYTE PTR 0002H[BX ]
NOT WORD PTR [BX+SI]
MOV AL ,0FFH ; XOR AL,55H; AL=10101010B,
55H=01010101B
第 3 章 3.3.3逻辑运算与移位指令
XOR常见用途二:寄存器内容清0
XOR AX,AX; XOR BX ,BX;在初始化时,将寄存器清0
如: 0010 1001B = AX XOR)0010 1001B = AX
第 3 章 3.3.3逻辑运算与移位指令
1、逻辑左移指令 SHL /算术左移指令 SAL
指令格式: SHL(SAL) OPR,CNT;
OPR:通用寄存器或存储器操作数 CNT:可为1,或CL,CL中放移位的次数。
只影响CF、OF 两个标志位。
指令功能:操作数左移1位或CL规定的位数,最低位补0, 最高位进CF。
相关主题