chapter3_3 8086指令系统-哈版2_2

合集下载

第3章 8086指令系统2PPT课件

第3章 8086指令系统2PPT课件

2020/10/31
第三章 8086/8088指令系统
14
(1)MOV指令
是基本传送类指令,实现字或字节数据的复制。 指令格式:MOV dst,src 指令功能:将源操作数src,传送到目的操作数dst中。 如:MOV AL,12H
功能:执行指令就是将立即数12H传送到AL中, 执行完指令后AL=12H。
2020/10/31
第三章 8086/8088指令系统
13
(3)装入附加段寄存器(Load Extra Segment Register)
指令格式:LES dst,src 指令功能 :src给出的是有效地址,低字送dst , 高字送ES。 这条指令用来将内存中的双字数据装入通用寄 存器和附加段寄存器ES。
②立即数送存储单元;
如: MOV [BX],1122H ;将1122H送到EA=BX
;的内存单元中
③通用寄存器之间的传送;
如: MOV BX,AX
;BX=AX
MOV AL,AH
;AL=AH
④通用寄存器和段寄存器之间的传送;
如:MOV DS,AX
;DS=AX
MOV AX,ES
;AX=ES
2020/10/31
2020/10/31
第三章 8086/8088指令系统
15
(1)MOV指令
MOV传送类指令可以实现六种形式的传送:
段寄存器 CS DS ES SS
立即数
存储器
通用寄存器 AX BX CX DX
SI DI SP BP
2020/10/31
第三章 8086/8088指令系统
16
(1)MOV指令
①立即数送寄存器; 如:MOV BX,1122H ;BX=1122H

微机原理第3章8086指令系统

微机原理第3章8086指令系统

微机原理第3章8086指令系统8086是Intel公司推出的一种16位微处理器,是x86架构的第一代处理器。

8086指令系统是8086微处理器所支持的指令集合,本章将介绍8086指令系统的基本特性和指令编码格式。

8086指令系统采用变长指令编码格式,指令长度可以是1个字节到多个字节,提供了多种寻址方式和丰富的操作类型。

8086指令系统共支持256条标准指令,可以执行各种算术逻辑运算、数据传输和控制流操作。

8086指令由操作码和操作数组成。

操作码指示了执行的具体操作,操作数则是操作码所针对的数据。

8086指令系统提供了多种寻址方式,包括立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、寄存器相对寻址和基址变址寻址等。

立即寻址是将常数或数据直接作为操作数,如MOVAX,1000H,表示将立即数1000H传送到AX寄存器。

直接寻址是通过指定一个内存单元的地址来作为操作数,如MOVAL,[BX],表示将BX寄存器指向的内存单元的内容传送到AL寄存器。

寄存器寻址是直接将一个寄存器作为操作数,如MOVAX,BX,表示将BX寄存器的内容传送到AX寄存器。

除了寻址方式,8086指令系统还提供了多种操作类型,如算术逻辑运算、数据传输和控制流操作等。

算术逻辑运算可以进行加、减、乘、除等数学运算,如ADD、SUB、MUL、DIV等指令。

数据传输可以进行数据的读取和存储操作,如MOV、PUSH、POP等指令。

控制流操作可以用于程序的跳转和条件判断,如JMP、JZ、JC等指令。

8086指令系统还支持多种数据类型的操作,包括字节、字和双字等。

字节操作是对8位数据进行操作,字操作是对16位数据进行操作,双字操作是对32位数据进行操作。

指令的操作数大小可以根据需要选择合适的寄存器或内存单元。

总之,8086指令系统是8086微处理器所支持的指令集合,提供了多种寻址方式和操作类型,支持多种数据类型的操作。

通过掌握8086指令系统,可以编写出高效、精确的8086汇编程序,实现各种功能和算法。

第三章 8086指令系统2

第三章  8086指令系统2

4、除法指令


(1) 无符号数除法指令 DIV 一般格式:DIV OPRD (2) 带符号数除法IDIV 一般格式:IDIV OPRD IDIV指令认为操作数的最高位为符号位,商的最 高位也为符号位。 字节运算时被除数在AX中;商在AL中,余数在 AH中。字运算时被除数为DX:AX构成的32位数, 商在AX中,余数在DX中。 例:AX=2000H,DX=200H,BX=1000H DIV BX执行后,AX=2002H ,DX=0000。







