微机原理与接口技术--第3章3.3.3逻辑和移位指令-550

合集下载

微机原理与接口技术课件微机第三章ppt课件

微机原理与接口技术课件微机第三章ppt课件

15
8 7 6 5 43 210
1 0 0 0 1 0 D W MOD REG R/M
操作码
0:数据从寄存器传出 1:数据传至寄存器
2.立即数寻址指令的编码 3.包含段寄存器的指令的编码 4.段超越前缀指令的编码
3-3 8086的指令集
8086指令系统按功能可分为6大类型:
1、 数据传输类 2、 算术运算类 3、 逻辑运算和移位类 4、 串操作类 5、 控制转移类 6、 处理器控制类
一、数据传送指令
数据传送指令又可以分成4种:
l 通用数据传送 l累加器专用传送指令 l 目的地址传送 l 标志寄存器转送
指令的共同特点是:
1、除POP和SAHF指令外,这类指令的操作 结果不会影响FR寄存器中的标志。
2、指令中有两个操作数,目的操作数和源 操作数,其执行过程为:
目的操作数 源操作数,
在字符串运算指令中作源变址寄存器用 SI 在间接寻址中作变址寄存器用
在字符串运算指令中作目标变址寄存器用 DI 在间接寻址中作变址寄存器用
BP 在间接寻址中作基址指针用
SP 在堆栈操作中作堆栈指针用
隐含性质 不能隐含 隐含 隐含 隐含 隐含 不能隐含 隐含 隐含 不能隐含 隐含 不能隐含 隐含 不能隐含 隐含 不能隐含 不能隐含 隐含
例: MOV AX , [3E4CH] ;A1 4C 3E MOV [1234H] , AL ;A2 34 12
两个概念
段超越: MOV AX , [3E4CH] MOV AX , ES:[3E4CH]
符号地址: MOV AX , RESULT
如何区分RESULT是立即数还是符号地址?
如果 RESULT EQU 3E4CH; 立即数 MOV AX,RESULT

《微机原理与接口技术》课件——第3章8086指令系统(3-3)

《微机原理与接口技术》课件——第3章8086指令系统(3-3)

•例如:
• MOV SI,2000H
• MOV DI,3000H
• MOV CX,100 ;CX←传送次数
• CLD ;设置DF=0,实现地址增加
•again: MOVSB ;传送一个字节
• DEC CX ;传送次数减1
• JNZ again ;判断传送次数CX是否为0,不为0,则转

移again处执行;
17
§3-3 8086的指令系统 ——字符串处理指令
④DF标志:控制字符串处理的方向。 DF=0为递增方向。DS:SI指向源串首地址,每执行一次 串操作:字节串操作时,SI、DI分别增1;字串操作时,SI 和DI分别增2; DF=1为递减方向。DS:SI指向源串末地址,每执行一次 串操作:字节串操作时减1;字串操作时减2。 STD指令使DF置1,CLD指令将DF清0。 ⑤串长度:要处理的字符串长度(字节或字数)放在CX寄存器 中。
②对于存储器操作,需指明是字还是字节。
注意:指令执行后,对标志位无影响。
例 NOT AX
;AX AX取反
NOT BL
;BL BL取反
NOT BYTE PTR[BX] ;对存储单元字节内容取反
后送回该单元
3
§3-3 8086的指令系统 ——逻辑运算和移位指令
⑵ AND逻辑与指令(Logical AND) 指令格式:AND 目的,源 指令功能:目的目的∧源 有置“0”功能 ⑶ OR逻辑或指令(Logical OR) 指令格式:OR 目的,源 指令功能:目的目的∨源 有置“1”功能。
15
§3-3 8086的指令系统 ——字符串处理指令
四、字符串处理指令
8086CPU提供了串操作指令,使长字符串的处理更快速、

微机原理与接口技术3[4逻辑]

微机原理与接口技术3[4逻辑]

