DDD

8088 汇编跳转
日期:2003年6月12日  出处:嬴政天下整理收藏  作者:看雪  人气: 8735

8088 汇编跳转

一、状态寄存器

PSW(Program Flag)程序状态字寄存器,是一个16位寄存器,由条件码标志(flag)和控制标志构成,如下所示:

15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
 
 
 
 
OF
DF
IF
TF
SF
ZF
 
AF
 
PF
 
CF

条件码:
①OF(Overflow
Flag)溢出标志。溢出时为1,否则置0。
②SF(Sign Flag)符号标志。结果为负时置1,否则置0.
③ZF(Zero
Flag)零标志,运算结果为0时ZF位置1,否则置0.
④CF(Carry Flag)进位标志,进位时置1,否则置0.
⑤AF(Auxiliary
carry Flag)辅助进位标志,记录运算时第3位(半个字节)产生的进位置。有进位时1,否则置0.
⑥PF(Parity
Flag)奇偶标志。结果操作数中1的个数为偶数时置1,否则置0.

控制标志位:
⑦DF(Direction
Flag)方向标志,在串处理指令中控制信息的方向。
⑧IF(Interrupt Flag)中断标志。
⑨TF(Trap
Flag)陷井标志。

二、 直接标志转移(8位寻址)

指令格式
机器码
测试条件
如...则转移
 
 
指令格式
机器码
测试条件
如...则转移
JC
72
C=1
有进位
JNS
79
S=0
正号
JNC
73
C=0
无进位
JO
70
O=1
有溢出
JZ/JE
74
Z=1
零/等于
JNO
71
O=0
无溢出
JNZ/JNE
75
Z=0
不为零/不等于
JP/JPE
7A
P=1
奇偶位为偶
JS
78
S=1
负号
JNP/IPO
7B
P=0
奇偶位为奇

三、间接标志转移(8位寻址)

指令格式
机器码
测试格式
如...则转移
JA/JNBE(比较无符号数)
77
C或Z=0
>  高于/不低于或等于
JAE/JNB(比较无符号数)
73
C=0
>=  高于或等于/不低于
JB/JNAE(比较无符号数)
72
C=1
<  低于/不高于或等于
JBE/JNA(比较无符号数)
76
C或Z=1
<=  低于或等于/不高于
JG/JNLE(比较带符号数)
7F
(S异或O)或Z=0
>  大于/不小于或等于
JGE/JNL(比较带符号数)
7D
S异或O=0
>=  大于或等于/不小于
JL/JNGE(比较带符号数)
7C
S异或O=1
<  小于/不大于或等于
JLE/JNG(比较带符号数)
7E
(S异或O)或Z=1
<=  小于或等于/不大于

四、无条件转移指令(fisheep译 fisheep@sohu.com)

操作码 伪码指令 含义
EB  cb
JMP rel8 相对短跳转(8位),使rel8处的代码位下一条指令
E9  cw
JMP rel16 相对跳转(16位),使rel16处的代码位下一条指令
FF  /4
JMP r/m16 绝对跳转(16位),下一指令地址在r/m16中给出
FF  /4
JMP r/m32 绝对跳转(32位),下一指令地址在r/m32中给出
EA  cb
JMP ptr16:16 远距离绝对跳转,
下一指令地址在操作数中
EA  cb
JMP ptr16:32 远距离绝对跳转,
下一指令地址在操作数中
FF  /5
JMP m16:16 远距离绝对跳转,
下一指令地址在内存m16:16中
FF  /5
JMP m16:32 远距离绝对跳转,
下一指令地址在内存m16:32中

五、16位/32位寻址方式(fisheep译
fisheep@sohu.com)