⑵ADC OPRD1,OPRD2;带进位的加法 功能:OPRD1←OPRD1+OPRD2 +CF ADC指令主要用于多字节运算中。若有两个四字 节的数,分别放在自FIRST和SECOND开始的存 储区中,每个数占四个存储单元,低字节在低地 址,以下程序段可完成相加。 MOV AX,FIRST ADD AX,SECOND;进行字运算 MOV THIRD,AX MOV AX,FIRST+2 ADC AX,SECOND+2 MOV THIRD+2,AX 这条指令对标志位的影响与ADD相同。

相等的比较:
①若两者相等,相减以后结果为零,ZF标
志为1,否则为0。 ②若两者不相等,则可在比较指令之后利 用其它标志位的状态来确定两者的大小。 大小的比较: 如果是两个无符号数(如CMP AX,BX) 进行比较,则可以根据CF标志的状态判断 两数大小。若结果没有产生借位(CF=0), 显然AX≥BX;若产生了借位(即CF=1), 则AX<BX。

例如: ADD AL,BL DAA 执行前:AL=28H,BL=68H 执行ADD后:AL=90H,AF=1 执行DAA指令后,AL=96H,CF=0,AF=1。 MUL BL AAM 执行前:AL=07,BL=09 执行MUL BL 后,AX=003FH 执行AAM指令后,AH=06H,AL=03H。 注意:BCD码进行乘除法运算时,一律使用无符 号数形式,因而AAM 和AAD应固定地出现在MUL 之后和DIV之前。

第3章 8086的指令系统(指令集2) _2h

第3章 8086的指令系统(指令集2) _2h

勘查技术与工程专业《微机原理与接口》
四. 程序控制转移指令——子程序调用和返回 1、子程序调用指令CALL •段内直接调用 例:CALL •段内间接调用 例:CALL •段间直接调用 例:CALL •段间间接调用 例:CALL NEAR 目标地址 WORD PTR [SI] FAR 目标地址 WORD PTR [SI]
三. 位操作指令——移位指令 格式: 指令 目的操作数,1 指令 目的操作数,CL 例如: SHL AL, 1 MOV CL, 3 SAR AX,CL
勘查技术与工程专业《微机原理与接口》
三. 位操作指令——移位指令 例题:利用移位指令将AL中的数乘以10
AL×10=AL×(21+23)
;设AL=00000011 SAL AL, 1 ;AL=0000 0110 ;BL=0000 0110 ;CL=0000 0010 ;AL=0001 1000 ;AL=0001 1110 +
MOV
MOV SAL ADD
BL , AL
CL, 2 AL, CL AL, BL
勘查技术与工程专业《微机原理与接口》
三. 位操作指令——循环移位指令 所谓循环移位,是指移位时从一端移出的位 进入另一端,所谓带进位是指移位时是否将 CF包含在移位循环的内部。 1、不带进位循环左移指令ROL 2、不带进位循环右移指令ROR 3、带进位循环左移指令 RCL 4、带进位循环右移指令 RCR
五. 串处理指令 4、串装入指令LDSB和LDSW 执行:AL/AX←源操作数 5、串比较指令CMPSB和CMPSW 执行: 目的操作数← AL/AX 用途—— 串操作主要用于大量数据块移动时,在后续 章节将通过例题加强对串指令的理解。
勘查技术与工程专业《微机原理与接口》

第三章 8086的指令系统()PPT课件

第三章 8086的指令系统()PPT课件

7、串寻址(String addressing)
串寻址方式仅在8086的串指令中 使用。规定源操作数的逻辑地址为 DS:SI;目的操作数的逻辑地址为 ES:DI。当执行串指令的重复操作时, 根据设定的方向标志(DF),SI和 DI会自动调整。
8、I/O(输入/输出)端口寻址 (I/O port addressing)
2、MOV数据传送指令
其格式为:
MOV 目的操作数,源操作数
目的操作数和源操作数均可采用不 同的寻址方式,但两个操作数的类 型必需一致。
二、寻址方式介绍
1.立即寻址(Immediate addressing) 操作数就在指令中,紧跟在操作码后
面,作为指令一部分存放在内存的代 码段中,这种操作数称为立即数。
1、通用数据传送指令
1)、MOV 传送指令 指令格式为: MOV 目的 ,源
2)PUSH 进栈指令
指令格式为:PUSH 源操作数 其操作过程是: a、SP-1,
指示堆栈中可以存放数据的位置,存源 操作数的高8位; 。
3)POP 出栈指令
指令格式为:POP 目的操作数
一、8086的操作码
指令由操作码和操作数(地址码) 组成。8086的指令长度是可变的,一 条指令一般由1-6个字节组成(加上 前缀字节,最长可为7字节)。
二、8086指令中寄存器的编码
8086指令中通常使用一个或两个 操作数,在少数指令中有隐含的第三 个操作数。
三、指令中的操作数
1、单指令操作数
当操作数在外部设备时,使用I/O指令。 此时有两种不同的寻址方式访问I/O端口。 (1) 直接端口寻址方式。 (2) 采用寄存器间接寻址方式 (3) 输入指令中目的操作数可为AL或
AX;输出指令中源操作数可为AL或AX。 例:

