当前位置:文档之家› 第3章-指令系统(位操作指令)-2

第3章-指令系统(位操作指令)-2

每右移一位,右移前的CF送最高位,右移前的最低送CF。 格式:RCL OPD,COUNT
程序设计
• • • • •
20
汇编语言
单击此处编辑母版标题样式
程序设计
• • • • •
单击此处编辑母版文本样式 第二级 第三级 第四级 第五级
21
汇编语言
汇编语言
单击此处编辑母版标题样式
程序设计
• • • • •
单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 辽宁石油化工大学计算机与通信工程学院 主讲:王晓虹
汇编语言程序设计 (第三章)
1
汇编语言
三、位操作指令 程序设计 单击此处编辑母版标题样式
• • • • •
单击此处编辑母版文本样式 第二级 第三级 第四级 第五级
对一个位串,AND可以屏蔽(清0)某些位,OR可以置位(置1)某些位, XOR可以取反某些位,XOR可以检查两个位串是否匹配。
10
汇编语言
单击此处编辑母版标题样式 • ①屏蔽若干位。 (常用指令)
• AND AL,01H;屏蔽AL的D7~D1,保留D0 • 单击此处编辑母版文本样式 • AND AL,0FH;屏蔽AL高4位,保留低4位 • 第二级 1 (常用指令) •②使若干位置 • • OR BL,0F0H;使BL高4位置1,低4位不变 第三级 •③清除CF、OF 或 设置标志 • 第四级 • AND AL,AL (AND AL,0FFH;OR BL,BL;……) • • ;第五级 类似指令没有改变目的操作数,但使CF=OF=0,也 • 可能纯粹以设置其他标志(ZF)为目的。
程序设计
15
汇编语言
单击此处编辑母版标题样式 (3)算术左移指令
格式:SAL OPD,COUNT
程序设计
• • • • •
单击此处编辑母版文本样式 功能:SAL指令与SHL指令的功能完全相同。 第二级 第三级 (4)算术右移指令 第四级 格式:SAR OPD,COUNT 第五级 功能:将目的操作数向右移动COUNT指定的位数,每右移一位,最高
9
汇编语言
单击此处编辑母版标题样式
程序设计
• • • • •
单击此处编辑母版文本样式 AND AX,0 ;AX清0 AND CL,0FH ;屏蔽CL的高4位 第二级 OR BH,00111100B ;将BH的中间4位置位 第三级 XOR BL,0F0H ;将BL高4位变反 第四级 NOT指令执行不影响状态标志,其他逻辑指令执行后将重新设置SF、 ZF、PF的状态,而总使CF=0、OF=0,AF状态不确定。 第五级
3
汇编语言
单击此处编辑母版标题样式 【例】将AL中第3位和第7位清零。
MOV AL,0FFH
程序设计
• • • • •
单击此处编辑母版文本样式 AND AL,77H 第二级 第三级 第四级 第五级
4
汇编语言
(2)逻辑或指令 格式:OR OPD,OPS 功能:将目的操作数与源操作数按位相或,结果送目的操作数。 即:OPD←(OPD)∨(OPS)。 说明: •① 第二级 “或”操作的运算原则是:1∨1=1,0∨1=1,1∨0=1,0∨0=0。 ② OR指令常用于: • 第三级 (a) 使一个操作数中的若干位保持不变,而另外若干位置1的 场合。这时,要保持不变的这些位与“0”相或;而要置1 的这些位与“1”相或。 (b) 某一操作数,自己和自己相“或”,操作数不变,但可以 • 第五级 使进位标志CF清0。
作数的值。 ② TEST指令常用于:在不希望改变原有的操作数的情况下,用来 检测某一位或某几位的条件是否满足。编程时常与条件转移指 令一起使用,可在TEST指令后面加上条件转移指令,来测试操 作数某位是否为1,或者是否为0。
7
汇编语言
单击此处编辑母版标题样式 【例】测试AX中的第12位是否为0,不为0则转L。
2
汇编语言
三、位操作指令 单击此处编辑母版标题样式 8086 提供的位操作指令包括逻辑运算指令和移位指令,这类指令可直接对
程序设计
寄存器或存储器中的位进行操作。 1.逻辑运算指令 • 单击此处编辑母版文本样式 逻辑运算指令包括:AND指令、OR指令、XOR指令、TEST指令和NOT指令, 其中前四种指令是双操作数指令,符合双操作数指令的一般规律,这四条指 • 第二级 令执行后将使 CF和OF位为0,AF位不确定,而SF、ZF和PF位则根据运算结果设 置;NOT指令是单操作数指令,符合单操作数指令的一般规律,它的执行不影 响标志位。 • 第三级 (1)逻辑与指令 • 格式: 第四级 AND OPD,OPS 功能:将目的操作数与源操作数按位相与,结果送目的操作数。 • 第五级 即:OPD←(OPD)∧(OPS)。 说明:① “与”的运算原则是:1∧1=1,0∧1=0,1∧0=0,0∧0=0。 ② AND指令常用于: (a)使一个操作数中的若干位保持不变,而若干位清为0的场合。 ( b )某一操作数,自己和自己相“与”,操作数不变,但可以使进 位标志CF清0。
的一部分位取反,则应使用XOR指令。 【例】逻辑非运算。 MOV AX,878AH ;(AX)=878AH
NOT
AX
;(AX)=7875H
8
汇编语言
- AND指令对一个数据的指定位清0。例如,AND AL,0FH指令就实现将高4 位清0。
单击此处编辑母版标题样式
程序设计
• • • • •
OR 指令常常用来对一些指定位置1。例如,指令OR AL,02实现对累加器中 单击此处编辑母版文本样式 的D1位置1。 第二级 XOR指令常常用在一些程序的开头使某个寄存器清0,以配合初始化工作 的完成。例如,XOR AX,AX,使累加器清0。 第三级 NOT指令常用来将某个数据取成反码,再加上1,便得到补码。 TEST指令一般用来检测指定位是1还是0,而这个指定位往往对应一个物 第四级 理量。 例如,某一个状态寄存器的最低位反映一种状态,为1时,说明状态信号 第五级 满足要求,于是,就可以先将状态寄存器的内容读到AL中,再用TEST AL, 01指令,此后就可以通过对ZF的判断来了解此状态位是否为1。如果ZF= 1,说明结果为0,即最低位为0,条件不满足;如果ZF=0,说明结果不 为0,即最低位不为0,而为1,所以条件满足。
TEST 1000H AX,______
程序设计
• • • • •
单击此处编辑母版文本样式 JNE L 第二级 (5)逻辑非指令 格式:NOT OPD 第三级 功能:将目的操作数各位取反,结果送目的操作数。 第四级 即:OPD←(OPD)。 第五级 说明:若将整个操作数取反,则应使用NOT指令,若只需将操作数
;(BH)=0F4H ;(CL)=2 ;(BH)=0FDH,(CF)=0
程序设计
• • • • • •
18
汇编语言
单击此处编辑母版标题样式
程序设计
• 单击此处编辑母版文本样式 • 第二级 •( 第三级 6)循环右移指令ROR 格式:ROR OPD,COUNT • 第四级 功能:将目的操作数向右循环移位COUNT指定的位数,每右移一位, 右移前的最低送最高位以及CF。 • 第五级
(5)循环左移指令ROL 格式:ROL OPD,COUNT 功能:将目的操作数向左循环移位COUNT指定的位数,每左移一位, 左移前的最高送最低位以及CF。
19
汇编语言
单击此处编辑母版标题样式 (7)带进位的循环左移指令RCL
单击此处编辑母版文本样式 功能:将目的操作数连同CF位一起向左循环移位COUNT指定的位数, 第二级 每左移一位,左移前的CF送最低位,左移前的最高位送CF。 第三级 (8)带进位的循环右移指令RCR 第四级 格式:RCR OPD,COUNT 第五级 功能:将目的操作数连同CF位一起向右循环移位COUNT指定的位数,
程序设计
总结
11
汇编语言
单击此处编辑母版标题样式 • ④求反 NOT AL / NOT WORD PTR[BX+DI]
程序设计
X⊕0=X X⊕1=X •• ⑤对指定位求反 单击此处编辑母版文本样式 XOR AL,0FH;AL高4位不变,低4位求反 •• 第二级 • XOR CL,55H;CL偶数位求反,奇数位不变 • 第三级 •• 第四级 ⑥清除寄存器及CF(常用指令) XOR AX,AX / XOR BX,BX •• 第五级
;的操作数
⑦不改变操作数,测试操作数或操作数的指定位
13
汇编语言
单击此处编辑母版标题样式 2 移位指令
程序设计