操作码
伪码指令
跳转含义
跳转类型
跳转的条件(标志位)
0F 87  cw/cd
JA rel16/32
大于
near
(CF=0 and ZF=0)
0F 83  cw/cd
JAE rel16/32
大于等于
near
(CF=0)
0F 82  cw/cd
JB rel16/32
小于
near
(CF=1)
0F 86  cw/cd
JBE rel16/32
小于等于
near
(CF=1 or ZF=1)
0F 82  cw/cd
JC rel16/32
进位
near
(CF=1)
0F 84  cw/cd
JE rel16/32
等于
near
(ZF=1)
0F 84  cw/cd
JZ rel16/32
为0
near
(ZF=1)
0F 8F  cw/cd
JG rel16/32
大于
near
(ZF=0 and SF=OF)
0F 8D  cw/cd
JGE rel16/32
大于等于
near
(SF=OF)
0F 8C  cw/cd
JL rel16/32
小于
near
(SF<>OF)
0F 8E  cw/cd
JLE rel16/32
小于等于
near
(ZF=1 or SF<>OF)
0F 86  cw/cd
JNA rel16/32
不大于
near
(CF=1 or ZF=1)
0F 82  cw/cd
JNAE rel16/32
不大于等于
near
(CF=1)
0F 83  cw/cd
JNB rel16/32
不小于
near
(CF=0)
0F 87  cw/cd
JNBE rel16/32
不小于等于
near
(CF=0 and ZF=0)
0F 83  cw/cd
JNC rel16/32
不进位
near
(CF=0)
0F 85  cw/cd
JNE rel16/32
不等于
near
(ZF=0)
0F 8E  cw/cd
JNG rel16/32
不大于
near
(ZF=1 or SF<>OF)
0F 8C  cw/cd
JNGE rel16/32
不大于等于
near
(SF<>OF)
0F 8D  cw/cd
JNL rel16/32
不小于
near
(SF=OF)
0F 8F  cw/cd
JNLE rel16/32
不小于等于
near
(ZF=0 and SF=OF)
0F 81  cw/cd
JNO rel16/32
未溢出
near
(OF=0)
0F 8B  cw/cd
JNP rel16/32
不是偶数
near
(PF=0)
0F 89  cw/cd
JNS rel16/32
非负数
near
(SF=0)
0F 85  cw/cd
JNZ rel16/32
非零(不等于)
near
(ZF=0)
0F 80  cw/cd
JO rel16/32
溢出
near
(OF=1)
0F 8A  cw/cd
JP rel16/32
偶数
near
(PF=1)
0F 8A  cw/cd
JPE rel16/32
偶数
near
(PF=1)
0F 8B  cw/cd
JPO rel16/32
奇数
near
(PF=0)
0F 88  cw/cd
JS rel16/32
负数
near
(SF=1)
0F 84  cw/cd
JZ rel16/32
为零(等于)
near
(ZF=1)

注:一些指令操作数的含义说明:
  rel8      表示 8 位相对地址
 
rel16    表示 16 位相对地址
  rel16/32  表示 16或32 位相对地址
  r/m16    表示16位寄存器

  r/m32    表示32位寄存器

无条件转移指令

指令格式 JMP 地址表达式
指令功能 无条件地转移到由地址表达式所确定的目标单元。本指令对标志位无影响。
无条件转移指令根据其转移范围的大小可以分为以下四种方式:
四种方式 1.段内直接转移 2.段内间接转移 3.段间直接转移 4.段间间接转移
说    明     这是一种相对寻址方式。它转移的目标地址是当前IP内容加上一个八位相对位移量(DISP), DISP是汇编程序在汇编源程序时,根据目标地址和当前IP之间的距离自动生成的。     它转移的目标地址是可通过寄存器或存贮单元来寻址。     在一条无条件转移指令中的地址表达式是一个段间(FAR)标号或段间标号加减一常量(必须在该标号所在段内)时,则该指令被汇编成一个段间直接转移指令代码。     此指令的目标地址由存贮器寻址方式指定的内存中的连续两个字来决定,低地址的字取代IP,高地址的字取代CS。
指令功能 IP=IP+Disp IP=Reg16 或 IP=Mem16    

条件转移指令