第3章 8086指令系统(2)PPT课件

第3章 8086指令系统(2)PPT课件

;暂存于CL
SAL AL,1
;X*4
SAL AL,1
;X*8
ADD AL,CL
;(x*2)十(x*8)
4
2.逻辑右移指令SHR
格式:SHR dst, CL/1 功能:reg/mem右移1/CL位;最高位补0,最低位进入CF 其余同 SAL/SHL
dst
CF
0
SHR
例如: SHR BYTE PRT 100[SI],CL
3)
②(CX)←(CX)-1;
4)
③执行后跟的串操作指令;
5)
④重复①~③。
REP前缀可以理解为:当数据串没有结束(CX≠0),则 继续传送。
13
2) REPE/REPZ 相等/结果为0 (ZF=1)时重复
指令功能:若CX≠0,且ZF=1,重复执行,CX←CX-1,
若CX=0,或 ZF=0,执行下一条指令。
可用于数的移位,或实现简单乘2运算
3
例:用移位指令实现快速乘法:
求y=10x=(2*x)+(8*x)<(255)。
用乘法指令实现,花时间长(70~77时钟周期)。若用移位和 寄存器加指令实现,则使执行时间减少很多。设数X已存于AL中, 其程序段如下:
SAL AL,1
;左移一位,x*2
MOV CL,AL
一般用于比较指令和搜索指令,表示只有当两数相等方可 继续比较;若遇到两数不相等时,则可提前结束串操作。即当 数据串没有结束(CX≠0),并且串相等(ZF=1),则继续比 较.
3.5 移位指令和循环移位指令
3.5.1 移位指令 移位指令:算术左、右移指令SAL、SAR
逻辑左、右移指SHL、SHR。
格式 SHL src,CL1/1 SAL src,CL/1 SAR src,CL/1 SHR src, CL/1

汇编教程 第三章 8086的指令系统2

汇编教程 第三章 8086的指令系统2

加法指令(2)
5
1)ADD 2)ADD 3)ADD 4)ADD 5)ADD 6)ADD 7)ADD
BH,CX AX,DX SI,BP BX,[BX+SI] DX,[BX+DI] AX,[BX+BP] AX,[SI+DI]
前面所有指令都可以换成 ADC。对于多字节加法, ADC。对于多字节加法,最低字 可以用ADD ADD, 节(字)可以用ADD,剩下的应 使用ADC ADC。 使用ADC。如(dx ax)+(si di) AX,DI; 16位相加 ADD AX,DI;低16位相加 DX,SI; 16位相加 位相加+CF ADC DX,SI;高16位相加+CF 11)INC 12)INC 13)INC 14)INC 15)INC 16)INC 25H AL CX [BX+SI] BYTE PTR[BX+SI] WORE PTR[BX+DI+25]
2.2节
目录 2.3.3--2.2.6(算术)
3
OF
DF
IF TF
SF
ZF
AF
PF
CF
一、 加法指令
1. ADD ADD reg/mem,imm;dst← dst+src ADD reg/mem,reg/mem ;dst← dst+src ← 排除操作数: ;排除操作数:mem ,mem 2.ADC 指令格式同ADD;dst← dst+src+CF 3.INC INC reg/mem ; reg/mem←reg/mem+1
-
X X X X
X X X
结论: X=X+制数) 为二进制数
12

第3章 8086指令系统

第3章 8086指令系统

例如:MOV AX , [BX]
默认情况下,数据在DS段或SS段中,由间址寄存器决定; 物理地址PA = (DS) × 16 + (BX/SI/DI)
2017年3月13日星期一
;DS段 ;SS段
19
物理地址PA = (SS) × 16 + (BP)
寄存器间接寻址方式执行示意
地址加法器
该指令源操作数的寻址方式为寄存器相对寻址方式;
有效地址EA=(SI) + 100H =2445H,默认为DS段; 物理地址PA = (DS) × 16 + EA = 1000H ×16 + 2445H = 12445H
……
所以,该指令执行后 (BX) = (12445H) =2715H 12445H 15H
2017年3月13日星期一 5
3、示例指令
数据传送指令
MOV <目的操作数>,<源操作数> 指令功能 使用源操数的值为目的操作数赋值; 指令执行完,目的操作数的值与源操作数一样;
源操作数不变,目的操作数改变;
例如: MOV AX , 2 MOV AX , BX MOV AX , [BX]
∑ PA 20位
AH AL 1200H BH BL CH CL DH DL SP BP SI DI
通用寄存器 CS DS DS SS ES IP 内部暂存器 16位 输入/输出 控制电路 外 部 总 线
主存储器
1234H
16位
……
ALU
执行部 分控制 电路
12 3 4 5 8位 6 指令队列缓冲器
MOV AX , [BX]
第3章 8086指令系统