15
循环移位指令
不带进位位的循环移位 带进位位的循环移位 左移 ROL 右移 ROR 左移 RCL 右移 RCR
循环移位指令的格式、 循环移位指令的格式、对操作数的要求与非循环移位 指令相同
16
不带进位位的循环移位
CF
CF
17
带进位位的循环移位
CF
CF
18
循环移位指令的应用
用于对某些位状态的测试; 用于对某些位状态的测试; 高位部分和低位部分的交换; 高位部分和低位部分的交换; 与非循环移位指令一起组成32位或更长字长数 与非循环移位指令一起组成32位或更长字长数 的移位。 的移位。 P97例 例
4
“或”运算指令
格式: 格式: OR OPRD1,OPRD2 , 操作: 两操作数相“ 操作: 两操作数相“或”,结果送目标地址 实现两操作数相“或”的运算; 实现两操作数相“ 的运算; 使某些位不变,某些位置“ ” 使某些位不变,某些位置“1” 在不改变操作数的情况下使OF=CF=0 在不改变操作数的情况下使 P94 例
7
“测试”指令
格式: 格式: TEST OPRD1,OPRD2 , 操作: 执行“ 运算, 操作: 执行“与”运算,但运算的结果不 送回目标地址。 送回目标地址。 应用: 应用:常用于测试某些位的状态 P94例 例
8
逻辑运算指令的几点讨论
与指令---拆字、 与指令 拆字、屏蔽信息 拆字 或指令---拼字 拼字、 或指令 拼字、组合信息 异或指令清零
19
程序例
MOV SI,1000H MOV DI,3000H MOV CX,4 BBB: BBB:MOV AL,[SI] MOV BL,AL AND AL,0FH OR AL,30H MOV [DI],AL INC DI MOV AL,BL

微机原理与接口技术(楼顺天)-第3章3

微机原理与接口技术(楼顺天)-第3章3

3.4 数据传送类指令
1.通用传送指令(MOV)
格式: MOV DST, SRC ;(DST)←(SRC) 说明:将SRC(源操作数)中的一个字节或一 个字传送到DST(目的操作数)所指定的位置。 MOV指令可以在立即数、存储单元、寄存器和 段寄存器之间传送数据,其传送路径如图3.3 所示。
立即数
AL AH
∴指令执行后,(AX)=1234H
3.4 数据传送类指令
设在数据段(DS段)有下面的变量定义: DATA1 DW 1234H , 5678H DATA2 DB 20H , 30H , 40H DATA3 DW 10 DUP(?) 则传送指令可以有: MOV BX,1122H MOV DATA3,BX ; (DATA3) (BX)
AX 78AD ????
3.4 数据传送类指令
⑤ 通用寄存器←→段寄存器
例6
MOV DS,AX MOV BX,ES
AX 1234 ES AA55
DS 1234 ???? BX AA55 ????
3.4 数据传送类指令
⑤ 通用寄存器←→段寄存器
例7
MOV DX,CS
DX 1234 ????
CS 1234
3.4 数据传送类指令
设在数据段(DS段)有下面的变量定义: DATA1 DW 1234H , 5678H DATA2 DB 20H , 30H , 40H DATA3 DW 10 DUP(?) 则传送指令可以有: DATA1 34H MOV AX , DATA1 12H 78H ; AX (DATA1) 56H
Load Effective Address 格式:LEA REG , MEM
功能:指令的功能是将源操作数MEM (存储单元)的有效地址(偏移地址) 传送到寄存器REG。 这是一条特殊指令,它传送的不 是操作数本身,而是操作数的有 效地址。 注:DST REG为通用REG,一般用BX、BP、SI、DI。

微机原理 3-3指令系统Ⅳ逻辑移位

微机原理 3-3指令系统Ⅳ逻辑移位

微机原理与接口技术
第3章 指令系统 Ⅳ
3、算术左移指令 SAL
形式1: SAL 操作数, 1
形式2: SAL 操作数, CL
功 能:完全与逻辑左移指令SHL一样。
微机原理与接口技术
第3章 指令系统 Ⅳ
4、算术右移指令 SAR
形式1: SAR 操作数, 1 形式2: SAR 操作数, CL 功 能: 将操作数连同CF的内容一起右移1位(CL) 位。高位移空的位补“符号位”。 注 解: (1)操作数右移N位,具有带符号数除以2N的功能。 (最后dest不能为0) (2)该指令有如下2种形式: SAR R,1/CL ;把寄存器内容右移1位或(CL)位 SAR M,1/CL ;把内存数内容右移1位或(CL)位
微机原理与接口技术
第3章 指令系统 Ⅳ
5、不带进位标志左循环移位指令 ROL
形式1:ROL 操作数, 1 功 能:把操作数的内容首尾连接起来循环左移1位。 CF的内容为操作数最高位的原值,CF原值丢失。
形式2:ROL 操作数, CL
功 能:把操作数的内容首位连接起来进行循环左移, 移位的次数为CL寄存的值。 注 解: (1)CF为最后移入值,OF值同SHL。
功 能 : 将操作数连同CF的内容一起左移,尾部空 位补“0”,移动次数为CL中寄存的数。 注 解: (1)操作数左移N位,具有无符号数乘2N的功能, 但运算速度比乘法快很多。(最后dest不能为0)
(2)CF为最后移入值,OF不定。
微机原理与接口技术 判断: SHL AX,1 SHL AX,CL SHL DX,CL SHL AX,2
2、OR 3、NOT 4、XOR
5、TEST
微机原理与接口技术
第3章 指令系统 Ⅳ