指令格式 <指令助记符>  <短标号>
指令说明     当满足条件而发生转移的指令,称之为条件转移指令。它们以某些标志位或这些标志位的逻辑运算作为依据,若满足指令所规定条件,则程序转移,否则顺序执行。
1.根据单个标志位的条件转移指令: 2.用于无符号数的条件转移指令: 3.用于带符号数的条件转移指令:
(1)有进位转移(JC)或无进位转移(JNC)
(2)等于/为零转移(JE/JZ)或不等于/非零转移(JNZ)
(3)负数转移(JS)或正数转移(JNS)
(4)溢出转移(JO)或不溢出转移(JNO)
(5)偶校验转移(JP/JPE)或奇校验转移(JNP/JPO)
(6)寄存器CX为零转移(JCXZ)
(1)高于转移(JA)/不低于且不等于转移(JNBE)
(2)高于或等于转移(JAE)/不低于转移(JNB)
(3)低于转移(JB)/不高于且不等于转移(JNAE)
(4)低于或等于转移(JBE)/不高于转移(JNA)
(1)大于转移(JG)/不小于且不等于转移(JNLE)
(2)大于或等于转移(JGE)/不小于转移(JNL)
(3)小于转移(JL)/不大于且不等于转移(JNGE)
(4)低于或等于转移(JLE)/不高于转移(JNG)

注意:这类指令的转移范围只能在离当前IP的-128-+127个字节之内。它们对标志位均无影响。

重复控制指令

这类指令主要用来控制软件循环的重复过程,故又称作循环控制指令。

指令名称 指令功能
(1)LOOP指令 将CX内容减一,若CX不等于0,则循环至目标地址处(即IP+DISP);否则顺序执行后续指令。
(2)LOOPZ/LOOPE指令 将CX内容减一,若CX不等于0,且标志位ZF=1时,才循环至目标地址处;否则顺序执行后续指令。
(3)LOOPNZ/LOOPNE指令 将CX内容减一,若CX不等于0,且标志位ZF=0时,才循环至目标地址处;否则顺序执行后续指令。
(4)JCXZ指令 寄存器CX为零转移(JCXZ),这条指令前面已经介绍过。

注意:在执行此类重复控制指令前必须把重复次数送入寄存器CX中。

标志操作指令


清进位指令CLC
清除进位标志 CF←0
置进位指令STC
置进位标志 CF←1
清除方向位指令CLD
清除方向标志 DF←0
置方向位指令STD
置方向标志 DF←1
清中断允许指令CLI
清除中断标志 IF←0
置中断允许位指令STI
置中断标志 IF←1
 

处理器控制指令

   
处理器暂停指令 HLT     使CPU进入暂停状态,不进行任何操作,它可被"外部中断"和复位信号来清除。该指令不影响任何标志,常在程序中为了等待中断而使用。
空操作指令 NOP     该指令不进行任何操作,它仅充当一种为不做任何操作的“转向”点提供标号的手段。
处理器等待指令 WAIT     在处理器的引脚TEST=1时,使处理器进入等待状态;直到TEST=0,等待状态被清除,并恢复执行原停止的指令。
处理器交权指令 ESC     指出使用的协处理器编号及执行的操作,并为协处理器写指定一个操作数。
总线封锁指令 LOCK     使CPU的LOCK信号线上产生一个有效电位,以禁止总线上的其他主设备进行总线访问。