CH3(3)-8086的指令系统

CH3(3)-8086的指令系统

22
第三章
3.3 8086的指令系统
一、数据传送指令 二、算术运算指令 三、逻辑运算与移位指令 四、控制转移指令 五、字符串处理指令(自学) 六、处理器控制指令
23
第三章
五、字符串处理指令 特点:对存储器中一串数据进行处理的指令 相关概念
• 字符串:一系列存放在存储器中的字或字节数据
,不管它们是不是ASCII码。字符串长度可达64K
25
第三章
隐含约定
源串:地址为DS:SI;允许用段超越前缀修改段地址。
目的串:地址为ES:DI;不允许使用段超越前缀修改ES。
若要在同一段内进行串运算,必须使DS和ES指向同一段。
指针:每执行一次字符串指令,指针SI和DI会自动修改,
以指向下一个待操作单元。
DF标志:控制字符串处理的方向。
2
第三章
转 移 条 件

向 位 置
掌 握
简 单 应 用
无条件转移和过程调用指令
JMP CALL RET
无条件转移 过程调用 过程返回
条件转移
JZ / JE (10条) 直接标志转移 JA / JNBE (8条) 间接标志转移
条件循环控制
LOOP
LOOPE / LOOPZ LOOPNE / LOOPNZ JCXZ
DEC CX
JNZ AGAIN
29
第三章
2、CMPS 字符串比较指令 格式:CMPS 目的串,源串 功能:SI作指针的源串减去DI作指针的目的串数
据,结果反映在标志位上;原值不变;源串和目 的串指针自动修改,指向下一对待比较的串。 加重复前缀:
• REPE/REPZ CMPS ;直至CX=0(比完了)或ZF=0(

第3章 8086指令系统(2)

第3章 8086指令系统(2)
3.3 80X86指令系统
8086/8088指令系统按其功能分为以下类型:数 据传送指令、地址传送指令、标志寄存器传送 指令、算术运算指令、逻辑运算指令、移位指 令、控制转移指令、串操作指令、中断指令和 处理器控制指令。
一.数据传送指令
数据传送指令用于寄存器、存储单元、或输入
输出端口之间传送数据或地址。8086/8088有14
CMP AL,100
29
CMP指令执行后对标志位的影响
操作数类型
带符号的 二进制
CF ZF SF OF
两操作数的关系
01 0 0
等于
-010
小于
- 0 0 1 目的操作数 小于 源操作数
-000
大于
-011
大于
不带符号的 二进制
01 0 0
等于
10 -
- 目的操作数 低于 源操作数
00 -
-
高于
举例: n=8 bit 带符号数(-128~127), 无符号数(0~255)
PUSH AX
PUSH DX
78H
POP AX
56H
POP DX
34H
12H
9
(4)XCHG指令 格式:XCHG OP1,OP2 操作:源、目的操作数之间交换一个字节 或字的数据。源操作数或目的操作数只能 取通用寄存器或通用寄存器与存储器 例: XCHG AX,CX
XCHG AL,BL XCHG AX,[BP+DI]
中的数相乘,结果放在累加器中
乘积为双字节长时,结果放在AX中;乘积为双 字长时,分别放在DX(乘积的高16位)和AX中。 该指令的运行结果只影响标志位CF和OF 例:MOV AL,FIRST
MUL SECOND MOV THIRD,AX (2)IMUL指令 格式:IMUL SRC 该指令为带符号数相乘指令

第3章 8086的指令系统(指令集1) _2h

第3章 8086的指令系统(指令集1) _2h

二. 数据传送类指令——累加器专用传送
1、输入指令IN 格式:IN AL,I/O地址 IN AX,I/O地址 形式:IN IN IN IN AL,n AX,n AL,DX AX,DX
I/ O地址00H-FFH
I/O地址0000H-FFFFH
约定:I/O地址>255时,必须采用DX间接寻址
二. 数据传送类指令——累加器专用传送
二. 算术运算类指令——加法
5、非压缩BCD数加法结果校正指令AAA MOV AL,05H ADD AL,09H AAA 结果是多少?课后思考。
二. 算术运算类指令——减法
指令种类—— 1)算术减法SUB 2)带借位算术减法SBB 3)减1指令DEC 4)压缩BCD数减法结果校正DAS 5)非压缩BCD数减法结果校正AAS 6)比较指令CMP 7)取补指令NEG
例题:执行查表程序,查出0~9的ASCII码 MOV BX, 2000H MOV AL, 6 XLAT DS=1000H EA=2000H+6 物理地址=DS×10H+EA … 10000H 12000H …