微机原理与接口技术第3章(指令部分)

微机原理与接口技术第3章(指令部分)
第 3 章 指令系统及汇编语言程序设计
例:编程计算 0+1+2+3+4+ -----10 编程计算
MOV AL,0 , MOV BL,1 , MOV CL,10 NEXT:ADD AL,BL , INC BL DEC CL JNZ NEXT ;CL≠0 转 ≠ HLT
1
3.1 概述 一、指令包含的基本内容
12
(3)相对寻址
例: MOV AX, [SI+100H]
;结果 : 结果 AX (DS×16+SI+100H) ×
例:MOV AL,[BP+DATA] MOV AL, DATA[BP] ; DATA是符号表示的位移量。 表示的位移量 是符号表示的位移量。
结果 : AL (SS×16+BP+DATA) ×
11
(2)间接寻址 例:MOV AX,[BX] , •结果 : AX 结果 (DS×16+BX) ×
...
3000H:0000H : • EA= BX /SI /DI , 物理地址=DS*16+EA 物理地址 • EA= BP 物理地址=SS*16+EA 物理地址 :1234H :50H :1235H :30H
1. 做什么操作? 做什么操作? MOV ,ADD, OR,CMP等助记符 等助记符
2. 操作的数据是什么? ①CPU内的寄存器; 操作的数据是什么? 内的寄存器 内的寄存器; 内存的某一个或几个单元 单元; ②内存的某一个或几个单元; 结果放在那里? 3. 结果放在那里? 立即数。 ③立即数。 端口; 端口 ④I/O端口; 下一条指令在哪里? 4. 下一条指令在哪里? IP←IP+1

第03章 指令系统 微机原理与接口技术 课件

第03章  指令系统 微机原理与接口技术 课件
微机原理与接口技术 第三章 指令系统
2020/10/3
1
第一节 指令的基本结构和执行时间
指令
指令系统
8086/8088CPU的指令系统共包含92种基 本指令,按照功能可将它们分为6大类:
• 数据传送指令
• 算术运算指令
• 逻辑运算和移位指令
• 串操作指令
• 控制转移指令
• 处理器控制指令
2020/10/3
执行的结果为(AX)=789AH
2020/10/3
12
2.选择BP作为间址寄存器 操作数在堆栈段(没有使用段超越时)
MOV [BP],AX 若已知(SS)=6000H,(BP)=1500H,则操作数的
物理地址为: 6000H×10H+1500H=61500H
若已知(AX)=5566H,则指令的执行结果为: 66H送到61500H内存单元, 55H送到61501H内存单元
2020/10/3
13
无论用SI、DI、BX或BP作为间址寄存器, 都允许段超越。
MOV ES:[DI],AX MOV DX,DS:[BP]
2020/10/3
14
五、变址寻址(Indexed Addressing)
以指定的寄存器内容, 加上指令中给出的8位或 16位位移量(必须要以 一个段寄存器作为基地 址),作为操作数的地 址。
2020/10/3
7
直接寻址:
MOV AX,[3200H]
如果DS=5000H,则所 寻找的操作数的物理 地址: 5000H×10H+3200H =50000H+3200H
=53200H
2020/10/3
8
段超越 : MOV BX,ES:[2100H]

微机原理汇编与接口技术第3章

微机原理汇编与接口技术第3章

“除10取余”法
; 将8位二进制数扩展为16位 ; 商→AL,余数→AH(个位数) ;个位暂存 ; 商→AL,余数→AH(十位数) ; BCD数十位与个位合并 ; AH中余数为BCD数百位 ;BCD数十位与个位送AL
11
如,用除10取余法将8位二进制数FFH转换为BCD数 255H的二进制运算如下图所示
13
3.1.1 乘除法指令
格式:CBW ; AL的最高位扩展至AH CWD ; AX的最高位扩展至DX CWDE ;AX的最高位扩展至EAX的高16位 CDQ ;EAX的最高位扩展至EDX

