微机原理与接口技术--第3章3.3.3逻辑和移位指令-550
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
移动2次
0
00011010
CF
CF
0
CF
0
29
算术右移SAR
格式: SAR OPRD,1 SAR OPRD,CL
有符号数 的右移
CF
30
非循环移位指令的应用
左移可实现乘法运算
每左移1位,相当于给目标操作数乘以2
右移可实现除法运算
每右移1位,相当于给目标操作数除以2
31
非循环移位指令例1
33
2. 循环移位指令
不带进位的循环移位
左移 ROL 右移 ROR
带进位的循环移位
左移 RCL 右移 RCR
指令格式、对操作数的要求与非循环移位指令相同
34
不带进位的循环移位ROL和ROR
CF CF
35
来自百度文库
带进位的循环移位RCL和RCR
CF CF
36
循环移位指令的应用
用于对某些位状态的测试; 高位部分和低位部分的交换; 与非循环移位指令一起组成32位或更长字
例3-14:执行以下指令 MOV AL,82H SHR AL,1 若换位SAR AL,1,则结果是?
32
非循环移位指令例2
例3-4-15:已知(AL)=80H,(CL)=03H, 求执行下列指令后,(AL)=?, CF=? (1)SAR AL, CL (2)SHR AL, CL 解:(1)(AL)=0F0H, CF=0 (2)(AL)=10H, CF=0
逻辑运算综合例1
5. 设DL=55H,执行指令后能使DL中的数据为
OAAH 的 指 令 是 (
)。
A.TEST DL,OAAH
B.OR DL,OAAH
D. XOR DL,OFFH
题目答案:D
19
逻辑运算综合例2
6. 无论BX中原有的数是奇数或偶数,若要使 BX中的数一定为奇数,应执行的指令是( )。 A. ADD BX,1 B. OR BX,1 C. XOR BX,1 D. TEST BX,1
AND AX, 1110111101111111B
6
2.“或”运算指令
格式:
OR dest,src
操作:
两操作数相“或”,结果送目标地址
7
“或”指令的应用
实现两操作数相“或”的运算
OR AX,[DI]
使某些位不变,某些位置“1”
OR CL,0FH
在不改变操作数的情况下使OF=CF=0
3
1.“与”指令:
格式:
AND dest,src
操作:
两操作数相“与”,结果送目标地址。
4
“与”指令的应用
实现两操作数按位相与的运算
AND BL,[SI]
使目标操作数的某些位不变,某些位清零
AND AL,0FH
在操作数不变的情况下使CF和OF清零
AND AX,AX
5
“与”指令应用例
27
逻辑右移SHR
格式: SHR OPRD,1 SHR OPRD,CL
0
无符号数 的右移
CF
移动一位后,若次高位与最高位不相等,则OF=1;否则OF=0
28
逻辑右移例:
MOV AL,68H
MOV CL,2
SHR AL,CL
AL
0
01101 0 00
0
AL
移动1次
0
0011010 0
0
AL
11
4.“异或”运算指令
格式:
XOR OPRD1,OPRD2
操作:
两操作数相“异或”,结果送目标地址
例: XOR BL,80H XOR AX,AX
两操作数自身相异或,结果=? 12
“异或”指令应用例1
XOR AL,1010 0000B
13
“异或”指令应用例2
例1:将AL中的第1、3、5、7位求反,0、2、 4、6位保持不变。 MOV AL,0FH XOR AL,0AAH
逻辑运算与移位类指令
逻辑运算指令 移位指令 循环移位指令
1
1、逻辑运算指令
2
逻辑运算指令对操作数的要求大多与MOV指 令相同。
“非”运算指令为单操作数指令,其操作数不 能是立即数;
“非”运算指令不影响标志位;其他逻辑运算 指令会影响6个状态标志位,且不论执行结果 如何,都会使OF=CF=0
题目答案:B
20
逻辑运算综合例3
7. 将寄存器AL的低4位屏蔽,应当用的指令是 ( )。 A. AND AL,0FH B. AND AL,0F0H C. XOR AL,0FH D. XOR AL,0F0H
题目答案:B
21
8. AND指令用于( )。 A. 取一个数中的某一位 B. 置一个数中的某些位为1 C. 将一个数置为0 D. 置一个数中的某些位为0
长数的移位。
37
循环移位指令例1
例:设CF=0,执行以下程序段。 MOV AL,82H ROL AL,1
执行结果:(AL)=05H,CF=1 若换为RCL AL,1 执行结果:(AL)=04H,CF=1
38
循环移位指令例2
例3-4-20:已知(AL)=12H, CF=1,求: 执行下列指令后,(AL)=?, CF=? (1)ROR AL,1 (2)RCR AL,1 解:(1)(AL)=09H, CF=0 (2)(AL)=89H, CF=0
14
指令应用例3
例3-10:将AX和CF清零。 解:实现方法有多种,如下: 方法1: AND AX,0 方法2: XOR AX,AX 方法3: SUB AX,AX
15
5.“测试”指令
格式:
TEST OPRD1,OPRD2
操作:
执行“与”运算,但运算的结果不送回目标地址。
应用:
常用于在不破坏目标操作数内容的情况下测试操 作数某些位是“1”还是“0”。
题目答案:D
22
2、移位指令
非循环移位指令 循环移位指令
23
移位指令
移位指令在格式上应注意的两点:
移动一位时由指令直接给出; 移动两位及以上,则移位次数由CL指定。
学习移位指令应注意:
操作码的表示; 指令的工作原理。
24
1. 非循环移位指令
逻辑左移 SHL 算术左移 SAL 逻辑右移 SHR 算术右移 SAR
39
循环移位指令例3
例:将一个16位无符号数x除以512,该数原 存在以DATA为首地址的两个连续单元中。
MOV AX,DATA MOV CL,9 SHR AX,CL HLT
40
16
“测试”指令例1
例: TEST AL,02H TEST AX,0040H
17
“测试”指令例2
例:判断A单元最低位是否为0.
假定(A)=0AEH.
程序:MOV AL,A
TEST AL,01H;指定测试AL的最低位 JZ EVEN;指定位=0转EVEN
…… 奇数处理
……
EVEN:偶数处理
18
25
算术左移SAL
算术左移指令:
SAL OPRD,1 SAL OPRD,CL
有符号数
CF
0
移动一位后,若CF状态与最高位不相等,则OF=1;否则OF=0
26
逻辑左移SHL
逻辑左移指令:
SHL OPRD,1 SHL OPRD,CL
无符号数
CF
0
移动一位后,若CF状态与最高位不相等,则OF=1;否则OF=0 算数左移和逻辑左移的移动原理相同
OR AX,AX
8
“或”指令应用例
OR BX, 0001 0000 1000 0000B
9
3.“非”运算指令
格式:
NOT OPRD
操作:
操作数按位取反再送回原地址
注:
指令中的操作数不能是立即数 指令的执行对标志位无影响
10
“非”指令应用例
例:NOT BYTE PTR[BX] NOT AL