30H … 36H … 12009H 39H
12006H
二. 数据传送类指令——目标地址传送
2、输出指令OUT 格式:OUT I/O地址,AL OUT I/O地址,AX 形式:OUT OUT OUT OUT n, AL n, AX DX, AL DX, AX I/ O地址00H-FFH I/O地址0000H-FFFFH
约定:I/O地址>255时,必须采用DX间接寻址
二. 数据传送类指令——累加器专用传送
二. 算术运算类指令——乘法
1、无符号乘法指令MUL 格式:MUL 源操作数
约定—— 1)执行操作: AL × 源操作数 →AX AX × 源操作数 →DX,AX

第三章 8086指令系统

第三章 8086指令系统

⑵寄存器间接寻址 操作数的有效地址由基址寄存器BX、BP或变址寄存器 操作数的有效地址由基址寄存器BX、BP或变址寄存器 SI、DI提供。 SI、DI提供 提供。 BX BP SI BP
EA=
例如: 例如:设DS=2000H, AX=7850H ,BX=1000H MOV AX,[BX]; , ;
3.1 8086寻址方式 寻址方式
一条指令的机器码通常包含操作码(OP)和操作 一条指令的机器码通常包含操作码(OP) 数两部分。指令的格式如下: 数两部分。指令的格式如下: 操作码OP 操作码OP CODE 操作数Operand 操作数Operand
例如,MOV AL,03H; 例如, , ; SOPD 源操作数 目的操作数 DOPD 操作码 •操作码表示指令执行什么操作(必有) 操作码表示指令执行什么操作(必有) •操作数表示参加操作的数或数的存放地址
寻找操作数存放地址的方式称为寻址方式 寻找操作数存放地址的方式称为寻址方式 8086的寻址方式分为两类: 8086的寻址方式分为两类: 的寻址方式分为两类 •数据寻址方式
√本节
•转移地址寻址方式
3.1.1 立即寻址 该寻址方式中,指令直接给出 位或16位的操作数 直接给出8 该寻址方式中,指令直接给出8位或16位的操作数 立即数)。该数紧跟在操作码之后, )。该数紧跟在操作码之后 (立即数)。该数紧跟在操作码之后,作为指令的操 作数字段存放在指令代码中 如果是16位立即数, 如果是16位立即数,那么低位字节数存放在低地址 位立即数 单元中,高位字节数存放在高地址单元中。 单元中,高位字节数存放在高地址单元中。机器码存 放形式如图
00H
操作: 操作:3000×10H × +EA= 2000H + 1000H + 0250H P 33250H 33251H 78H 56H 数据段

微型计算机原理 chapter3 8086指令系统

微型计算机原理  chapter3 8086指令系统

2019年3月19日
第9页

例: MOV AX,[SI]
操作码
20000H DS + 1000H SI 21000H
AX
代 码 段

21000H 21001H
34
12 F5 数 据 段
12 AH
34 AL
63000H 63001H
用作间址的寄存器(SI、 DI、BX、BP)必须加上方 括号
2019年3月19日
位移量
有效地址
内存
数据 段地址
2019年3月19日 第20页
习题
设 BX=0158H,DI=10A5H,DISP=1B57H DS=2100H,SS=1100H,BP=0100H 如何确定下列指令的EA和物理地址? (1)MOV AX,DISP (2)MOV AX,BX (3)MOV AX,[BX] (4)MOV AX,DISP[BP] (5)MOV AX,[BX][DI]
比基址、变址寻址多了8位或16位的相对位移量。
偏移地址EA =
[BX] [BP]

[SI] [DI]

8位位移量 16位位移量
2019年3月19日
第16页
MOV AX,COUNT[BX][SI] … 60000H 2200H A500H + 64H 6C764H
AH AX
2019年3月19日
DS SI BX COUNT 6C764H AL 6C765H
直接寻址 寄存器 间接寻址
EA
指令
数据
寄存器
操作数在 内存数据 区中。
内存
寄存器 段地址
EA
数据
指令
寄存器 相对寻址
2019年3月19日