8088汇编跳转和PSW状态字寄存器的更多相关文章

  1. lmsw - 加载机器状态字

    将源操作数加载到机器状态字,即寄存器 CR0 的位 0 到 15.源操作数可以是 16 位通用寄存器或内存位置.只有源操作数的低 4 位(也就是 PE.MP.EM 及 TS 标志)会加载到 CR0.C ...

  2. IC卡T0协议中的过程字与状态字

    T0协议中,IC卡收到命里头以后向TTL回传过程字或状态字SW1.SW2: TTL和IC卡在二者之间的命令和数据交换的任何时刻都必须知道数据流的方向和IO线路由谁驱动. 摘录参考:<中国金融集成 ...

  3. 对状态字的理解 尤其是 首次检测位“/FC”的想法

    状态字 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0               BR CC1 CC0 OV OS OR STA RLO /FC 问题1 关于首次检测位& ...

  4. arm汇编学习(六)---跳转到thumb状态

    通常函数返回使用 pop {r7,pc}或bx lr等方式(bx,b类似jmp为跳转指令,但bx可以指定跳转区域究竟为thumb还是arm指令.thumb指令指令的时候,直接填写该地址却总是产生SIG ...

  5. 关于程序状态字寄存器PSW(Program Status Word)与多核多线程

    内核态(Kernel Mode)与用户态(User Mode) CPU通常有两种工作模式即:内核态和用户态,而在PSW中有一个二进制位控制这两种模式. 内核态:当CPU运行在内核态时,程序可以访问所有 ...

  6. JavaScript学习总结 Ajax和Http状态字

    Ajax及其工作原理 AJAX 是一种与服务器交换数据无需刷新网页的技术,最早由Google公司在谷歌地图里使用,并迅速风靡. AJAX是不能跨域的,如需跨域,可以使用document.domain= ...

  7. arm学习之汇编跳转指令总结

    目前所知道的跳转指令有 b,bl,bep,bne.他们共同点是都是以b开头,首先从字面上分析:b:是Branch,表示分支.bl:是Branch Link表示带连接的分支.bep:Branch ,Eq ...

  8. JavaScript学习总结(七)Ajax和Http状态字

    转自:http://segmentfault.com/a/1190000000691919 Ajax及其工作原理 AJAX 是一种与服务器交换数据无需刷新网页的技术,最早由Google公司在谷歌地图里 ...

  9. SIMATIC 1500 PLC 同步轴,状态字StatusWord信号描述

    轴名. StatusWord.X21 (Synchronizing) 正在建立同步 轴名. StatusWord.X22 (Synchronous) 已经建立同步

随机推荐

  1. 算法导论 第十章 基本数据类型 & 第十一章 散列表(python)

    更多的理论细节可以用<数据结构>严蔚敏 看几遍,数据结构很重要是实现算法的很大一部分 下面主要谈谈python怎么实现 10.1 栈和队列 栈:后进先出LIFO 队列:先进先出FIFO p ...

  2. [MVC][Shopping]Copy Will's Code

    数据模型规划(Models) //DisplayNameAttribute 指定属性的显示名称 [DisplayName("商品类别")] //DisplayColumnAttri ...

  3. 四、SQL基础知识--约束和视图

    --创建约束的方式 --一.在字段创建时将约束添加到字段之后 CREATE TABLE ZYJ_YUESHU( ZYJ_ID VARCHAR(20) NOT NULL PRIMARY KEY, --创 ...

  4. MySQL数据库不识别server=.而是识别localhost

    MySQL数据库不识别server=.而是识别localhost

  5. bzoj 2337 高斯消元+概率DP

    题目大意: 每条路径上有一个距离值,从1走到N可以得到一个所有经过路径的异或和,求这个异或和的数学期望 这道题直接去求数学期望的DP会导致很难列出多元方程组 我们可以考虑每一个二进制位从1走到N的平均 ...

  6. 2016阿里校招python研发面试

    一面: 面:说说你们学校的主修课程. 学校开的全是尼玛java课,这个我是想了有一会的. 面:看你简历写了会jquery,来问你个简单的jquery问题 :jQuery支不支持css引入. 呵呵 面: ...

  7. 洛谷—— P2802 回家

    P2802 回家 题目描述 小H在一个划分成了n*m个方格的长方形封锁线上. 每次他能向上下左右四个方向移动一格(当然小H不可以静止不动), 但不能离开封锁线,否则就被打死了. 刚开始时他有满血6点, ...

  8. hdu6109(并查集+set/倍增)

    题目 http://acm.hdu.edu.cn/showproblem.php?pid=6109 分析 对于相同的条件,明显直接并查集 对于不同的条件,可以用set来保存,并查集合并的时候也要对se ...

  9. 转:TLV 格式及编解码示例

    TLV是一种可变格式,意思就是: Type类型, Lenght长度,Value值: Type和Length的长度固定,一般那是2.4个字节(这里统一采用4个字节): Value的长度有Length指定 ...

  10. 百度统计的JS脚本原理解析

    一句话:在你的网站上加载百度统计的脚本,这个脚本会收集你的本地信息,然后发送给百度统计网站 https://blog.csdn.net/iqzq123/article/details/8877645 ...