80868088指令系统指令系统
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1, JO 标号 测试条件:OF=1 OF
0, JNO 标号 测试条件:OF=0 1, JP 标号 测试条件:PF=1 PF 0, JNP 标号 测试条件:PF=0 1, JC 标号 测试条件:CF=1 CF 0, JNC 标号 测试条件:CF=0
44..22 88008866//88008888 指指令令系系统统
44..22 88008866//88008888 指指令令系系统统
④取负指令(NEG)
格式:NEG DST 功能: DST 0-(D操作,它的被减数一定为零,因此
它是一条单操作数指令。
44..22 88008866//88008888 指指令令系系统统
实际它是将目的操作数的值取负。若操 作数的原值为一正数,那么,执行该指令后, 其值变为该数的负数的补码;而若操作数的 原值为一负数(补码表示),那么,执行该 指令后,其值变为该数所对应的正数。该指 令将正常影响各标志位,并且CF表示最高位 产生的借位。指令中的目的操作数可以采用 除立即数以外的各种寻址方式。
②带CF的减法指令(SBB)
格式:SBB DST , SRC 功能: (1)DST (DST)-(SRC)-CF
(2)根据差设置6个状态标志
44..22 88008866//88008888 指指令令系系统统
③减1指令(DEC)
格式:DEC DST 功能: (1)DST (DST)-1,
(2)根据差设置除CF以外的6 个状态标志,对CF无影响
44..22 88008866//88008888 指指令令系系统统
例1: 若(AL)=03H ,则CPU执行
NEG AL 指令后, -3的补码 AF=1
(AL)=0FDH
PF=0
` 0 0 0 0 `0 `0 `0 0 B
ZF=0 SF=1
- 0 0 0 0 0 0 1 1 B CF=1
[1]1 1 1 1 1 1 0 1 B OF=0
44..22 88008866//88008888 指指令令系系统统
应用场合:
●两操作数参加比较,根据比较结果确 定两操作数之间的关系(如等于、大于、小 于等)
●在分支程序设计中,用来产生条件, 其后往往紧跟的是一条条件转移指令。
44..22 88008866//88008888 指指令令系系统统
结果为-3的补码
44..22 88008866//88008888 指指令令系系统统
若(AL)=0FDH ,则CPU执行
NEG AL 指令后, +3的补码
(AL)=03H
` 0 0 0 0 `0 `0 `0 0 B - 11111101B
应用场合: 常常用于求 某数的绝对 值的场合
[1]0 0 0 0 0 0 1 1 B
44..22 88008866//88008888 指指令令系系统统
根据单个条件标志实现转移 1, JZ/JE 标号 测试条件:ZF=1
ZF 0,JNZ/JNE 标号 测试条件:ZF=0 1, JS 标号 测试条件:SF=1
SF 0, JNS 标号 测试条件:SF=0
44..22 88008866//88008888 指指令令系系统统
若Α、Β为两个无符号数,根据比较结果 实现转移 Α=Β JE/JZ 标号 测试条件: ZF=1
Α低于Β(或Α不高于或不等于Β) JB/JC/JNAE 标号 测试条件: CF=1
44..22 88008866//88008888 指指令令系系统统
Α不低于Β(或高于或等于) JNB/JAE/JNC 标号 测试条件:CF=0
Α不大于Β(小于或等于) JNG/JLE 标号 测试条件:(SF OF)∨ZF=1
44..22 88008866//88008888 指指令令系系统统
2.减法指令
8086/8088共有5条减法指令
①不带CF的减法指令(SUB)
格式:SUB DST , SRC 功能:(1)DST (DST)-(SRC)
(2)根据差设置6个状态标志
44..22 88008866//88008888 指指令令系系统统
结果为+3的原码(补码)
44..22 88008866//88008888 指指令令系系统统
⑤比较指令(CMP)
格式:CMP DST,SRC 功能:(1)(DST) (SRC)
(2) 根据差设置6个状态标志位
44..22 88008866//88008888 指指令令系系统统
与减法指令不同的是所产生的 两数之差并不取代目的操作数,因 而指令执行后,仅仅改变了标志寄 存器的内容,两操作数的值保持不 变。
Α小于Β(或Α不大于或不等于Β) JL/JNGE 标号 测试条件:SF OF=1
≮
≮≮
44..22 88008866//88008888 指指令令系系统统
Α不小于Β(大于或等于) JNL/JGE 标号 测试条件:SF OF=0
Α大于Β(不小于或不等于) JG/JNLE 标号 测试条件:(SF OF)∨ZF=0
Α高于Β(或不低于或不等于) JA/JNBE 标号 测试条件:CF∨ZF=0
Α不高于Β(或低于或等于) JNA/JBE 标号 测试条件:CF∨ZF=1
44..22 88008866//88008888 指指令令系系统统
若Α、Β为两个带符号数,根据比较结果 实现转移 Α=Β JE/JZ 标号 测试条件: ZF=1
在此,结合CMP指令的应用,简 要介绍一下8086指令系统中的条件 转移指令。 (见教材P109-111)
44..22 88008866//88008888 指指令令系系统统
例.有两数Α和Β,则CPU执行下列指令组 MOV AL,Α CMP AL,Β ;(AL) Β,根据差 ;设置6个状态标志
后,要实现条件转移,根据不同的条件,有 不同的条件转移指令。
如: Y
P2
CMP DST,SRC
条件满足吗?
ZF
SF
N
条件有 CF
P1
OF
PF
44..22 88008866//88008888 指指令令系系统统
程序中的表现形式为: ●
● ● CMP AL,0 JZ L1 ● ● ● L1: ● ● ● ●
44..22 88008866//88008888 指指令令系系统统
0, JNO 标号 测试条件:OF=0 1, JP 标号 测试条件:PF=1 PF 0, JNP 标号 测试条件:PF=0 1, JC 标号 测试条件:CF=1 CF 0, JNC 标号 测试条件:CF=0
44..22 88008866//88008888 指指令令系系统统
44..22 88008866//88008888 指指令令系系统统
④取负指令(NEG)
格式:NEG DST 功能: DST 0-(D操作,它的被减数一定为零,因此
它是一条单操作数指令。
44..22 88008866//88008888 指指令令系系统统
实际它是将目的操作数的值取负。若操 作数的原值为一正数,那么,执行该指令后, 其值变为该数的负数的补码;而若操作数的 原值为一负数(补码表示),那么,执行该 指令后,其值变为该数所对应的正数。该指 令将正常影响各标志位,并且CF表示最高位 产生的借位。指令中的目的操作数可以采用 除立即数以外的各种寻址方式。
②带CF的减法指令(SBB)
格式:SBB DST , SRC 功能: (1)DST (DST)-(SRC)-CF
(2)根据差设置6个状态标志
44..22 88008866//88008888 指指令令系系统统
③减1指令(DEC)
格式:DEC DST 功能: (1)DST (DST)-1,
(2)根据差设置除CF以外的6 个状态标志,对CF无影响
44..22 88008866//88008888 指指令令系系统统
例1: 若(AL)=03H ,则CPU执行
NEG AL 指令后, -3的补码 AF=1
(AL)=0FDH
PF=0
` 0 0 0 0 `0 `0 `0 0 B
ZF=0 SF=1
- 0 0 0 0 0 0 1 1 B CF=1
[1]1 1 1 1 1 1 0 1 B OF=0
44..22 88008866//88008888 指指令令系系统统
应用场合:
●两操作数参加比较,根据比较结果确 定两操作数之间的关系(如等于、大于、小 于等)
●在分支程序设计中,用来产生条件, 其后往往紧跟的是一条条件转移指令。
44..22 88008866//88008888 指指令令系系统统
结果为-3的补码
44..22 88008866//88008888 指指令令系系统统
若(AL)=0FDH ,则CPU执行
NEG AL 指令后, +3的补码
(AL)=03H
` 0 0 0 0 `0 `0 `0 0 B - 11111101B
应用场合: 常常用于求 某数的绝对 值的场合
[1]0 0 0 0 0 0 1 1 B
44..22 88008866//88008888 指指令令系系统统
根据单个条件标志实现转移 1, JZ/JE 标号 测试条件:ZF=1
ZF 0,JNZ/JNE 标号 测试条件:ZF=0 1, JS 标号 测试条件:SF=1
SF 0, JNS 标号 测试条件:SF=0
44..22 88008866//88008888 指指令令系系统统
若Α、Β为两个无符号数,根据比较结果 实现转移 Α=Β JE/JZ 标号 测试条件: ZF=1
Α低于Β(或Α不高于或不等于Β) JB/JC/JNAE 标号 测试条件: CF=1
44..22 88008866//88008888 指指令令系系统统
Α不低于Β(或高于或等于) JNB/JAE/JNC 标号 测试条件:CF=0
Α不大于Β(小于或等于) JNG/JLE 标号 测试条件:(SF OF)∨ZF=1
44..22 88008866//88008888 指指令令系系统统
2.减法指令
8086/8088共有5条减法指令
①不带CF的减法指令(SUB)
格式:SUB DST , SRC 功能:(1)DST (DST)-(SRC)
(2)根据差设置6个状态标志
44..22 88008866//88008888 指指令令系系统统
结果为+3的原码(补码)
44..22 88008866//88008888 指指令令系系统统
⑤比较指令(CMP)
格式:CMP DST,SRC 功能:(1)(DST) (SRC)
(2) 根据差设置6个状态标志位
44..22 88008866//88008888 指指令令系系统统
与减法指令不同的是所产生的 两数之差并不取代目的操作数,因 而指令执行后,仅仅改变了标志寄 存器的内容,两操作数的值保持不 变。
Α小于Β(或Α不大于或不等于Β) JL/JNGE 标号 测试条件:SF OF=1
≮
≮≮
44..22 88008866//88008888 指指令令系系统统
Α不小于Β(大于或等于) JNL/JGE 标号 测试条件:SF OF=0
Α大于Β(不小于或不等于) JG/JNLE 标号 测试条件:(SF OF)∨ZF=0
Α高于Β(或不低于或不等于) JA/JNBE 标号 测试条件:CF∨ZF=0
Α不高于Β(或低于或等于) JNA/JBE 标号 测试条件:CF∨ZF=1
44..22 88008866//88008888 指指令令系系统统
若Α、Β为两个带符号数,根据比较结果 实现转移 Α=Β JE/JZ 标号 测试条件: ZF=1
在此,结合CMP指令的应用,简 要介绍一下8086指令系统中的条件 转移指令。 (见教材P109-111)
44..22 88008866//88008888 指指令令系系统统
例.有两数Α和Β,则CPU执行下列指令组 MOV AL,Α CMP AL,Β ;(AL) Β,根据差 ;设置6个状态标志
后,要实现条件转移,根据不同的条件,有 不同的条件转移指令。
如: Y
P2
CMP DST,SRC
条件满足吗?
ZF
SF
N
条件有 CF
P1
OF
PF
44..22 88008866//88008888 指指令令系系统统
程序中的表现形式为: ●
● ● CMP AL,0 JZ L1 ● ● ● L1: ● ● ● ●
44..22 88008866//88008888 指指令令系系统统