3第三章 8086指令系统(二)

3第三章 8086指令系统(二)

左移一位进CF,右边补0,相当于乘2。影响标志
若移位后最高位与CF不同,则OF=1,表示移位前后数据变号。
若移位位数大于1,所移的位数用CL存放。
July 19, 2013 Su Ri-jian
COLLEGE OF COMPUTER & COMMUNCATION ENGINEERING
3.3.3 逻辑运算与移位指令
0000 1111 0000 0000 0000 1111
与0异或,状态不变;与1异或,状态相反。 对某些位置1用OR;对某些位清零用AND;对某些位取反用 XOR。
July 19, 2013 Su Ri-jian
3.3.3 逻辑运算与移位指令 假设BX=1110 0011B, 变量VALUE的值为: 0111 1001B , 确定下列各条独立指令的结果。
July 19, 2013 Su Ri-jian
3.3.3 逻辑运算与移位指令
MOV AL, 02H SAL AL, 1 MOV AL, 02H SAL AL, 4 MOV AL, 02H MOV CL, 4
;AL: 0000 0010 ;AL: 0000 0100
COLLEGE OF COMPUTER & COMMUNCATION ENGINEERING
;逻辑非 AL=0BAH ;标志不变
3.3.3 逻辑运算与移位指令
5) TEST
TEST OPRD1, OPRD2 TEST mem , imm/reg
按位相与,结果只影响标志位
;mem∧imm/reg
TEST reg , imm/reg/mem ;reg∧imm/reg/mem
COLLEGE OF COMPUTER & COMMUNCATION ENGINEERING

chap03_Intel 8086指令系统(2)

chap03_Intel 8086指令系统(2)

2013-7-8
-6-
无条件转移JMP(续)
3, 段内间接转移
格式 JMP reg.寄存器 如 JMP BX JMP WORD PTR OPR 如:JMP word ptr [BP+Table] word ptr为操作符,指出其后的寻址方式所取得 的转向地址为一个字。
执行的操作:IP16位reg.或存储单元一个字的 内容。
2013-7-8
-7-
无条件转移JMP(续)
4, 段间直接远转移
格式 JMP FAR PTR OPR(标号Label) 执行的操作:IPopr的段内偏移地址 CSopr所在段的段地址 这里采用的是直接寻址方式,在汇编指令中OPR可 使用符号地址,而机器语言中则要指定转向地址 的偏移地址和段地址。 FAR PTR 是表示段间转移的操作符。
(2)JNZ(或JNE)(jump if not zero, or not euqal) 结果不为零(或不相等)则转移,测试条件ZF=0
2013-7-8 -12-
根据单个标志位的设置情况转移(续)
(3) JS(jump if sign)结果为负,则转移 测试条件 SF=1 (4) JNS(jump if not sign)结果为正,则转移; 测试条件 SF=0 (5) JO (jump if overflow)溢出则转移, 测试条件OF=1 (6) JNO 不溢出则转移,测试条件 OF=0 (7) JP(or JPE) (jump if parity /or ever) 奇偶位为1则转移,测试条件:PF=1 (8) JNP(JPO) (jump if not paritty,of parity odd)奇偶位为0则转移,测试条件:PF=0
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