移位指令包括算术移位指令、逻辑移位指令和循环移位指 • 单击此处编辑母版文本样式 令,分别进行左移和右移操作。这些指令均有统一的语句格式: 第二级 • •[标号: ]操作符OPD,1或 [标号:]操作符OPD,CL • 第三级 • 其功能为将目的操作数的所有位按操作符规定的方式移动 •1位或按寄存器 第四级 CL规定的次数(0--255)移动,结果送入目的 8位(或16位)的寄存器数据或存储器数 •地址。目的操作数是 第五级 据。
的有效的方法。 如指令XOR AX,AX ;AX清0。
(c) 测试某一操作数是否与另一确定的操作数相等。这种操作在检查地址是 否匹配时是常用的。
6
汇编语言
单击此处编辑母版标题样式 【例】按位加运算。
MOV AL,45H ;(AL)=45H
程序设计
• • • • •
单击此处编辑母版文本样式 ;(AL)=74H XOR AL,31H ;(AL)=? 第二级 (4)测试指令 格式:TEST OPD,OPS 第三级 功能:目的操作数与源操作数按位相与,结果反映在标志位上, 但不送回目的操作数。 即:(OPD)∧(OPS)。 第四级 说明: ① 该指令完成与AND指令相同的操作,但TEST指令不改变目的操 第五级
相关主题