指令都隐含操作数

在做8位除以8位、16位除以16位、 32位除以
32位的符号整数除法之前,应先扩展AL或AX或 EAX中的被除数。
例3.3字变量W和字节变量B分别存放着两个非压缩BCD数,编 写求两数之积,并将它存储到JJ字节变量中的程序。 程序段如下: W DW 0307H B DB 9 JJ DB 3 DUP(0) MOV AL,BYTE PTR W ;AL=07H MUL B ;AX=003FH AAM ;AX=0603H MOV WORD PTR JJ,AX MOV AL,BYTE PTR W+1 ;AL=03H MUL B ;AX=001BH AAM ;AX=0207H ADD AL,JJ+1 ;07H+06H=0DH, 即AL=0DH AAA ;进位直接加入AH!AX=0303H MOV WORD PTR JJ+1,AX
26
3.1.2 BCD数调整指令
(2)除法调整 格式: AAD 功能:将AX中的两位非压缩BCD数变换成二进制数集 中放在AL中。 如: 注: 此指令可对被除数进行预 MOV AX,0906H MOV DL,06H 调整 ;AX=0060H 加、减和乘法调整在相应 AAD DIV DL ;AL=10H,AH=0 运算操作之后进行,而除 MOV DL,AH ;存余数 法的调整在除法操作之前 AAM ;AX=0106H 进行 27
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
33
2. 循环移位指令
不带进位的循环移位
左移 ROL 右移 ROR
带进位的循环移位
左移 RCL 右移 RCR
指令格式、对操作数的要求与非循环移位指令相同
34
不带进位的循环移位ROL和ROR
CF CF
35
带进位的循环移位RCL和RCR
CF CF
36
循环移位指令的应用
用于对某些位状态的测试; 高位部分和低位部分的交换; 与非循环移位指令一起组成32位或更长字
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”。
AND AX, 1110111101111111B
6
2.“或”运算指令
格式:
OR dest,src
操作:
两操作数相“或”,结果送目标地址
7
“或”指令的应用
实现两操作数相“或”的运算
OR AX,[DI]
使某些位不变,某些位置“1”
OR CL,0FH
在不改变操作数的情况下使OF=CF=0
OR AX,AX
8
“或”指令应用例
OR BX, 0001 0000 1000 0000B
9
3.“非”运算指令
格式:
NOT OPRD
操作:
操作数按位取反再送回原地址
注:
指令中的操作数不能是立即数 指令的执行对标志位无影响
10
“非”指令应用例
例:NOT BYTE PTR[BX] NOT AL
移动2次
0
00011010
CF
CF
0
CF
0
29
算术右移SAR
格式: SAR OPRD,1 SAR OPRD,CL
有符号数 的右移
CF
30
非循环移位指令的应用
左移可实现乘法运算
每左移1位,相当于给目标操作数乘以2
右移可实现除法运算
每右移1位,相当于给目标操作数除以2
31
非循环移位指令例1
长数的移位。
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
逻辑运算综合例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
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 算数左移和逻辑左移的移动原理相同
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
例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
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
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
题目答案:D
22
2、移位指令
非循环移位指令 循环移位指令
23
移位指令
移位指令在格式上应注意的两点:
移动一位时由指令直接给出; 移动两位及以上,则移位次数由CL指定。
学习移位指令应注意:
操作码的表示; 指令的工作原理。
24
1. 非循环移位指令
逻辑左移 SHL 算术左移 SAL 逻辑右移 SHR 算术右移 SAR
题目答案: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
39
循环移位指令例3
例:将一个16位无符号数x除以512,该数原 存在以DATA为首地址的两个连续单元中。
MOV AX,DATA MOV CL,9 SHR AX,CL HLT
40
逻辑运算与移位类指令
逻辑运算指令 逻辑运算指令对操作数的要求大多与MOV指 令相同。
“非”运算指令为单操作数指令,其操作数不 能是立即数;
“非”运算指令不影响标志位;其他逻辑运算 指令会影响6个状态标志位,且不论执行结果 如何,都会使OF=CF=0
相关文档
最新文档