例2.34:移位实现乘 :
mov si,ax si,1 si←2 shl si,1 ;si←2×ax si←3 add si,ax ;si←3×ax 逻辑左移一位相当于无符号数乘以2 逻辑左移一位相当于无符号数乘以 mov dx,bx 逻辑右移一位相当于无符号数除以2 逻辑右移一位相当于无符号数除以 cl,03 03h mov cl,03h dx←8 shl dx,cl ;dx←8×bx dx←7 sub dx,bx ;dx←7×bx dx←7 bx+ add dx,si ;dx←7×bx+3×ax
教学提示
在正确理解每条指令的功能 基础上, 基础上,可以阅读和编写有 实际意义的程序段
第2章
2.3 位操作类指令
位操作类指令以二进制位为基本单位 进行数据的操作; 进行数据的操作 ; 这是一类常用的指 令,都应该特别掌握 注意这些指令对标志位的影响
1、逻辑运算指令 AND OR XOR NOT TEST 2、移位指令 、 SHL SHR SAR 3、循环移位指令 、 ROL ROR RCL RCR
第2章
逻辑与指令AND
AND
对两个操作数执行逻辑与运算, 对两个操作数执行逻辑与运算 , 结果 送到目的操作数
AND reg,imm/reg/mem ;reg←reg∧imm/reg/mem AND mem,imm/reg ;mem←mem∧imm/reg
只有相“ 的两位都是1, 只有相 “ 与 ” 的两位都是 , 结 果才是1;否则, 果才是 ; 否则, “ 与” 的结果为 0 AND指令设置 指令设置CF = OF = 0,根据结果 指令设置 , 设置SF、 和 状态 而对AF未定义 状态, 设置 、ZF和PF状态,而对 未定义
演示 演示 演示 演示
第2章
循环移位指令对标志的影响
按照指令功能设置进位标志CF 按照指令功能设置进位标志 不影响SF、 、 、 不影响 、ZF、PF、AF 如果进行一位移动, 如果进行一位移动 , 则按照操作数的 最高符号位是否改变, 最高符号位是否改变 , 相应设置溢出 标志OF: 标志 : 如果移位前的操作数最高位 与移位后操作数的最高位不同( 与移位后操作数的最高位不同 ( 有变 化),则OF = 1;否则 ;否则OF = 0。当移 。 位次数大于1时 位次数大于 时,OF不确定 不确定
第2章
逻辑或指令OR
OR
对两个操作数执行逻辑或运算, 对两个操作数执行逻辑或运算 , 结果 送到目的操作数
OR reg,imm/reg/mem ;reg←reg∨imm/reg/mem OR mem,imm/reg ;mem←mem∨imm/reg
只要相“ 的两位有一位是1, 只要相 “ 或 ” 的两位有一位是 , 结果就是1;否则,结果为0 结果就是 ;否则,结果为 OR指令设置 指令设置CF = OF = 0,根据结果设 指令设置 , 状态, 置SF、ZF和PF状态,而对 未定义 、 和 状态 而对AF未定义
第2章
循环移位指令(rotate) )
将操作数从一端移出的位返回到另一 端形成循环, 分成不带进位和带进位, 端形成循环 , 分成不带进位和带进位 , 分别具有左移或右移操作
ROL reg/mem,1/CL ;不带进位循环左移 ROR reg/mem,1/CL ;不带进位循环右移 RCL reg/mem,1/CL ;带进位循环左移 RCR reg/mem,1/CL ;带进位循环右移
例题: 例题:逻辑运算 al,45 45h mov al,45h al,31 31h and al,31h al,45 45h mov al,45h al,31 31h or al,31h al,45 45h mov al,45h al,31 31h xor al,31h al,45 45h mov al,45h not al al=01 01h ;逻辑与 al=01h CF=OF=0 SF=0 ZF=0 PF=0 ;CF=OF=0,SF=0、ZF=0、PF=0 al=75 75h ;逻辑或 al=75h CF=OF=0 SF=0 ZF=0 PF=0 ;CF=OF=0,SF=0、ZF=0、PF=0 al=74 74h ;逻辑异或 al=74h CF=OF=0 SF=0 ZF=0 PF=1 ;CF=OF=0,SF=0、ZF=0、PF=1 al=0 ;逻辑非 al=0bah ;标志不变
操作数执行逻辑异或运算, 对两个操作数执行逻辑异或运算 , 结 果送到目的操作数
reg←reg⊕ XOR reg,imm/reg/mem ;reg←reg⊕imm/reg/mem XOR mem,imm/reg ;mem←mem⊕imm/reg mem←mem⊕
例题: 例题:逻辑指令应用 AND指令可用于复位某些位 指令可用于复位某些位( 相与) ; AND 指令可用于复位某些位 ( 同 0 相与 ) , 不 影响其他位: BL中 位清0 影响其他位:将BL中D3和D0位清0,其他位不变 and bl,11110110B bl,11110110B 11110110 ;OR指令可用于置位某些位(同1相或),不影 OR指令可用于置位某些位( 指令可用于置位某些位 相或) 响其他位:将BL中D3和D0位置1,其他位不变 响其他位: BL中 位置1 00001001B or bl, 00001001B XOR指令可用于求反某些位 指令可用于求反某些位( 相异或) ; XOR 指令可用于求反某些位 ( 同 1 相异或 ) , 不影响其他位: BL中 位求反, 不影响其他位:将BL中D3和D0位求反,其他不变 00001001B xor bl, 00001001B
NOT
对一个操作数执行逻辑非运算
NOT reg/mem ;reg/mem←~reg/mem
按位取反, 原来是“ 的位变 按位取反 , 原来是 “ 0”的位变 的位变为“ 为“1”;原来是“1”的位变为“0” ;原来是“ 的位变为 NOT指令是一个单操作数指令 指令是一个单操作数指令 NOT指令不影响标志位 指令不影响标志位
第2章
2.4 控制转移类指令
控制转移类指令用于实现分支 、 循环、 控制转移类指令 用于实现分支、 循环 、 用于实现分支 过程等程序结构, 是仅次于传送指令 过程等程序结构 , 是仅次于传送 指令 的最常用指令
重点掌握: 重点掌握:JMP/Jcc/LOOP CALL/RET INT n/IRET 常用系统功能调用 一般了解: 一般了解: LOOPZ/LOOPNZ INTO
例2.35:32位数移位 : 位数移位
;将DX.AX中32位数值左移一位 DX.AX中32位数值左移一位 ax,1 shl ax,1 dx,1 rcl dx,1
DX AX 0
CF
例2.36:位传送 :
;把AL最低位送BL最低位,保持AL不变 AL最低位送BL最低位,保持AL不变 最低位送BL最低位 AL AL、BL bl,1 、 ror bl,1 CF ror al,1 al,1
第2章
移位指令对标志的影响
按照移入的位设置进位标志CF 按照移入的位设置进位标志 根据移位后的结果影响SF、 、 根据移位后的结果影响 、ZF、PF 对AF没有定义 没有定义 如果进行一位移动, 如果进行一位移动 , 则按照操作数的 最高符号位是否改变, 最高符号位是否改变 , 相应设置溢出 标志OF: 标志 : 如果移位前的操作数最高位 与移位后操作数的最高位不同( 与移位后操作数的最高位不同 ( 有变 化),则OF = 1;否则 ;否则OF = 0。当移 。 位次数大于1时 位次数大于 时,OF不确定 不确定
TEST指令通常用于检测一些条件是否 指令通常用于检测一些条件是否 满足, 满足,但又不希望改变原操作数的情况
第2章
移位指令(shift) )
将操作数移动一位或多位, 将操作数移动一位或多位,分成逻辑移位和 算术移位, 算术移位,分别具有左移或右移操作
演示 SHL reg/mem,1/CL 逻辑左移,最高位进入CF 最低位补0 CF, ;逻辑左移,最高位进入CF,最低位补0 SAL与SHL相同 SAL与SHL相同 演示 SHR reg/mem,1/CL 逻辑右移,最低位进入CF 最高位补0 CF, ;逻辑右移,最低位进入CF,最高位补0 SAL reg/mem,1/CL 算术左移,最高位进入CF 最低位补0 CF, ;算术左移,最高位进入CF,最低位补0 演示 SAR reg/mem,1/CL 算术右移,最低位进入CF CF, ;算术右移,最低位进入CF,最高位不变
第2章
测试指令TEST
TEST
对两个操作数执行逻辑与运算, 对两个操作数执行逻辑与运算 , 结果 不回送到目的操作数
TEST reg,imm/reg/mem TEST mem,imm/reg ;reg∧imm/reg/mem ;mem∧imm/reg
只有相“ 的两位都是1, 只有相 “ 与 ” 的两位都是 , 结 果才是1;否则, 果才是 ; 否则, “ 与” 的结果为 0 AND指令设置 指令设置CF = OF = 0,根据结果 指令设置 , 设置SF、 和 状态 而对AF未定义 状态, 设置 、ZF和PF状态,而对 未定义
BL
AL之D0 之
CF
bl,1 rcl bl,1 al,1 rol al,1
CF AL
例2.37:BCD码合并 : 码合并
;AH.AL分别存放着非压缩BCD码的两位 AH.AL分别存放着非压缩BCD码的两位 分别存放着非压缩BCD 将它们合并成为一个压缩BCD码存AL BCD码存 ;将它们合并成为一个压缩BCD码存AL ax,0 保证高4位为0 and ax,0f0fh ;保证高4位为0 cl,4 mov cl,4 也可以用shl rol ah,cl ;也可以用shl ah,cl 也可以用or add al,ah ;也可以用or al,ah
第2章
移位指令的操作数
移位指令的第一个操作数是指定 的被移位的操作数, 的被移位的操作数 , 可以是寄存 器或存储单元 后一个操作数表示移位位数, 后一个操作数表示移位位数 , 该 操作数为 , 表示移动一位; 操作数 为 1,表示移动一位 ; 当移 位位数大于 大于1时 则用CL寄存器值 位位数大于 时,则用 寄存器值 表示,该操作数表达为CL 表示,该操作数表达为
相关文档
最新文档