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

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
;的操作数
⑦不改变操作数,测试操作数或操作数的指定位
13
汇编语言
单击此处编辑母版标题样式 2 移位指令
接口技术

移位指令包括算术移位指令、逻辑移位指令和循环移位指 • 单击此处编辑母版文本样式 令,分别进行左移和右移操作。这些指令均有统一的语句格式: 第二级 • •[标号:]操作符OPD,1或 [标号:]操作符OPD,CL • 第三级 • 其功能为将目的操作数的所有位按操作符规定的方式移动 •1位或按寄存器CL规定的次数(0--255)移动,结果送入目的 第四级 •地址。目的操作数是8位(或16位)的寄存器数据或存储器数 第五级 据。
接口技术
15
汇编语言
单击此处编辑母版标题样式 (3)算术左移指令
格式:SAL OPD,COUNT
接口技术
• • • • •
单击此处编辑母版文本样式 功能:SAL指令与SHL指令的功能完全相同。 第二级 第三级 (4)算术右移指令 第四级 格式:SAR OPD,COUNT 第五级 功能:将目的操作数向右移动COUNT指定的位数,每右移一位,最高
作数的值。 ② TEST指令常用于:在不希望改变原有的操作数的情况下,用来 检测某一位或某几位的条件是否满足。编程时常与条件转移指 令一起使用,可在TEST指令后面加上条件转移指令,来测试操 作数某位是否为1,或者是否为0。
7
汇编语言
单击此处编辑母版标题样式 【例】测试AX中的第12位是否为0,不为0则转L。
TEST 1000H AX,______
接口技术
• • • • •
单击此处编辑母版文本样式 JNE L 第二级 (5)逻辑非指令 格式:NOT 第三级 OPD 功能:将目的操作数各位取反,结果送目的操作数。 第四级 即:OPD←(OPD)。 第五级 说明:若将整个操作数取反,则应使用NOT指令,若只需将操作数
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状态不确定。 第五级
的有效的方法。 如指令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指令不改变目的操 第五级
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。
(5)循环左移指令ROL 格式:ROL OPD,COUNT 功能:将目的操作数向左循环移位COUNT指定的位数,每左移一位, 左移前的最高送最低位以及CF。
19
汇编语言
单击此处编辑母版标题样式 (7)带进位的循环左移指令RCL
单击此处编辑母版文本样式 功能:将目的操作数连同CF位一起向左循环移位COUNT指定的位数, 第二级 每左移一位,左移前的CF送最低位,左移前的最高位送CF。 第三级 (8)带进位的循环右移指令RCR 第四级 格式:RCR OPD,COUNT 第五级 功能:将目的操作数连同CF位一起向右循环移位COUNT指定的位数,
汇编语言
单击此处编辑母版标题样式
接口技术
• • • • •
单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 辽宁石油化工大学计算机与通信工程学院 主讲人:王晓虹
汇编语言程序设计 (第三章)
1
汇编语言
三、位操作指令 接口技术 单击此处编辑母版标题样式
• • • • •
单击此处编辑母版文本样式 第二级 第三级 第四级 第五级
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。
接口技术
总结
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 •• 第五级
对一个位串,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)为目的。
14
汇编语言
单击此处编辑母版标题样式 (1)逻辑左移指令
• 第二级 • 第三级 (2)逻辑右移指令 •格式:SHR OPD,COUNT 第四级 功能:将目的操作数向右移动COUNT指定的位数,每右移一位,最高位 补0,最低位送CF。 • 第五级
格式:SHL OPD,COUNT •功能:将目的操作数向左移动COUNT指定的位数,每左移一位,最低位 单击此处编辑母版文本样式 补0,最高位送CF。
;(BH)=0F4H ;(CL)=2 ;(BH)=0FDH,(CF)=0
接口技术
• • • • • •
18
பைடு நூலகம்
汇编语言
单击此处编辑母版标题样式
接口技术
• 单击此处编辑母版文本样式 • 第二级 • (6)循环右移指令ROR 第三级 格式:ROR OPD,COUNT • 第四级 功能:将目的操作数向右循环移位COUNT指定的位数,每右移一位, 右移前的最低送最高位以及CF。 • 第五级
每右移一位,右移前的CF送最高位,右移前的最低送CF。 格式:RCL OPD,COUNT
接口技术
• • • • •
20
汇编语言
单击此处编辑母版标题样式
接口技术
• • • • •
单击此处编辑母版文本样式 第二级 第三级 第四级 第五级
21
汇编语言
单击此处编辑母版标题样式 例:将DX和AX中的低8位拼成一个16位数放在DX中,要求原DX中的低8
单击此处编辑母版标题样式
接口技术
• 单击此处编辑母版文本样式
• 第四级
【例】将AL寄存器中第3位和第7位置1。
MOV
OR
AL,0
AL,88H
5
汇编语言
格式:XOR OPD,OPS 单击此处编辑母版标题样式 功能:将目的操作数与源操作数按位相异或,结果送目的操作数。
接口技术
(3)逻辑异或指令
即:OPD←(OPD)⊕(OPS)。 • 单击此处编辑母版文本样式 说明: ① “异或”操作的运算原则是:1⊕1=0,0⊕0=0,0⊕1=1,1⊕0=1。 • 第二级 ② XOR指令常用于: • 第三级 (a) 使一个操作数中的若干位保持不变,而另外若干位取反的场合。这时, • 第四级 要保持不变的这些位与“0”相异或;而要取反的那些位与“1”相异或。 • (b) 使某一操作数清0。由于一个操作数自身做“异或”时,每一位都相同, 第五级 “异或”结果必为0,且使进位标志也为0。因此这是使操作数的初值置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,所以条件满足。
位均保持不变,最低位送CF。
16
汇编语言
单击此处编辑母版标题样式
接口技术
• • • • •
单击此处编辑母版文本样式 第二级 第三级 第四级 第五级
17
汇编语言
• • MOV BH,0F4H • MOV CL, 2 • SAR BH, CL
单击此处编辑母版标题样式 【例】算术右移运算。
单击此处编辑母版文本样式 第二级 该例语句“SAR BH,CL”实际上完成了(BH)/4→BH的运算,所 第三级 以,用SAR指令可以实现对有符号数除2n的运算(n为移位次数)。 第四级 第五级

XOR BYTE PTR[BX],BYTE PTR[BX] ×
12
汇编语言
单击此处编辑母版标题样式
接口技术
• 单击此处编辑母版文本样式 TEST AL,0FFH;由ZF标志判断AL是否为零 • 第二级 ;也可以用CMP指令。 •TEST AL,01;由ZF标志判断AL的D0是否为零, 第三级 ;ZF=1,则AL.D0=0 • 第四级 ;ZF=0,则AL.D0=1 •AND AL,01 ;也可完成上述功能,但是改变了目 第五级
相关文档
最新文档