当前位置:文档之家› 微机原理第3章2

微机原理第3章2


(2)使CX的b11, b7, b3 位清零。
(3)测试DX的b0 、 b8 位是否同是1.
(4 )以下可使寄存器AX和CF同时清零的指令 是
A. SUB AX, AX B. XCHG AX, AX
C. PUSH AX
D. XOR AX, AX
21
例3—28 统计负数的个数
从4000 H开始的单元中存放有32个有符号数, 统计负数的个数,存人 BUFFER单元中。
格式:
NOT OPRD
操作:
操作数按位取反再送回原操作数
注:
指令中的操作数不能是立即数,只能是 MEM/REG
指令的执行对标志位无影响
例:NOT BYTE PTR[BX] 16
(4)“异或”运算指令
格式:
XOR OPRD1,OPRD2
操作:
两操作数相“异或”,结果送目标地址
AL
00011010
CF
0
CF
0
CF
0
29
(3) 算术右移指令SAR
格式: SAR OPRD,I SAR OPRD,CL
有符号数 的右移
CF
30
算术右移 符号位保持不变
31
非循环移位指令的应用
左移可实现乘法运算 右移可实现除法运算
32
例3-30 16位无符号数 乘以10
8086指令系统(2)
1
三、逻辑运算和移位类
逻辑运算
移位操作
非循环移位 循环移位
2
逻辑运算和移位指令
3
指令类型
逻辑运算
与,或,非,异或
移位操作
非循环移位,循环移位
4
1、逻辑运算指令
逻辑运算指令对操作数的要求大多与ADD指令相同 。“非”运算指令要求操作数不能是立即数;(“非” 指令同INC,其他指令搭配规则同ADD)
除“非”运算指令外,其余指令的执行都会使标志 位OF=CF=0,AF不定,SF、 PF、 ZF有影响。
5
(1)“与”指令:
格式:
AND OPRD1,OPRD2
操作:
两操作数相“与”,结果送目标地址。
6
“与”指令的应用
实现两操作数按位相与的运算
AND BL,[SI]
使目标操作数的某些位不变,某些位清零。原 则是清零位与0相与,不变位与1相与。
AND AL,0FH
自身相与:使CF=OF=0,内容不变。
AND AX,AX
7
“与”指令应用例
从地址为3F8H的端口中读入一个字节数, 如果该数的bit1位为1,则可将DATA为首 地址的一个字从38FH端口输出;否则不能 进行数据传送。 编写相应的程序段。
8
“与”指令应用例
开始 取待输出数的 偏移地址
取输入口地址
读入状态字
测试bit1位状态
N
Bit1=1?
Y
取输出口地址
输出一个字
9
“与”指令应用例
LEA SI,DATA
MOV DX,3F8H
WATT:IN AL,DX
AND AL,02H
JZ WATT
;ZF=1转移
MOV DX,38FH ;输出1个字
MOV AX,[SI]
OUT DX,AX 10
OR AX,AX
12
“或”指令的应用例
对ASCII码进行偶校验:
OR AL,AL;影响标志 JPE GOON ; OR AL,80H GOON:….
PF=1转移
13
“或”指令的应用
将一个二进 制数9变为字 符‘9’
如何实现?
14
9变为字符‘9’
MOV AL , 9 OR AL ,30H
15
(3)“非”运算指令
(2)“或”运算 指令
格式:
OR OPRD1,OPRD2
操作:
两操作数相“或”,结果送目标地址
11
“或”指令的应用
实现两操作数相“或”的运算
OR AX,[DI]
使某些位不变,另一些位置“1”。原则是不 变位与0相或,置1位与1相或。
OR CL,0FH
自身相或:使OF=CF=0,结果内容不变。
19
源程序代码:
LEA SI,DATA MOV DX,3F8H WATT:IN AL,DX
AND AL,2AH;测试是否同时为1 CMP AL,2AH JNZ WATT
MOV DX,38FH;输出1个字 MOV AX,[SI] OUT DX,AX
20
问题(6)
按下列要求写出相应的指令和程序段。
(1)写出两条使BX内容清零的指令。
27
(2) 逻辑右移指令SHR
格式: SHR OPRD,I SHR OPRD,CL
无符号数 的右移
0
CF
移动一位后,若次高位与最高位不相等,则OF=1;否则OF=0
28
逻辑右移例:
MOV AL,68H
MOV CL,2
SHR AL,CL
AL
0
0110100 0
移动1次
0
移动2次
0
AL
00110100
例: XOR BL,80H
XOR AX,AX
两操作数自身相异或,结果为0,
CF=OF=0,达到清零目的。
17
(5)“测试”指令
格式:
TEST OPRD1,OPRD2
操作:
执行“与”运算,但运算的结果不送回目 标操作数。影响标志。
应用:
常用于测试某些位的状态。
18
例:
从地址为3F8H的端口中读入一个字节数,当 该数的bit1, bit3, bit5位同时为1时,可从 38FH端口将DATA为首地址的一个字输出, 否则就不能进行数据传送。 编写相应的程序段。
XOR DX , DX; DX=0,CF=OF=0 MOV SI , 4000H MOV CX ,20H; 32个数字
22
例3—28 统计负数的个数
AGAIN : MOV AL ,[SI] INC SI TEST AL ,80H;测试D7位 JZ NEXT;为正数转 INC DX ;为负数, DX 加1
25
1) 非循环移位指令
逻辑左移 算术左移 逻辑右移 算术右移
26
(1)算术左移和逻辑左移
算术左移指令SAL: SAL OPRD,1 SAL OPRD,CL
逻辑左移指令SHL: SHL OPRD,1 SHL OPRD,CL
有符号数 无符号数
移动一位后,若CF与最高不相等,则OF=1;否则OF=0
NEXT : DEC CX JNZ AGAIN ;CX不等于0转 MOV BUFFER , DX
23
源、目的操作数的搭配规则:
指令OR、 AND、 XOR、 TEST 注意事项:与MOV 基本相同。Leabharlann IMMMEMREG
24
2、移位指令
非循环移位指令 循环移位指令
注: 移动一位时由指令直接给出; 移动两位及以上,则移位次数由CL指定。 OPRD=MEM/REG
相关主题